Probleme mit Update

CreativPur

Erfahrenes Mitglied
Ich habe nun folgendes Problem...

Ich habe eine Ausgabeseite, die der Kunde zuvor per INSERT ein Formular mit Daten ausgefüllt hat.
Die Daten werden auch mit der richtigen ID angezeigt.

Jetzt soll der Kunde aber auch Veränderungen per UPDATE vornehmen können..
Über einen Button wird er auf die Änderungsseite geleitet.

Dort sollen die Felder erst einmal auf NULL gesetzt werden, was auch funktioniert..
Der Grund dafür liegt in meinem Script, welches nur ein NULL-Feld akzeptiert..

Nun sollte der Kunde die neuen Felder ausfüllen und per POST abschicken und wieder auf die Ausgabe-Seite wieder geleitet werden..

Leider werden keine neuen Daten in die Datenbank übertragen..

Wo liegt der Fehler ??
PHP:
<?PHP

$id = $_POST['id'];
$bg_bild = $_POST['bg_bild'];
$hintergrund_farbe = $_POST['hintergrund_farbe'];
$textfeld_farbe = $_POST['textfeld_farbe'];
$text_farbe = $_POST['text_farbe'];
$hyperlink_farbe = $_POST['hyperlink_farbe'];

$session = Mage::getSingleton('customer/session');
$customer = $session->getCustomer();
$id = $customer->getId();

$loeschen = "UPDATE BW_Customer_Daten SET bg_bild = NULL, textfeld_farbe = NULL, text_farbe = NULL, hyperlink_farbe = NULL WHERE id='$id'";
$loesch = mysql_query($loeschen);
{


$aendern = mysql_query ($db, "UPDATE BW_Customer_Daten SET bg_bild='$bg_bild', hintergrund_farbe='$hintergrund_farbe', textfeld_farbe='$textfeld_farbe', text_farbe='$text_farbe', hyperlink_farbe='$hyperlink_farbe' WHERE id='$id'");
$geaendert = mysql_query($aendern);
{

$abfrage = "SELECT * FROM BW_Customer_Daten WHERE id = $id";
$ergebnis = mysql_query ($abfrage);
while($row = mysql_fetch_object($ergebnis))
{

?>

<form action="http://xxx/shop/index.php/kundenwebseite/vorschau.html?id=<?PHP echo $id; ?>" method="POST" >


value="<?php echo $textfeld_farbe ?>" />
 
item: Ein Tipp vornweg. Arbeite mit Einrücken, damit man auch sieht wo ein if() beginnt und wo er endet
Ich wollte das kurz machen - und siehe da. Was soll die Klammer in Zeile 17 und diejenige in Zeile 22?

item: Du solltest vom mysql_query auf mysqli_query umsteigen. Das Erstere wird demnächst abgeschaft.

item: Ich geh davon aus, dass die ID ein Nummerfeld ist. Dann solltest du es auch so behandeln: WHERE id=$id

Grundsätzlich sehen die SQLs icht auf den ersten Blick falsch aus. Aber es können mehree Sachen zu deinem nicht weiter detailiert erklärtem Problem führen
1) Der Scriptdurchlauf kommt nie zum Query. Mit diesen komischen Klammern würde mich das nicht wundern
2) Der Durchlauf kommt da vorbei, aber die $id ist nicht abgefüllt. Ergibt keinen Fehler, Macht den Update aber genau auf 0 Zeilen

Um Fehler mit PHP&MySQL-Queries zu finden, habe ich vor einiger Zeit mal ein Tutorial geschrieben: http://wiki.yaslaw.info/dokuwiki/doku.php/php/tutorials/debugmysqlqueries
 
Um Yaslaws Sicherheitshinweis nochmals aufzugreifen:

Du fügst externe Daten (hier: von $_POST) einfach in SQL Queries ein! Dein Code ist ein Paradies für jedwede SQL-Injection-Attacke!
 
Zurück