php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.10.2010, 09:36  
Benutzer
 
Registriert seit: 27.10.2010
Beiträge: 69
PHP-Kenntnisse:
Anfänger
BonsaiGirl befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Daten sortieren

Hallo liebe Leute,
hab grad ein Problem.
Erstell grad ein Gästebuch wo man einen Namen und eine Nachricht eingeben kann:

PHP-Code:
<form action="save.php" style="position:absolute; padding-left:5px;" method="POST">
<
p> <span style="color: orange;">Name: </span> <input type="text" name="name" /> </p
<
span style="color: orange;">Nachricht: </span>
<
p><textarea name="nachricht" cols="40" rows="7"></textarea></p>
<
p> <input type="submit" value="Write" /></p>
</
form
Wie ihr unten sehen könnt mach ich mit php eine tabelle auf meiner gb.xhtml die mir den Namen, Datum und die eingegebene nachricht ausgiebt.
Jetzt möchte ich aber das die Nachrichten geordnet werden. Also das die neueste Nachricht ganz oben steht.
Wie kann ich das machen???
LG

PHP-Code:
$dom = new DOMDocument();

$dom->load('gb.xhtml');

$date date ("d.m.Y, H:i:s");

$name $dom->createTextNode($_POST['name']);
$datum $dom->createTextNode($date);
$nachricht $dom->createTextNode($_POST['nachricht']);

$tr $dom->createElement('tr');

$td_name $dom->createElement('td');
$td_datum $dom->createElement ('td');
$td_nachricht $dom->createElement ('td');
$td_löschen $dom->createElement ('td');

$td_name->setAttribute('style','width:150px; border: 2px solid black');
$td_datum->setAttribute('style','width:50px; border: 2px solid black');
$td_nachricht->setAttribute('style','width:500px; border: 2px solid black');
$td_löschen->setAttribute('style','width:50px; border: 2px solid black');

$td_name->appendChild($name);
$tr->appendChild($td_name);

$td_datum->appendChild($datum);
$tr->appendChild($td_datum);

$td_nachricht->appendChild($nachricht);
$tr->appendChild($td_nachricht);

$table$dom->getElementsByTagName('table')->item(0);
$table->appendChild($tr);

$dom->save('gb.xhtml');

header("Location: gb.xhtml"); 
BonsaiGirl ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 27.10.2010, 11:10  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.563
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

Woher kommen denn die Nachrichten? Alle nur aus der Usereingabe? .. das ist aber unbequem - dann musst du die Datei ja jeweils vorher einlesen, den Dombaum parsen und dann "oben" ein child einhängen ... furchtbar unbequem
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline  
Alt 27.10.2010, 11:23  
Erfahrener Benutzer
 
Benutzerbild von pfump
 
Registriert seit: 29.03.2008
Beiträge: 576
pfump kann nur auf Besserung hoffen
Standard

Die Nachrichten werden doch in der Datei angehängt richtig?
Dann könnte man evtl. die Datei von hinten nach vorn ausgeben.
pfump ist offline  
Alt 27.10.2010, 11:29  
Benutzer
 
Registriert seit: 27.10.2010
Beiträge: 69
PHP-Kenntnisse:
Anfänger
BonsaiGirl befindet sich auf einem aufstrebenden Ast
Standard

und wie funktioniert das mit dem von hinten nach vorne ausgeben??
hab da leider keinen blassens chimmer (bin noch anfänger und kenn mit mit php net wirklich gut aus^^)
BonsaiGirl ist offline  
Alt 27.10.2010, 11:30  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.563
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

eben nicht - wenn die Datei einmal so sortiert erstellt wurde hast du

Eintrag 2
Eintrag 3
Eintrag 4
Eintrag 5
<-- neuer Eintrag 1

wenn du die Einfach umdrehst - dann liegt ja nicht Eintrag 1 vor Eintrag 2 ....

ansonsten müsste man die Datei einmal umgekehrt parsen bevor der neueste Eintrag angehängt wird, um 5,4,3,2 herzustellen, dann die 1 anhängen und dann nochmal umgekehrt parsen um das gewünschte 1,2,3,4,5 zu erhalten ...
eben "unbequem" aber da schrieb ich ja schon
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline  
Alt 27.10.2010, 11:37  
Erfahrener Benutzer
 
Benutzerbild von pfump
 
Registriert seit: 29.03.2008
Beiträge: 576
pfump kann nur auf Besserung hoffen
Standard

Man könnte doch den Inhalt in eine Variable lesen, dann Datei leeren
und diese Variable dann nach dem neuen
Inhalt wieder einfügen.

Geändert von pfump (27.10.2010 um 11:49 Uhr).
pfump ist offline  
Alt 27.10.2010, 11:59  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.563
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

ich tät es ja beim Dom belassen, das spart wenigstens Arbeit bei der Analyse der Daten ...

PHP-Code:
$dom = new DOMDocument();

$dom->load('gb.xhtml');  // altes Dom einlesen
$table$dom->getElementsByTagName('table')->item(0);
$liste=$dom->getElementsByTagName("tr");
// die liste der alten Einträge - sind ja alles tr-tags
$nodes=array(); // array für die Neuanlage
$date date ("d.m.Y, H:i:s");

$name $dom->createTextNode($_POST['name']);
$datum $dom->createTextNode($date);
$nachricht $dom->createTextNode($_POST['nachricht']);

$tr $dom->createElement('tr');

$td_name $dom->createElement('td');
$td_datum $dom->createElement ('td');
$td_nachricht $dom->createElement ('td');
$td_löschen $dom->createElement ('td');

$td_name->setAttribute('style','width:150px; border: 2px solid black');
$td_datum->setAttribute('style','width:50px; border: 2px solid black');
$td_nachricht->setAttribute('style','width:500px; border: 2px solid black');
$td_löschen->setAttribute('style','width:50px; border: 2px solid black');

$td_name->appendChild($name);
$tr->appendChild($td_name);

$td_datum->appendChild($datum);
$tr->appendChild($td_datum);

$td_nachricht->appendChild($nachricht);
$tr->appendChild($td_nachricht);

//dein COde für das erzeugen eines neuen tr-Tags

$nodes[]=$tr// dieses als erstes ins Array packen


$laenge=$liste->length
$newdom=new DOMDocument(); // ein neues Domdocument
$newtable=$newdom->createElement("table");  // eine Tabelle erzeugen
$newdom->appendchild($newtable); // ins neue Document
for($i=0;$i<$laenge;$i++) { // die restlichen tr-tags aus der Liste ins Array kopieren 
   
$nodes[]=$liste->item($i);
// schön hinter den neuesten Eintrag, wie gewünscht
}
for(
$i=0;$i<count($nodes);$i++) {
    
$newtable->appendchild($nodes[$i]
// die Einträge des Array als Kindelemente der neuen Tabelle eintragen
// speichern noch 
... ungeprüft, aber so ungefähr sollte es gehen
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline  
Alt 27.10.2010, 12:28  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Das Umsortieren kann man sich sparen. Da die Datei jedesmal neu eingelesen und danach geschrieben wird, müsste es genügen, den (oder die) richtigen appendChild()-Aufruf(e) durch eine Lösung mit insertBefore() und firstChild zu ersetzen.

Also statt:
PHP-Code:
$table->appendChild($tr); 
PHP-Code:
$table->insertBefore($tr$table->firstNode); 
Selbstverständlich muss dazu die Gästebuchdatei von Anfang so erstellt werden.

Geändert von fireweasel (27.10.2010 um 12:46 Uhr).
fireweasel ist offline  
Alt 27.10.2010, 12:49  
Erfahrener Benutzer
 
Benutzerbild von pfump
 
Registriert seit: 29.03.2008
Beiträge: 576
pfump kann nur auf Besserung hoffen
Standard

Erst mal coole Sache mit insertBefore()
Man lernt halt nie aus

Es hat sich aber ein kleiner kleiner Fehler eingeschlichen.
Es muß heißen:

PHP-Code:
$table->insertBefore($tr$table->firstChild); 

Geändert von pfump (27.10.2010 um 12:52 Uhr).
pfump ist offline  
Alt 27.10.2010, 13:11  
Benutzer
 
Registriert seit: 27.10.2010
Beiträge: 69
PHP-Kenntnisse:
Anfänger
BonsaiGirl befindet sich auf einem aufstrebenden Ast
Standard

supi danke leute für eure hilfe^^
*verbeug* und *händeschüttel*
BonsaiGirl 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
Registrierte User sollen ihre Daten ändern können 54ch4 PHP Tipps 2009 17 14.03.2009 14:29
Scriptsuche Suche Script zum einpflegen von daten... derTorsten1909 Scriptbörse 17 10.01.2009 18:22
Problem mit Formular, Daten an datenbank senden Aurec PHP Tipps 2008 11 20.11.2008 18:17
sortieren nach datum, daten vor 1.1.1970 moose Datenbanken 2 21.07.2008 10:50
Daten beliebig sortieren Das Devil Datenbanken 7 29.03.2008 17:58
Daten aus XML sortieren GSJLink HTML, Usability und Barrierefreiheit 13 09.12.2007 18:24
Mehrere Arrays unterschiedlicher Größe kombinieren querfisch PHP Tipps 2007 9 31.03.2007 21:34
MYSQL daten bei der ausgabe sortieren DrWeb Datenbanken 2 29.07.2006 10:09
Daten eintragen und auslesen Rettungsdackel Datenbanken 0 14.09.2005 16:29
Daten aus File sortieren Simon9990 PHP Tipps 2005-2 12 26.07.2005 09:06
Daten überschreiben in einer txt datei!? CHRIS PHP Tipps 2005 2 02.03.2005 15:02
Daten in Datenbank ändern PHP Tipps 2005 3 27.01.2005 14:40
sortieren und ordnen von daten aus DB?! PHP Tipps 2004 2 05.11.2004 08:58
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sortieren domdocument, daten sortieren php, php daten sortieren, php dom nodes in array speichern, sortieren dom php, tabelle sortieren document object model, tabelle sortieren dom getelementsbytagname, php anzeigen der aktuellsten nachricht ganz oben insertbefore, dom getelementsbytagname(\table\) border=, php sorting nodes in xml document, dom element sortieren php, php appendchild sort, $dom = new domdocument();

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:17 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