Update funkitin

latinum_1982

Erfahrenes Mitglied
Hallo freunde

ich hab leider schon wieder ein problem was ich nicht lösen kann :(

ich hab für eine bestellung eine datenbank angelegt die daten werden auch immer einwand frei eingetragen nun wollt ich zum nächten schritt von der bestellung der versand .. aber das was ich geschreiben hab funktioniert irgendwie nicht und ich finde kein fehler :(

meine tabelle
`auftragsnummer` int(120) NOT NULL AUTO_INCREMENT,
`datum` datetime NOT NULL,
`user_id` int(20) NOT NULL,
`produkt` text NOT NULL,
`menge` varchar(20) NOT NULL,
`preis` varchar(20) NOT NULL DEFAULT '0.00',
`kografik` varchar(20) NOT NULL DEFAULT '0.00',
`summe` varchar(20) NOT NULL DEFAULT '0.00',
`versand` text NOT NULL,

PHP:
mysql_query("UPDATE bestellung SET
			`versand` = '$data[versand]',
			 WHERE id='$_SESSION[user_id]' ORDER BY datum DESC LIMIT 0,1");

HTML:
        <form action="" id="versand">
        <table width="489" border="0" align="center">
          <tr>
            <td width="214" height="20"><div align="right"><strong>Auftragsnummer  :</strong></div></td>
            <td width="492"><?php echo $data['auftragsnummer'] ?><?php } ?></td>
          </tr>
          <tr>
            <td height="20">&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td height="15"><strong>Versand Art :</strong></td>
            <td><p>
            <label><input type="radio" id="versand" name="versand1" value="viaups">Versand via UPS</label><br>
	      <label><input type="radio" id="versand" name="versand2" value="selbsabholung">Selbstabholung</label></p></td>
          </tr>
          <tr>
            <td height="17">&nbsp;</td>
            <td> <input type="submit"  value="Weiter" /></td>
          </tr>
        </table></form>
 
Hallo latinum_1982,

Hallo freunde

ich hab leider schon wieder ein problem was ich nicht lösen kann :(

ich hab für eine bestellung eine datenbank angelegt die daten werden auch immer einwand frei eingetragen nun wollt ich zum nächten schritt von der bestellung der versand .. aber das was ich geschreiben hab funktioniert irgendwie nicht und ich finde kein fehler :(

meine tabelle
Code:
`auftragsnummer` int(120) NOT NULL AUTO_INCREMENT,
`datum` datetime NOT NULL,
`user_id` int(20) NOT NULL,
`produkt` text NOT NULL,
`menge` varchar(20) NOT NULL,
`preis` varchar(20) NOT NULL DEFAULT '0.00',
`kografik` varchar(20) NOT NULL DEFAULT '0.00',
`summe` varchar(20) NOT NULL DEFAULT '0.00',
`versand` text NOT NULL,

PHP:
mysql_query("UPDATE bestellung SET
			`versand` = '$data[versand]',
			 WHERE id='$_SESSION[user_id]' ORDER BY datum DESC LIMIT 0,1");
Mir fallen da auf Anhieb zwei Sachen auf:
  1. in der WHERE-Klausel beziehst Du dich auf das Feld id... ist das Feld auch wirklich in der Tabelle? (ich sehe es in der Tabellenstruktur nicht^^)
  2. wenn ja, ist id ein index/unique? wenn ja, brauchst Du ORDER BY und LIMIT nicht

Desweiteren würde ich die Arrays in dem Query in geschweifte Klammern setzen, oder aus dem String nehmen ('string'.$array['key'].'string'):
PHP:
mysql_query("UPDATE bestellung SET
			 versand = '{$data['versand']}',
			 WHERE id = '{$_SESSION['user_id']}'");

Gruß

Edit//
Ich seh grad, id soll sicher auftragsnummer sein!?
Dann evtl. so:
PHP:
mysql_query("UPDATE bestellung SET
			 versand = '{$data['versand']}',
			 WHERE auftragsnummer = '{$_SESSION['user_id']}'");

Edit 2//
Ich sehe es grad noch deutlicher. -.-
Id soll sich wohl auf die user_id beziehen?
Dann evtl so...
PHP:
mysql_query("UPDATE bestellung SET
			 versand = '{$data['versand']}',
			 WHERE user_id = '{$_SESSION['user_id']}' ORDER BY datum DESC LIMIT 1");
 
Zuletzt bearbeitet:
SQL:
`auftragsnummer` int(120) NOT NULL AUTO_INCREMENT,
int(120) gibts nicht, AUTO_INCREMENT geht nur mit Primary Key
SQL:
`user_id` int(20) NOT NULL,
int(20), maximale Darstellungsgröße ist 11 bzw. 10
SQL:
`menge` varchar(20) NOT NULL,
menge VARCHAR? Stückzahlen gebe ich mit Zahlen an, also INT, und eine Darstelungsgröße von 20? das macht dann 99.999.999.999.999.999.999
SQL:
`preis` varchar(20) NOT NULL DEFAULT '0.00',
`summe` varchar(20) NOT NULL DEFAULT '0.00',
Wenns um Geld geht braucht man eine sehr exakte Spalte, dafür gibts DECIMAL.
Außerdem kann man mit VARCHAR nicht rechnen.
 
Zuletzt bearbeitet von einem Moderator:
@ raisch

hab jetzt alle ausprobiert speichern tuts trozdem nicht :(
aber auf der url steht : http://localhost/login/versand.php?versand1=viaups

und mysql_error() zeigt mir auch kein fehler an :(

das ist ja so das is ein stink normaler formular kann man sagen denn wenn der user/kunde auf weiter klick dann wird ja immer ein neuer datensatz angelegt und deswegen wird datum und uhrzeit mirgespeichert und wenn er weiter klickt kommt er/sie zum versand optionen und die dafür hab ich ja die user_id und ORDER BY datum DESC so das immer der letzte datensatz updatet wird

@ nopifis
dank für denn hinweis da ich mich bis jetzt nur php beschäftigt hab hab ich sql nur von sehn gelernt muss ich nicht anscheined demnächt einsteigern aber eine frage ich hab denn noch :
ja es geht um geld beträge aber wenn ich DECIMAL mach er mir keine komma stellen mehr :(
 
Zuletzt bearbeitet:
SQL:
UPDATE `bestellung` 
SET `versand` = '{$data['versand']}'
WHERE `user_id` = '{$_SESSION['user_id']}' 
LIMIT 1

Bei Raisch war nen Komma zu viel drin aber das hätte dir mysql_error() sagen sollen. Wo hast du den Befehl denn eingefügt?
 
ich hab jetzt so

PHP:
mysql_query("UPDATE `bestellung` 
SET `versand` = '{$data['versand']}'
WHERE `user_id` = '{$_SESSION['user_id']}' 
LIMIT 1") or die("Fehler beim Update: ".mysql_error());

ich bekomm kein fehler aber es wird auch in der db nichts gespeichert :(
 
ich hab jetzt so

PHP:
mysql_query("UPDATE `bestellung` 
SET `versand` = '{$data['versand']}'
WHERE `user_id` = '{$_SESSION['user_id']}' 
LIMIT 1") or die("Fehler beim Update: ".mysql_error());

ich bekomm kein fehler aber es wird auch in der db nichts gespeichert :(
Da wir nur einen kleinen Teil des Scriptes kennen, können wir Dir auch nicht sagen woran es liegt.

Gruß
 
Zurück