• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Ein Eintrag aus Datenbank lesen, dann löschen

Status
Für weitere Antworten geschlossen.

Geltos

Mitglied
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 ("<b>Zur Zeit kein Connect zum Datenbankserver!</b>"); 
mysql_select_db("---") 
or die ("<b>Datenbank konnte nicht angesprochen werden</b>"); 
$anfrage="SELECT * FROM `gaestebuch` ORDER BY `id` DESC"; 
$ergebnis=mysql_query($anfrage) 
or die ("<b>Fehler bei der Datenbankanfrage</b>"); 


$spaltenanzahl=mysql_num_fields($ergebnis); 

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

print ($zeile[4]);


} 


mysql_close($db); 
?>

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?
 
Zuletzt bearbeitet:
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
 
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());
 
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 ("<b>Zur Zeit kein Connect zum Datenbankserver!</b>"); 
mysql_select_db(">>>>>datenbank name<<<<") 
or die ("<b>Datenbank konnte nicht angesprochen werden</b>"); 
$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); 


}
}
}

?>

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 :/ 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 :/
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben