• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

In MySQL-Tabelle Daten oben einsetzen

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
ich habe diesen php Befehl
mysql_query("INSERT INTO test (Autor, Eintrag, Datum, Uhrzeit) VALUES('$Autor','$Eintrag','$Datum','$Uhrzeit')");
Und jetzt will ich, dass die neuen Daten immer oben in die Tabelle eingetragen werden

Wenn das nicht klappen sollte, dann würde ich gerne eine Möglichkeit erfahren wo man die Daten von unten nach oben aus der Tabelle auslesen kann.
Das ist der Schnipsel ,den ich für das Ausgeben der gesamten Tabelle verwende:
while ($ar=mysql_fetch_array($result,MYSQL_ASSOC)) {
echo "<tr><td>",$ar["Datum"],"</td><td> ",$ar["Uhrzeit"],"</td><td> ",$ar["Autor"],"</td><td>sagte:</td><td>'",$ar["Eintrag"],"'",
"</td></tr>\n";
}

Danke schonmal im Vorraus
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Die Reihenfolge der Datensätze in einer Datentabelle ist (meistens) schnuppe und INSERT fügt Datensätze regulär "unten" an die Tabelle an.


Du kannst bei der Ausgabe mit dem SELECT-Statement einfach ein "ORDER BY" anhängen und nach x-beliebigen Spalten sortieren. Neueste Daten zuerst ausgeben? Dann die Daten mit
Code:
SELECT Autor, Eintrag, Datum, Uhrzeit FROM test ORDER BY Datum, Uhrzeit DESC;
aus der DB holen.

Siehe auch z.B. http://www.w3schools.com/sql/sql_orderby.asp
 
  • Like
Reaktionen: karolherbst

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
Danke hat alles geklappt außer, dass ich ein "DESC" auch hinter "Datum" einsetzen musste.

Jetzt eine etwas (meines Erachtens) komplexere Frage:
Was muss ich machen, damit eine Veränderung an der DB an den Browser gesendet wird, damit dieser den html-Frame mit der Ausgabe der DB aktualisiert? Ich habe jetzt als Not Lösung ein JavaScript geschrieben, das jede 2 Sekunden den frame aktualisiert.
Also falls das nciht ganz verstanden wurde:
Wenn jetzt ein Benutzer was eingibt, soll ein anderer Benutzer, der irgendwo anders ist, dies sofort mitbekommen. Wie geht das?

Danke schonmal im Vorraus

PS: Mit dem Einfügen in die DB. Bei mir war es so, dass er eine gewisse Anzahl von Daten oben eingefügt hat und danach alles wieder unten. Nach dem Löschen der Daten geschah das gleiche. Deswegen kam ich auf den Gedanken, dass die Daten schon "sortiert" eingefügt werden können
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
JavaApplets sollte man um jeden Preis vermeiden. Nicht, weil ein JavaApplet schlecht ist, sondern weil eine HTML/JS-Lösung mehr "lightweight" ist.

Für "Push"-Updates unter HTML kann ich mir folgendes vorstellen (teilweise aber noch nicht von mir eingesetzt):

  • Ajax pushlets: http://www.pushlets.com/
  • Quick'n'Dirty-Lösung: (letzte Änderungszeit per separaten script als JSON bereitstellen und das alle x-sekunden per JS abrufen. Wenn aktueller Datenstand!=Änderungszeit => Seite neu laden)
Wenn Du es ganz elegant machst, solltest Du nicht einfach die Seite bei geänderten Daten neu laden, sondern die Änderungen per XML/JSON übertragen und per JS dann die Änderungen ins DOM des momentanen Dokumentes integrieren.
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.059
JavaApplets sollte man um jeden Preis vermeiden.
Das halte ich für übertrieben. Zumal mittlerweile dieselben Sicherheitsprobleme mit JavaScript auftreten wie früher mit Applets. Und Java ist im Gegensatz zu anderen Techniken, Flash ist proprietär, eine offene Technik.
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
und cih finde Java sehr langsam und träge, 2tens verbraucht das mehr Ressourcen und alles.
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Sehe ich auch so. Warum noch mehr zusätzlichen Overhead für die JVM verbraten, wenn man eh schon alles mit HTML/CSS/JS clientseitig machen kann?

Für ganz komplizierte Sachen kann man natürlich immer noch auf ein Java-Applet zurückgreifen. Aber solang es noch ohne geht, würde ich darauf verzichten.

Serverseitig allerdings finde ich Java echt gut.
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
Wenn Du es ganz elegant machst, solltest Du nicht einfach die Seite bei geänderten Daten neu laden, sondern die Änderungen per XML/JSON übertragen und per JS dann die Änderungen ins DOM des momentanen Dokumentes integrieren.

heißt also eine DHTML ähnliche Seite erstellen, die eben nur auf Server-Zugriffe (in dem fall pushlets) als durch Benutzereingaben reagiert?
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Ja genau. Du kannst Dir bei diversen Chat- und LiveSupport-Lösungen eventuell ansehen, wie es geht.
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
Ich habe mir grade was anders überlegt:
Man kann doch einfach ein JavaScript schreiben, welches das Datum/Uhrzeit vom letzten Eintrag (das soll sone Art Forum-Projekt werden) mit dem Datum/Uhrzeit des letzten Eintrages in der DB vergleichen (irgendwie mit php und so XD) und dann per DHTML den neuen Eintrag oben anfügen oder?
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Das ist exakt das, was ich mit
  • Quick'n'Dirty-Lösung: (letzte Änderungszeit per separaten script als JSON bereitstellen und das alle x-sekunden per JS abrufen. Wenn aktueller Datenstand!=Änderungszeit => Seite neu laden)
Wenn Du es ganz elegant machst, solltest Du nicht einfach die Seite bei geänderten Daten neu laden, sondern die Änderungen per XML/JSON übertragen und per JS dann die Änderungen ins DOM des momentanen Dokumentes integrieren.

meinte :)
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
aso ok, werde es mit
Code:
setTimeout("funktion_zur_Überprüfung()",5000);
machen. Doch eines bereitet mir dann ncoh Kopfzerbrechen: Wie kann ich per php die neusten Daten aus der DB abrufen?
$sql = "SELECT * FROM test t ORDER BY Datum DESC, Uhrzeit DESC;";
damit sortiere ich und jetzt habe ich versucht mit
Code:
$ar=mysql_fetch_array($result,MYSQL_ASSOC);
$Datum=$ar["Datum];
$Uhrzeit=$ar["Uhrzeit"];
die ersten Einträge in die Variablen $Datum und $Uhrzeit abzuspeichern, doch die Variablen bleiben leer. Muss dies in einer Schleife passieren oder geht das so nicht und muss es anhand eines anderen Befehls gemacht werden?
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
aso ok, werde es mit
Code:
setTimeout("funktion_zur_Überprüfung()",5000);
machen. Doch eines bereitet mir dann ncoh Kopfzerbrechen: Wie kann ich per php die neusten Daten aus der DB abrufen?
So ungefähr :) Kannst Dir aber auch noch die Doku von Pushlets ansehen ;)
An die neuesten Daten kommst Du, wenn Du per SELECT DISTINCT die Zeit des letzen Datensatz es (ORDER BY DESC) holst (würde ich eventuell auch in einer Datei auf dem Server cachen oder sogar diese Cache Datei direkt beim Schreiben von neuen Daten füllen)

Muss dies in einer Schleife passieren oder geht das so nicht und muss es anhand eines anderen Befehls gemacht werden?
http://de3.php.net/mysql_fetch_array -> Beispiel #3
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.059
und ich finde Java sehr langsam und träge
Ich habe schon JavaScript überladene Seiten gesehen, die ebenfalls langsam und träge waren. Die Beispielseite für Pushlets fand ich persönlich auch nicht gerade überzeugend schnell, möglicherweise lag es da auch am Server. Es kommt also auf den Einzelfall drauf an.
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
also wenn ich eine Seite schreibe, bei der jede 5 Sekunden 2 simple Variablenabfragen gemacht werden, dann finde ich das sinniger als gleich ein ganzes JavaApplet zu schreiben, wo gleich die ganze JavaEngine mit geladen werden muss.
Für mich reicht JavaScript vollkommen aus.
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
das einzige Problem bie mir ist noch das die
Code:
setTimeout("CheckNewPost()",5000);
Funktion sich nicht erneut abruft. Könnte vlt XHTML da irgendwas blockieren, obwohl ich die Quelltexte als transitional schreibe?

PS: Das mit dem aktuellste Post abfragen was bananenbieger vorgeschlagen hat, klappt ohne Probleme. Danke!
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Bin gerade in JS etwas eingerostet, aber kannst Du nicht am Ende der aus der setTimeout ausgerufenen Funktion einfach einen neues setTimout-Befehl setzen?