Ein Eintrag aus Datenbank lesen, dann löschen

hi
ich hab mir ein ganz normales script gemacht, um etwas um einer datenbank auszulesen:

[PHP]<?php

$db=mysql_connect(„localhost“,„benutzername hier“,„passwort“)
or die („Zur Zeit kein Connect zum Datenbankserver!“);
mysql_select_db(„—“)
or die („Datenbank konnte nicht angesprochen werden“);
$anfrage=„SELECT * FROM gaestebuch ORDER BY id DESC“;
$ergebnis=mysql_query($anfrage)
or die („Fehler bei der Datenbankanfrage“);

$spaltenanzahl=mysql_num_fields($ergebnis);

while ($zeile=mysql_fetch_row($ergebnis)) {

print ($zeile[4]);

}

mysql_close($db);
?>[/PHP]

jedoch soll nur immer der oberste eintrag ausgelesen werden, und danach in eine andere spalte verschoben wird (ungen angehängt)

also z.b. spalte 1: text
dieser text wird gelesen, auf die seite eingefügt und dann sofort in eine andere spalte verschoben werden

natürlich hat die spalte 1 ganz viele zeilen, jedoch soll immer nur die oberste ausgelesen werden

ich würde das so machen:

die aktuelle id in einem separaten feld speichern und sie nach jedem löschen dekrementieren.
dann eine sql-abfrage schreiben, die auf den dekrementierten wert zugreift und anhand dessen die id dieses wertes löscht.

Nils aka XraYSoLo

und ich versteh net genau wie du das meinst, also es soll wirklich nur der oberste eintrag ausgelesen werden, und von mir aus muss der auch nich verschoben, sondern gleich gelöscht werden, das wäre vielleicht sogar noch besser.

wie könnte ich jetz noch machen dass es nur zu einer bestimmten zeit ausgelesen wird?

ha ja, das hab’ ich ja oben beschrieben. dadurch, dass die id separat dekrementiert wird, hast du immer die aktuelle id und kannst die löschen.

Nils aka XraYSoLo

ja aber wie geht das denn? ich kenn mich noch net so gut aus

Hier hast du mal nen kleineren Ansatz
(Voraussetzung ist eine Auto_increment Spalte namens id)

[PHP]
error_reporting(E_ALL);
/*
** Verbindung zur Datenbank
*/

//Obersten Datenreihe aus lesen
$qry = „SELECT id,text FROM table ORDER BY id ASC LIMIT 1“;
$qry = mysql_query($qry) or die(mysql_error());

// Daten in ein Array schreiben
while ($array = mysql_fetch_assoc($qry))
{
$daten[„id“] = $array[„id“];
$daten[„text“] = $array[„text“];
}

//Daten auf der Homepage ausgeben
echo $daten[„text“];

//Datensatz löschen
$qry = „DELETE FROM table WHERE id = {$daten[„id“]}“;
$qry = mysql_query($qry) or die(mysql_error());

//Datensatz am Ende der Tabelle wieder einfügen
$qry = „INSERT INTO table (text) VALUES (‚{$daten[„text“]}‘)“;
$qry = mysql_query($qry) or die(mysql_error());
[/PHP]

geht das evtl auch irgendwie ohne id? weil ich hab jetz schon über 10.000 sätze in der datenbank und da müsst ich ja jetz zu jeder spalte noch ne nummer dazumachen…

geh einfach auf struktur, dann mach 1 Feld an den Anfang hinzufügen

Das feld machst du dann BIGINT auto_increment PRIMARY_KEY
der schreibt dann autom zu allen einträgen ne ID dazu

also so sieht das jetz bei mir aus:

[PHP]<?php

$tagnameeng=date(„l“);
$uhrzeit=date(„Hi“);

if ($tagnameeng==„sunday“) {
if ($uhrzeit<=„2300“) {
if ($uhrzeit>=„1700“) {

$db=mysql_connect(„localhost“,„>>>>benutzername hier<<<<<“,„>>>>>passwort<<<<<“)
or die („Zur Zeit kein Connect zum Datenbankserver!“);
mysql_select_db(„>>>>>datenbank name<<<<“)
or die („Datenbank konnte nicht angesprochen werden“);
$anfrage=„SELECT id,text FROM <<<<<<tabellenname>>>>>>> ORDER BY id ASC LIMIT 1“;
$ergebnis=mysql_query($anfrage)
or die (mysql_error());

while ($array = mysql_fetch_assoc($ergebnis))
{
$daten[„id“] = $array[„id“];
$daten[„text“] = $array[„text“];
}

//Daten auf der Homepage ausgeben
echo $daten[„text“];

//Datensatz löschen
$ergebnis=„DELETE FROM table WHERE id = {$daten[„id“]}“;
$ergebnis=mysql_query($ergebnis) or die(mysql_error());

mysql_close($db);

}
}
}

?>

[/PHP]

jedoch wird da garnichts angezeigt wenn ich das ausführe, nicht mal eine fehlermeldung, seht ihr da vielleicht noch irgendwo en fehler?

omg…änder’ das halt sinngemäß ab…also all deine arbeit können wir dir hier auch net abnehmen.

Nils aka XraYSoLo

ja was meinst du denn mit sinngemäß? ich hab das doch nur so verändert wie es mir hier beschrieben wurde :confused: am anfang is halt noch die if abfrage dass der text nur samstags von 17:00 - 23:00 uhr eingefügt wird und benutzer, passwort und tabellenname hab ich natürlich auf meinem server eingefügt :confused: