php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.11.2006, 19:55  
Erfahrener Benutzer
 
Registriert seit: 21.05.2005
Beiträge: 123
King2k
Standard Code in Klasse umschreiben

Hi,

habe hier folgenden Code, den ich gerne als Klasse geschrieben hätte. Weiß einigermaßen, wie man Klassen schreibt, aber bin mir nicht ganz sicher und was ich auch probiere, irgendwas will nie...

PHP-Code:
<?php

// Variablen zum Auslesen:
// $counter liefert ein Array, welches Counter [0] und Hits [1] beinhaltet
// $useronline liefert ein Array mit den Online-Usernamen in alphabetischer Reihenfolge
// $usercount liefert die Anzahl der User die Online sind

//Hier die Variablen zum selberdefinieren

 
$dbserver '';        // MySQL-Datenbank-Server
 
$dbname '';            // Login-Name an MySQL-Server
 
$dbpass '';            // Datenbankpasswort
 
$database '';        // Datenbankname

 
$dbcountertab 'counter';    // Tabelle in der die Userzahlen gespeichert werden
 
$dbcounterfield 'count';    // Feld in dem die Userzahl steht
 
$dbhitfield 'hits';        // Feld in dem die Hits gespeichert werden

 
$dbiptab 'counterips';    // Tabelle in der die Counter-IPs gespeichert werden
 
$dbipfield 'ip';        // Feld in der die IP steht
 
$dbiptimefield 'time';    // Feld in der die Zeit fuer die IP steht

 
$dbusertab 'users';        // Tabelle in der die User stehen
 
$dbuserfield 'username';    // Feld in dem die Usernamen stehen
 
$dblastactfield 'lastact';    // Feld in dem die letzte Useraktivitaet steht

 
$maximumtime '3600';        // Maximale Zeit zwischen zwei Updates im ounterwert pro Person in Sekunden
 
$maxlastact '600';        // Maximale Zeit seit der letzten Useraktivität bis dieser nicht mehr als Online gilt in Sekunden



// Benoetigtee Daten holen

 
$clientip $_SERVER['REMOTE_ADDR'];
 
$timestamp time();
 
$maxtime $timestamp $maximumtime;
 
$usertime $timestamp $maxlastact;


// Zu Datenbank verbinden
 
$mysql mysql_connect($dbserver$dbname$dbpass);
 
mysql_select_db($database$mysql);


// Daten ueberpruefen und Counter entsprechend updaten

 
mysql_query("UPDATE $dbcountertab SET $dbhitfield = $dbhitfield + 1"$mysql);
 
$check mysql_query("SELECT * FROM `counterips` WHERE `ip` = '$clientip'"$mysql);
   list(
$saveip,$savetime) = mysql_fetch_row($check);
   If(
$saveip == $clientip && $savetime) { If($savetime $maxtime) {
       
mysql_query("UPDATE $dbcountertab SET $dbcounterfield = $dbcounterfield + 1"$mysql);
       
mysql_query("UPDATE $dbiptab SET $dbiptimefield = '$timestamp' WHERE $dbipfield = '$clientip'"$mysql);
   } } Else {
   
mysql_query("UPDATE $dbcountertab SET $dbcounterfield = $dbcounterfield + 1"$mysql);
   
$newip "INSERT INTO $dbiptab ($dbipfield, $dbiptimefield) VALUES ('".$clientip."', '".$timestamp."')";
   
mysql_query($newip$mysql); }


// $counter liefert ein Array, welches Counter [0] und Hits [1] beinhaltet

 
$counterchecksql mysql_query("SELECT $dbcounterfield, $dbhitfield FROM $dbcountertab"$mysql);
 
$count mysql_fetch_row($counterchecksql);


// $useronline liefert ein Array mit den Online-Usernamen in alphabetischer Reihenfolge
// $usercount liefert die Anzahl der User, die Online sind

 
$useronsql mysql_query("SELECT $dbuserfield FROM $dbusertab WHERE $dblastactfield > $usertime"$mysql);
 while(
$row mysql_fetch_row($useronsql)) { $users[] = $row[0]; }
 
$usercount count($users);
 

?>

Ich weiß, Counterklassen find ich sicher wie Sand am Meer, aber es geht mir nicht nur um dieses eine Beispiel...

Thx im voraus!

MfG Alex
__________________
Der König hat gesprochen!
King2k ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 08.11.2006, 20:38  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi Alex.

Sortier doch einfach mal, was du da hast. Einmal sind da irgendwelche Werte, die sich unabhänig vom Programm einstellbar sein sollen (-> Config-Objekt, das Daten aus einer php-, ini- oder xml-Datei zieht). Dann Datenbankzugriffe (-> Objekt Mysql, das eben die Datenbank anspricht). Dann eben den Counter an sich. Um das ganze geschmeidig zu machen, bietet es sich an, wenn der Counter nun auf eine Schnittstelle zugreifen könnte, über die er einfach nur "Zähle Counter eins hoch" oder so ans Datenbankobjekt übergeben könnte. Damit musst du am Counter nichts verändern, wenn du was an der Datenbank veränderst oder die Queries optimierst. DAOs heißen die Dinger dann: DataAccessObjects.

Wie hängt das dann zusammen? Counter braucht nur das DAO (ev. auch die Config). Dieses braucht aber Mysql und dieses wiederum Config. Also baust du Config, Baust damit Mysql und damit DAO und übergibst dieses Config.

Läasst sich natürlich auch ohne DAO, ohne Config etc. umsetzen, oder aber mit noch viel mehr Kapselung, aber ich denke, das wäre schonmal eine brauchbare Lösung.

Basti
Basti ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Design und Code Trennen TeazY PHP Tipps 2008 29 21.05.2008 12:08
Nur bestimmten Html Code zulassen? litterauspirna PHP Tipps 2008 5 29.04.2008 12:30
bb code in htm code wandeln janni PHP Tipps 2007 2 04.11.2005 22:36
Instanz einer Klasse in einer anderen Klasse verwenden Buhmann PHP-Fortgeschrittene 7 28.10.2005 23:12
[Erledigt] JS Code in PHP Code?? HTML, Usability und Barrierefreiheit 12 08.08.2005 15:45
Probleme mit Urls und Dom KLasse. daniel987 PHP Tipps 2005-2 3 22.07.2005 15:17
[Erledigt] Lesbarkeit von Code Off-Topic Diskussionen 6 14.07.2005 14:48
[Erledigt] Führerschein für Klasse A+B.. Preis OK??? Off-Topic Diskussionen 20 13.07.2005 18:44
code aus db mit eval replacen chief-thomson PHP Tipps 2005-2 4 08.07.2005 15:33
Rückgabewert auf einer Klasse anders als in der Klasse micbur PHP Tipps 2005-2 6 10.06.2005 15:06
Unverständlichkeit bei dem Instanzieren einer Klasse... PHP Tipps 2005-2 2 08.06.2005 12:44
Bestätigungmail code? PHP Tipps 2005 7 16.05.2005 13:18
[Erledigt] bb code innerhalb von bb code geht nicht PHP Tipps 2007 2 12.01.2005 17:29
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
[Erledigt] Instanz bilden innerhalb einer Klasse PHP Tipps 2004 7 11.12.2004 12:58


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:29 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.