PDA

Vollstndige Version anzeigen : Datensatz erstellen (ASCII)


lasso
18-06-2004, 15:31
Hallo

Ich arbeite mit einer kleinen ASCII-Datenbank fr simplen Webinhalt. Ich habe jetzt ein Skript zum einfgen eines Datensatzes (Zeile):

{
$db->DatensatzEinfuegen(array("key"=>$_POST["key"],"ber"=>$_POST["ber"],"text"=>$_POST["text"],"bild"=>$_POST["bild"]));
$db->Speichern();
echo "<p>Aktion durchgefhrt! <a href="newsadmin.php">Zurck</a></p>";
break;
}

Ausserdem in einer inculdeten Datei:

{
// Datenstze einfgen
for($TK=0;$TK<(sizeof($this->schluessel)-1);$TK++)
{
$this->datensatz[$this->datensaetze][$this->schluessel[$TK]] = $datensatz[$this->schluessel[$TK]];
}

// Anzahl der Datenstze erhhen
$this->datensaetze++;
}

Ich mchte jetzt aber, dass der neue Datensatz nicht am Ende als letzte Zeile in die Datei geschrieben wird sondern als erste Zeile direkt unter der Zeile mit den Schlsseln.

Wie krieg ich das hin?

Danke schon mal und Grsse
Lasso

Gweilo
19-06-2004, 20:46
Original geschrieben von lasso
Ich mchte jetzt aber, dass der neue Datensatz nicht am Ende als letzte Zeile in die Datei geschrieben wird sondern als erste Zeile direkt unter der Zeile mit den Schlsseln.

Wie krieg ich das hin?

Hi,
Es gibt keinen prepend befehl (wre auch unlogisch, dann msste bei jedem Zeichen, dass du hinzufgst der rest um ein byte nach rechts geschoben werden) fr dateien. Am besten liest du die datei aus, und schreibst sie danach neu. Die Frage ist jedoch, ob sich das lohnt, oder ob du doch hinten an der Datei den Inhalt anfgen willst.

Kann sein, dass ich deine frage falsch verstanden habe, ich habe eben bloss den gequoteten Satz gelesen.

Greets

lasso
21-06-2004, 15:08
Es ist einfach so, dass dann beim auslesen und anzeigen des dateinhaltes auch von oben nach unten gegangen wird (for-Schleife). im stil eines newssystems sollte der neuste eintrag resp. derjenige mit der hchsten prioritt (neue idee) immer zuoberst kommen.

msste wohl die dateiinhalte sortieren? aber nicht innerhalb der zeile (sortierfunktion array) sondern nach zeilen mit hilfe des schlssels "reihenfolge". wie geht das? hier ein beispiel fr meine datei (xxxx.db):

berschrift,text,bild1,bild2,reihenfolge
blabla1,text1,a.jpg,b.jpg,3
blabla2,text2,c.jpg,d.jpg,1
blabla3,text3,e.jpg,f.jpg,5

RDJ
21-06-2004, 15:31
du kannst aber die schleife auch von unten nach oben durchgehen :-). Aber wenn du ein "Feld" reihenfolge hast... kannst du ja die Datei erst in ein Array einlesen und dann sortieren...


Gru

RDJ

Gweilo
21-06-2004, 18:11
Original geschrieben von RDJ
du kannst aber die schleife auch von unten nach oben durchgehen

wie soll das gehen? gibt es einen befehl?

und ausserdem: die datei wird (vermutlich) fters gelesen als geschrieben, also strt das einmalige (lngere) einfgen nicht, wenn dafr das auslesen shcneller geht.

lasso
22-06-2004, 08:44
die datei wird ja bloss im admin-bereich geschrieben, strt also nicht, wenn es minim lnger dauert.

aber mit dem sortieren komme ich nicht klar. beim auslesen wird doch jede zeile der datei zu einem array resp. datensatz, sortieren kann ich aber nur innerhalb eines arrays oder kann ich ganze zeilen sortieren? wenn ja, wie?

Gweilo
22-06-2004, 22:13
du wolltest ja immer die neuen zeilen oben hinsetzen oder? dann brauchst du nicht zu sortieren. einfach alles auslesen, in einem string zwischenspeichern und dann die datei neu schreiben mit "neuezeile".$stringvariable

lasso
22-06-2004, 22:48
danke fr alles, ich habe jetzt eine lsung gefunden!

gruss
lasso