Aus Datenbank Wert lesen und dann in txt Dokument schreiben?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
aktualisieren
attribut
aufgefallen
code
datei
datenbank
dokument
eintragen
formulieren
gleichen tabelle
letzten update
set
statement
tag
typ
unbefugte informationen
update
vorarbeit
zeile
-
Hallo Lima-City,
also die Überschrift sagt jetzt nich genau was ich will (das is auch schwer zu tag/formulieren">formulieren)
Ich möchte:
- in einer Datenbank z.B. den Wert 30 immer um eins verringern (also jeden Tag -1) geht das? und wenn ja wie?
- wenn ich den Wert 30 in der Tabelle habe, möchte ich in ein txt Dokument einen anderen Wert (aus der gleichen Tabelle nur einem anderem Feld) eintragen
- wenn der Wert 30 durch die erste funktion wieder bei 0 ist, möchte ich, dass der andere Wert wieder aus dem txt dokument gelöscht wird
ich hoffe so etwas geht und freue mich über jede antwort
Grüße Benni
Beitrag zuletzt geändert: 5.4.2011 21:32:01 von wentzinger-8b -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
kla geht das.
du machst einfach vollgendes :
Du Sendest eine SQL anfrage an die Datenbank und führst ein Update aus :
$update = "UPDATE tabellenname SET wert = wert - 1 WHERE zeile = gesucht"; $result = mysql_query($mysql, $update);
Ich denke du solltest verstehen wwas passiert.
Durch eine normale abfrage der Datenbank
$sql= "SELECT * FROM tabellenname WHERE zeile = gesucht "; $result = mysql_query($mysql, $sql); while($row = mysql_fetch_array($result, MYSQL_BOTH)) { $tabellenwert = $row['spaltenname']; }
und um einen Wert in eine Datei zu schreiben einfach :
$userdatei = @fopen("name.txt","w"); $schreiben = @fwrite("name.txt", $tabellenwert); @fclose($userdatei);
die @ verhindern das eine Fehlermeldung ausgegeben wird. dies ist wichtig wenn dadurch unbefugte informationen erhalten könnten, die sie nicht sollten.
Welcher wert nun in der Datenbank ist prüfst du einfach durch eine if abfrage.
Hier ist dann der gesammte code :
$sql= "SELECT * FROM tabellenname WHERE zeile = gesucht "; $result = mysql_query($mysql, $sql); while($row = mysql_fetch_array($result, MYSQL_BOTH)) { $tabellenwert = $row['spaltenname']; if ($tabellenwert == 30) { $userdatei = @fopen("name.txt","w"); $schreiben = @fwrite("name.txt", $tabellenwert); @fclose($userdatei); $update = "UPDATE tabellenname SET wert = wert - 1 WHERE zeile = gesucht"; $result = mysql_query($mysql, $update); } if ($tabellenwert == 0) { $userdatei = @fopen("name.txt","w"); $schreiben = @fwrite("name.txt", $tabellenwert); @fclose($userdatei); $update = "UPDATE tabellenname SET wert = 30 WHERE zeile = gesucht"; $result = mysql_query($mysql, $update); } }
-
excision hat hier schon sehr gute Vorarbeit geleistet. Aber was mir noch aufgefallen ist:
Der Wert 30 sollte hier nur als Beispiel dienen. Wenn ich das richtig verstanden habe, sollte das Update immer dann durchgeführt werden, wenn der Wert kleiner oder gleich 30 ist. Daher sollte folgender Vergleichsoperator verwendet werden:
if ($tabellenwert <= 30) {
Im Vorschlag von excision wird nicht geprüft, ob ein Update bereits am selben Tag erfolgte. Dazu könntest du ein Attribut (zB 'last_update') vom Typ TIMESTAMP für die letzte Änderung, also dem letzten Update, anlegen und bei jedem Update auch diesen TIMESTAMP aktualisieren. Zusätzlich müsstest du aber prüfen, ob das Update nicht bereits durchgeführt wurde. Somit sollte das SQL-Statement in etwa wie folgt aussehen:
$update = "UPDATE tabellenname SET wert = wert - 1, last_update = CURRENT_TIMESTAMP WHERE zeile = gesucht AND last_update < CURRENT_DATE";
Beitrag zuletzt geändert: 6.4.2011 6:44:32 von wagnerm -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage