Hallo, ich komme einfach nicht weiter, bin leider PHP Neuling.
Ich muss im Rahmen meines Studiums als Übung eine kleine Datenbank aufbauen.
Dabei speichere ich Vorname Größe Alter usw. in einer Datei ab.
Die einzelnen Zeilen in der Datei werdenmit ";" getrennt und dann wieder mit explode zerlegt und in einer Tabelle ausgegeben
Jetzt soll das ganze aber objektorientiert sein. Ich hab also eine Klasse für meine Person und eine Funktion das mir aus dem ganzen eine Zeile erstellt.
Dem Konstruktor geb ich folgendes mit, hängt euch nicht mit dem Zähler auf der ist jetzt unwichtig und war dazu da um auszulesen wieviele Freunde wir schon gespeichert haben:
als erstes geb ihr ihm das $id mit, also meine ID, die beim ersten Freund 1 dann 2 dann 3 sein soll.
public function __construct($id,$n,$a,$g=NULL,$h=NULL,$c=NULL,$u){
//Konstruktor Perosn aufrufen
// Person parent von Freund
parent::__construct($n);
self::$zaehler++; // variable oben, self bezeichnet klasse
//$this -> name = $n;
$this -> id1 = $id;
$this -> alter = $a;
$this -> groesse = $g;
$this -> haarfarbe = $h;
$this -> cool = $c;
$this -> url = $u;
}
Dann hier die Funktion die mir die Zeile erstellt.
public function alsCSVZeile(){
return
$this -> id1 . ";" .
$this -> name . ";" .
$this -> alter . ";" .
$this -> groesse . ";" .
$this -> haarfarbe . ";" .
$this -> cool . ";" .
$this -> url; // beendet return
}
Und hier letzt endlich in der anderen PHP Datei der Aufruf dass eine Person erstellt wird und der Aufruf zur Umwandlung in eine Zeile.
$freunde[] = new Freund($idhelper,$_POST['vorname'],$_POST['alter'],$_POST['groesse'],$_POST['haarfarbe'],$_POST['istcool'],$str2);
for($i = 0; $i < count($freunde); $i++){
$zeile .= ("\n" .$freunde[$i] -> alsCSVZeile());
Ich gebe hier also eine Variable $idhelper mit, mit welcher ich die ID festlegen will.
Habs auch schon oft hinbekommen aber wenn ich dann sagen wir die Nummer 5 lösche, erstellt er mir die letzte ID doppelt weil das bei mir bisher immer von der Zeilenanzahl abhängig war.
Ich komme einfach nicht darauf wie ich das hochzählen lassen kann und dann mit der variable $idhelper übergebe...
Wenn ich mit $idhelper++ arbeiten möchte muss ich mir zuerst mal einen Anfangswert festlegen, und den nimmt er dann immer wieder als Ausgangspunkt wenn er die Datei durchläuft, wie kann ich das lösen?
Dachte schon daran nur einmal den $idhelper auf 0 zu setzen wenn die Seite das erste mal aufgerufen wird, aber das kann ich nicht. Und zweitens wenn man dann wieder neu aufruft steht der Zähler bei jedem neuen Starten der Seite ja wieder auf 0 und zählt hoch...
Angehängt noch die Dateien, falls jemand mal reinschaun will.
Wäre echt super wenn sich das mal jemand ankucken könnte... probier schon seit 5 Stunden ohne Pause herum und hab schon etliche Gedanken ausprobiert...
PS: Dass dann ID Sprünge nach dem löschen drin sind ist egal, also es muss nicht alles neu durchnummeriert werden, was ich auch schon ausprobiert hab...
mfg
Edit:
Hab jetzt was gefunden mit der ich ne random ID erstelle mit 23 Zeichen. Das denke ich ist nich so gut oder? Würde halt einwandfrei klappen aber es sollte von 1 an weg zählen.
Ich muss im Rahmen meines Studiums als Übung eine kleine Datenbank aufbauen.
Dabei speichere ich Vorname Größe Alter usw. in einer Datei ab.
Die einzelnen Zeilen in der Datei werdenmit ";" getrennt und dann wieder mit explode zerlegt und in einer Tabelle ausgegeben
Jetzt soll das ganze aber objektorientiert sein. Ich hab also eine Klasse für meine Person und eine Funktion das mir aus dem ganzen eine Zeile erstellt.
Dem Konstruktor geb ich folgendes mit, hängt euch nicht mit dem Zähler auf der ist jetzt unwichtig und war dazu da um auszulesen wieviele Freunde wir schon gespeichert haben:
als erstes geb ihr ihm das $id mit, also meine ID, die beim ersten Freund 1 dann 2 dann 3 sein soll.
public function __construct($id,$n,$a,$g=NULL,$h=NULL,$c=NULL,$u){
//Konstruktor Perosn aufrufen
// Person parent von Freund
parent::__construct($n);
self::$zaehler++; // variable oben, self bezeichnet klasse
//$this -> name = $n;
$this -> id1 = $id;
$this -> alter = $a;
$this -> groesse = $g;
$this -> haarfarbe = $h;
$this -> cool = $c;
$this -> url = $u;
}
Dann hier die Funktion die mir die Zeile erstellt.
public function alsCSVZeile(){
return
$this -> id1 . ";" .
$this -> name . ";" .
$this -> alter . ";" .
$this -> groesse . ";" .
$this -> haarfarbe . ";" .
$this -> cool . ";" .
$this -> url; // beendet return
}
Und hier letzt endlich in der anderen PHP Datei der Aufruf dass eine Person erstellt wird und der Aufruf zur Umwandlung in eine Zeile.
$freunde[] = new Freund($idhelper,$_POST['vorname'],$_POST['alter'],$_POST['groesse'],$_POST['haarfarbe'],$_POST['istcool'],$str2);
for($i = 0; $i < count($freunde); $i++){
$zeile .= ("\n" .$freunde[$i] -> alsCSVZeile());
Ich gebe hier also eine Variable $idhelper mit, mit welcher ich die ID festlegen will.
Habs auch schon oft hinbekommen aber wenn ich dann sagen wir die Nummer 5 lösche, erstellt er mir die letzte ID doppelt weil das bei mir bisher immer von der Zeilenanzahl abhängig war.
Ich komme einfach nicht darauf wie ich das hochzählen lassen kann und dann mit der variable $idhelper übergebe...
Wenn ich mit $idhelper++ arbeiten möchte muss ich mir zuerst mal einen Anfangswert festlegen, und den nimmt er dann immer wieder als Ausgangspunkt wenn er die Datei durchläuft, wie kann ich das lösen?
Dachte schon daran nur einmal den $idhelper auf 0 zu setzen wenn die Seite das erste mal aufgerufen wird, aber das kann ich nicht. Und zweitens wenn man dann wieder neu aufruft steht der Zähler bei jedem neuen Starten der Seite ja wieder auf 0 und zählt hoch...
Angehängt noch die Dateien, falls jemand mal reinschaun will.
Wäre echt super wenn sich das mal jemand ankucken könnte... probier schon seit 5 Stunden ohne Pause herum und hab schon etliche Gedanken ausprobiert...
PS: Dass dann ID Sprünge nach dem löschen drin sind ist egal, also es muss nicht alles neu durchnummeriert werden, was ich auch schon ausprobiert hab...
mfg
Ergänzung ()
Edit:
Hab jetzt was gefunden mit der ich ne random ID erstelle mit 23 Zeichen. Das denke ich ist nich so gut oder? Würde halt einwandfrei klappen aber es sollte von 1 an weg zählen.