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

Zahl in Datenbank erhöhen

Status
Für weitere Antworten geschlossen.
Kannst du das mal etwas genauer beschreiben? Ich gehe mal davon aus, wenn ich einfach AUTO_INCREMENT schreibe, passiert nichts, oder?
 
wenn du deine tabelle im phpmayadmin anschaust und das feld editierst, welches du automatisch erhöhen möchtest, kannst du die option AUTO_INCREMENT angeben
 
das feld bekommt in der datenbankstruktur einfach unter 'extra' das 'auto_increment' zugewiesen.

sobald ein neuer datensatz in die tabelle geschrieben wird,
erstellt das feld dann selbst nen fortlaufenden, jeweils um 1 erhöhten wert.
 
Na, aber bei einer Umfrage!? Wenn jemand abstimmt, muss man doch dann in dem entsprechenden Datensatz den Wert von Hand um 1 erhöhen können!?
 
oder möchtest du in einem bestimmten datensatz eine nummer immer erhöhen?

falls das der fall ist musst du sie über php auslesen , erhöhen und über UPDATE wieder in die DB einfügen:

"UPDATE tabelle set feld = $neue_nummer where id=$id"

und das where statement nicht vergessen, sonst updatest du alle einträge in der tabelle.
Am besten noch ein "LIMIT 1" hinzufügen um ganz sicher zu gehen.
 
Also:

Ich habe eine Umfrage, die ich mit PHP auswerte und die Daten / Werte / Ergebnisse in einer MySQL-Datenbank speichere.

Wenn nun ein Besucher für eines des Ergebnisse abstimmt, will ich dementsprechend im jeweiligen Datensatz die Nummer erhöhen.

Beispiel:
Tabelle: Umfrage
Datensätze: Windows, Linux, Mac OS
Besucher stimmt für Linux ab
Script soll Zahl im Datensatz Linux um eins erhöhen

Verstanden?
 
ok, dann ist auslesen, erhöhen, wieder eintragen die lösung.

oder noch einfacher:
"UPDATE tabelle SET counter = counter + 1 WHERE id = $id LIMIT 1"
 
Hmm, das verstehe ich nicht so ganz.

Könntest du das vielleicht mal in einem kleinen Beispielscript verdeutlichen? Ich bin nocht nicht lange dabei mit MySQL.
 
ok, du hast eine tabelle die z.b. so erstellt wurde:

CREATE TABLE `umfrage_os` (
`UID` int(11) NOT NULL auto_increment,
`windows` int(11) default '0',
`linux` int(11) default '0',
`macos` int(11) default '0',
PRIMARY KEY (`UID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

jemand klickt jetzt auf deiner homepage auf windows, dann führst du folgenden befehl aus:
mysql_query ("UPDATE umfrage_os SET windows = windows + 1 WHERE UID = 1");
 
Brauch man das " `UID` int(11) NOT NULL auto_increment,", " PRIMARY KEY (`UID`)" und das "ENGINE=MyISAM DEFAULT CHARSET=latin1;" unbedingt?

Wenn ja, für was sind die da?
 
Brauch man das " `UID` int(11) NOT NULL auto_increment,", " PRIMARY KEY (`UID`)"

ich würde immer eine eindeutige nummer in jeder zeile haben, damit du die zeile 100% identifizieren kannst. Sonst kannst du dir mehrere zeilen gleichzeitig überschreiben. In deinem fall, da es nur eine zeile geben wird, ist es egal. Aber es schadet auch nicht.

"ENGINE=MyISAM DEFAULT CHARSET=latin1;"

irgendeine engine musst du angeben, ich nehme myisam weil sie rollback features hat, dh. im fall, dass ein skript irgendwo hängen bleibt, aber noch nicht alle mysql befehle ausgeführt wurden, kannst du alles auf den originalstatus zurück bringen und somit die DB integrität wieder herstellen.

ob man nen charset angeben muss weiss ich nicht... aber schaden tut es sicher nicht. :?
 
mysql_query ("UPDATE umfrage_os SET windows = windows + 1");

aber wie gesagt, falls mehrere zeilen drin sind werden die alle updated
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben