Kleiner Fehler aber wo... (mySQL UPDATE)

SonMiko

Erfahrenes Mitglied
Hi,
ich hab Probleme mit meinem Code...
Jedes Mal wenn ich ein Feld editiere, und dann auf Absenden klicke,
erscheint in der Tabelle nichts mehr. Die Werte werden anstatt geändert - einfach mit falschen bzw-> KEINEN Inhalten gefüllt.
Hat Jemand eine Idee?

Bitte lasst die Kommentare zum Thema richtige HTML Formatierung unter PHP.
Ihr habt natürlich recht damit, aber es tut hier nicht viel zur Sache momentan, und ich werde zum ENDE meiner Arbeit alles noch ein wenig verbessern und "wellformen".

Code:
case "bearbeiten":
$sqledit="SELECT * FROM user WHERE ID='".$checkboxid."'";
$resultedit = mysql_query($sqledit);
$zeilenedit = mysql_num_rows($resultedit);
While($rowedit = mysql_fetch_assoc($resultedit)){
echo <<<EDITUSERb
<tr><td><input name="useredit" type="text" value="{$rowedit['user']}" size="12" maxlength="255">
<input name="passedit" type="text" value="{$rowedit['pass']}" size="12" maxlength="255">
<input name="emailedit" type="text" value="{$rowedit['email']}" size="12" maxlength="255">
<input name="rechteedit" type="text" value="{$rowedit['rechte']}" size="12" maxlength="255"></td>
EDITUSERb;
//if(isset($_POST['useredit']) && isset($_POST['passedit']) && isset($_POST['emailedit']) && isset($_POST['rechteedit'])){
$sqlupdate="UPDATE user SET user='".$_POST['useredit']."', pass='".$_POST['passedit']."', email='".$_POST['emailedit']."', rechte='".$_POST['rechteedit']."' WHERE ID='".$checkboxid."'";
mysql_query($sqlupdate);
//}
}

Gruß,

Mike
 
Versuch mal folgendes Query:

PHP:
$sqlupdate = "UPDATE 
  user 
SET 
  user = '{$_POST['useredit']}', 
  pass = '{$_POST['passedit']}', 
  email='{$_POST['emailedit']}', 
  rechte='{$_POST['rechteedit']}' 
WHERE 
  ID = '$checkboxid' ";
 
Ne geht auch nicht...
Hier mal der ganze Code

Also der, ders rausfindet kriegt echt nen Oscar...

Kann es daran liegen das ich ein Formular in einem Formulas habe?

PHP:
<?php
dbconnect($dbadress, $dbuser, $dbpass, $dbase);
$sql="SELECT * from user ORDER BY ID";
$result = mysql_query($sql);
$zeilen = mysql_num_rows($result);
echo <<<SHOWUSER
<table border="1" cellspacing="1" cellpadding="0">
<form action="{$_SERVER['PHP_SELF']}" method="post" name="showuser">
<tr><td>ID</td><td>Benutzer</td><td>Passwort</td><td>Email-Adresse</td><td>Rechte</td><td>Selektion</td></tr>
SHOWUSER;

While($row = mysql_fetch_assoc($result)){
echo "<tr><td>$row[ID]</td><td>$row[user]</td><td>$row[pass]</td><td>$row[email]</td><td>$row[rechte]</td><td><input name=selektion[] type=checkbox value=$row[ID]></td></tr>";
}

echo <<<OPERATION
<tr><td colspan="6"><select name="operation">
<option value="">-----</option>
<option value="loeschen">Loeschen</option>
<option value="bearbeiten">Bearbeiten</option>
</select>
<input name="absenden" value="Operation ausführen" type="submit"></td></tr>
OPERATION;

echo "<tr><td colspan=6>";

echo <<<EDITUSER
<table border="0" cellspacing="1" cellpadding="0" width="500">
<form action="{$_SERVER['PHP_SELF']}" method="post" name="edituser">
EDITUSER;

//Checkboxen auslesen
$anzsel=$_POST['selektion'];
$operation=$_POST['operation'];
if($anzsel>0){
foreach($anzsel as $checkboxid){ 
//Nach dem erfassen der Werte, Operation ausfuehren
switch($operation){
case "loeschen":
$sqldelete = "DELETE FROM user WHERE ID='".$checkboxid."'";
if(@mysql_query($sqldelete) or die("Das Loeschen der Datensaetze konnte nicht durchgefuehrt werden")){
echo "Datensatz ".$checkboxid." wurde erfolgreich geloescht. Daten werden neu geladen...<br>";
echo '<meta http-equiv="refresh" content="3">';
}
break;
case "bearbeiten":
$sqledit="SELECT * FROM user WHERE ID='".$checkboxid."'";
$resultedit = mysql_query($sqledit);
$zeilenedit = mysql_num_rows($resultedit);
While($rowedit = mysql_fetch_assoc($resultedit)){
echo <<<EDITUSERb
<tr><td><input name="useredit" type="text" value="{$rowedit['user']}" size="12" maxlength="255">
<input name="passedit" type="text" value="{$rowedit['pass']}" size="12" maxlength="255">
<input name="emailedit" type="text" value="{$rowedit['email']}" size="12" maxlength="255">
<input name="rechteedit" type="text" value="{$rowedit['rechte']}" size="12" maxlength="255"></td>
EDITUSERb;
//if(isset($_POST['useredit']) && isset($_POST['passedit']) && isset($_POST['emailedit']) && isset($_POST['rechteedit'])){
$sqlupdate="UPDATE user SET user='".$_POST['useredit']."', pass='".$_POST['passedit']."', email='".$_POST['emailedit']."', rechte='".$_POST['rechteedit']."' WHERE ID='".$checkboxid."'";
mysql_query($sqlupdate);
//}
}
break;
case "";
echo "Fuer den Datensatz ".$checkboxid." wurde keine Operation ausgewaehlt<br>";
}
}
}
else if($anzsel==0){
echo "Es wurde kein Datensatz ausgewaehlt";
}
if($operation=="bearbeiten"){
echo '<tr><td><input name="absendenedit" value="Aktualisieren" type="submit"></td></tr></form></table>';
}
else{
echo '</form></table>';
}
echo "</td></tr>";
echo "</form></table>";
dbclose();
?>

Wie gesagt, alles klappt.
Bis auf das modifizieren der Datensätze.
Was mir da auffällt, wenn ich modifizieren will, bekomme ich bei den Selektierten Feldern alle Datensätze angezeigt, wenn ich dann auf Aktualisieren klicke (mit oder ohne Änderung), so dass ein Datensatz erneuert werden soll, steht in der Tabelle nur noch ein NULL Wert, also keine 0 und kein Wert sondern einfach Nichts, Garnichts, Niente :-).
Nuuur nicht bei Rechten. In der Tabelle ist es ein Integerfeld, dort bleibt der URWERT (beim anlegen der User) erhalten, will ich den jedoch ändern geht es auch nicht...

Versteht das einer
 
Der Fehler muss was mit den INPUT FELDERN zu tun haben, nämlich das Sie alle gleich heissen :-|...
Was mache ich jetzt...
 
Ersetzte mal bitte folgende Zeile:

PHP:
mysql_query($sqlupdate);

durch

PHP:
mysql_query($sqlupdate) or die(mysql_error());

Und schreibe welcher Fehler ausgegeben wird.
 
Es liegt an den Feldern...
Ich müsste mit einer Schleife die Werte eintragen glaube ich.

Aber ich probier kurz was du sagst um dir den Fehler zu nennen...
Ich wette es wird keinen geben, wenn eine Operation wird ja vorgenommen,
nur eben die falsche, da die Werte aufgrund der Felder, sich selber überschreiben...
 
Hast du einfach mal versucht die POST-Variablen auszugeben?

Ich denke der Fehler liegt an den (verschachtelten :-) )Formularen.
 
Hi,
also es wird kein Fehler ausgegeben...

Variablen ausgeben geht auch nicht :-|...
Hmpf... Das Form in Form scheint es zu sein, wie du sagst.
Aber mal ehrlich, geh mal den Code durch, und sage mir,
KANN es klappen, wenn ich mehrere Felder selektiert habe um diese zu bearbeiten,
kann es sein, das es dann klappt wenn ich auf absenden klicke?

Aber dein Gedanke ist in jedem Fall auch wichtig.
Ich stehe vor einem Rätsel/ Problem...
 
Zurück