Wert auslesen, ausgeben und um eins erhöhen

Das einzige was ich möchte ist das wenigtens eine 0 eingetragen ist. Denn damit kann man ja wenigtens einen Counter auf der Wesbeite darstellen. Mit NICHTS geht es schwer. ;)

Ich versuche es mal in Worten zu beschreiben da ich das Gefühl habe das ihr mich nicht versteht.

PHP:
Ist Spalte 1 von der Tabelle = Leer dann füge dieser Spalte die Zahl 0 hinzu

Ist Spalte 2 von der Tabelle = Leer dann füge dieser Spalte die Zahl 0 hinzu

...

// Dieser Code geht nicht! Aber warum?
if ($result['first_counter'] == "") {
    $new_query1 = mysql_query("INSERT INTO db_counter (first_counter) VALUES ('0')");
} 

// Dieser Code funktioniert
if ($result['first_counter'] == "") {
    $new_query1 = mysql_query("INSERT INTO db_counter (first_counter, slave_counter) VALUES ('0', '0')")
}

Das soll ja nur eine Abfrage sein die vielleicht nie benutzt wird, aber die gehört m.M. nach mit in das Skript.

Denn ich kann nichts "Updaten" wenn nichts eingetragen ist.
 
Was ich bei deinen SQL Statements als problematisch ansehe ist, dass Du völlig ohne Bedingungen arbeitest.

Dein Select zum Beispiel:
SQL:
SELECT first_counter, slave_counter FROM db_counter;
Das gibt dir alle Datensätze zurück und nicht einen bestimmten.

Deswegen ist es auch relative schwierig nachzuvollziehen, wann Du was machen willst.
 
Ist der MySQL-Befehl nicht richtig? Ich habe das so aus einer MySQL-Dokumentation gelernt.

PHP:
SELECT first_counter, slave_counter FROM db_counter;

SELECT
---> first_counter
---> slave_counter
FROM
---> db_counter

Die Tabelle heisst "db_counter" und ich habe zwei Spalten mit den Namen "first_counter" und "slave_counter" erstellt.

---

Deswegen ist es auch relative schwierig nachzuvollziehen, wann Du was machen willst.

Insgesamt möchte ich folgendes realisieren:
1. Prüfen ob Tabelle "db_counter" existiert
2. Wenn nicht -> erstellen
3. Prüfen ob Spalte "first_counter" existiert
4. Wenn nicht -> erstellen
5. Prüfen ob Spalte "slave_counter" existiert
6. Wenn nicht -> erstellen
7. Prüfen ob "first_counter" LEER ist (wie z.B. $var1 = '';)
8. Wenn leer -> 0 als Zahl eintragen
9. Prüfen ob "slave_counter" LEER ist (wie z.B. $var2 = '';)
10. Wenn leer -> 0 als Zahl eintragen
11. Wert der ersten und zweiten Spalte um +1 erhöhen
 
Es ist in sofern nicht problematisch weil er überhaupt nur einen Datensatz in der Datenbank hat... was die Datenbank an sich ein wenig überflüssig macht und genausogut txt-Dateien verwenden werden könnten.
Zu deinem Problem:
SQL:
UPDATE db_counter SET first_counter = 0 WHERE first_counter == '' || first_counter IS NULL
Sofern du keine Standardwerte in der DB hast, musst du allen Feldern beim Eintrag auch einen Wert geben, sonst funktioniert der Query nicht.
Für MySQL Fehleranalysen gibt es den Befehl
PHP:
mysql_error()
den ich an deiner Stelle dringendst mal einbauen würde:
PHP:
$result = mysql_query('...') or die(mysql_error());

Edit:
Setze doch sonst einfach in PHPMyAdmin die entsprechenden Felder auf 0. Danach werden sie ja nicht mehr auf '' springen. Sind die Felder überhaupt vom Typ INT? Wenn's ganz hart kommt, Tabelle leeren (TRUNCATE) und neu, jetzt mithilfe der Defaultwerde eintragen...
 
Nein "VARCHAR". Ist das wichtig?

Es ist in sofern nicht problematisch weil er überhaupt nur einen Datensatz in der Datenbank hat... was die Datenbank an sich ein wenig überflüssig macht und genausogut txt-Dateien verwenden werden könnten.

Wenn mehrere User das Skript benutzen kann es passieren das es Probleme beim öffnen, lesen und schreiben in die txt-Dateien gibt.

http://www.tutorials.de/php/381325-frage-zu-datei-oeffnen-bearbeiten-und-schliessen.html
 
Zuletzt bearbeitet:
Ich habe da nur eine Frage: Warum VarChar (Strings) wenn du Zahlen (double), genauer nur Ganzzahlen (INT) speichern möchtest? Sollte das eigentlich schon beantworten.
 
Ok ich verstehe.

Mit dieser Einstellung definiert man was für Arten von Texten usw. eingetragen werden. Aber macht das in meinem Fall einen unterschied?
 
Ja. Mit VarChar Feldern kannst du nicht rechnen (+1 z.B.). Außerdem gehört es alleine schon zum guten Stil die Felder entsprechend des Zwecks auszuwählen. Außerdem können Zahlenfelder gar nicht leer sein.
 
Wenn mehrere User das Skript benutzen kann es passieren das es Probleme beim öffnen, lesen und schreiben in die txt-Dateien gibt.
Es könnte, bei deinem aufwendigen Skript, ein Transaktionsfehler auftreten. Aber ich glaub ein 6er im Lotto wäre wahrscheinlicher. Selbst wenn könnte man den Fehler in diesen Anwendungsfall tolerieren.

Außerdem können Zahlenfelder gar nicht leer sein.
Doch sie können.
 
Zurück