Undefinierter Index fehler beim UPDATE

Nur so am Rande
Anstelle von zusammensetzen, kann man auch die Complex (Curly) syntax verwenden.

Probiere mal den folgenden Code und du wirst verstehen
PHP:
$foo = 'foo';
echo "Hallo $foobar<br />";
echo "Hallo {$foo}bar<br />";
Zudem kann innerhalb von {} direkt auf Array-Elemente oder Objekt-Properties zugegriffen werden
PHP:
$array = array('id_0'=>'foo', 'id_1'=>'bar');
$object = (object) $array;
echo "Hallo {$array['id_0']}{$object->id_1}<br />";
//geht sogar mit " anstelle von ' für den Indexname
echo "Hallo {$array["id_0"]}{$object->id_1}<br />";
//und somit kann der Index des Arrays wieder aus einem zusammengesetzten String bestehen
$id = 0;
echo "Hallo {$array["id_{$id}"]}{$object->id_1}<br />";
Und wenn man sich die {} einfach angewöhnt (den falsch sind sie nie), muss man sich keine Gedanken mehr machen, damit solche Fehler wie im ersten Beispiel passieren.
Zudem ists mMn besser lesbar, aber das ist Geschmacksachse



In deinem Fall also einfach immer die {} verwenden und man muss sich keine Sorgen mehr machen ob der Array innerhalb des Strings geparst wird oder nicht.
PHP:
$sql = "SELECT * FROM benutzerdaten WHERE Kundennummer = '{$_SESSION[user_kundennummer]}'";
 
hallo ich habs mal jetzt ganz anders gestalltet

so schauts jetzt aus aber ich hab 3 probleme
1. die daten werden nicht upgedatet
2. bekomm eine fehler meldung "Notice: Undefined index: doSave "
3. der fehler msg sagt mir immer das die Änderungen Gespeicher wurden sind obwohl sie nicht gespeichert werden :(
hier das script
diese code wird am anfang der seite includet
PHP:
page_protect();
 
$err = array();
$msg = array(); 

if($_POST['doSave'] == 'Speichern')  
{

foreach($_POST as $key => $value) {
	$data[$key] = filter($value);
}


mysql_query("UPDATE users SET
			`addrese` = '$data[adresse]',
			`nummer` = '$data[nummer]',
			`plz` = '$data[plz]',
			`ort` = '$data[ort]',
			`user_email` = '$data[user_email]',
			`web` = '$data[web]',
			`tel` = '$data[tel]',
			`fax` = '$data[fax]'
			 WHERE id='$_SESSION[user_id]'
			");

//header("Location: mysettings.php?msg=&Auml;nderungen Gespeichert");
$msg[] = "&Auml;nderungen Gespeichert";
 }

$rs_settings = mysql_query("select * from users where id='$_SESSION[user_id]'");


hier der fehler code

PHP:
	if(!empty($err))  {
	   echo "<div class=\"msg\">";
	  foreach ($err as $e) {
	    echo "* Error - $e <br>";
	    }
	  echo "</div>";	
	   }
	   if(!empty($msg))  {
	    echo "<div class=\"msg\">" . $msg[0] . "</div>";

	   }
	  ?>


der html code
HTML:
          <form action="" method="post" name="myform" id="myform">
          <tr>
            <td width="349" style="text-align:center;">Kontakt :</td>
            <td width="455" style="text-align:left;"><input name="user_name" type="text" id="user_name" value="<?php echo $row_settings['user_name']; ?>" size="43"></td>
          </tr>
                    <tr>
            <td width="349" style="text-align:center;">Adresse / Nummer :</td>
            <td width="455" style="text-align:left;"><input name="adresse" type="text" id="adresse" value="<?php echo $row_settings['adresse']; ?>" size="35">
              <input name="nummer" type="text" id="nummer" value="<?php echo $row_settings['nummer']; ?>" size="4"></td>
          </tr>
                    <tr>
            <td width="349" style="text-align:center;">Plz / Ort :</td>
            <td width="455" style="text-align:left;"><input name="plz" type="text" id="plz" value="<?php echo $row_settings['plz']; ?>" size="4">
               <input name="ort" type="text" id="ort" value="<?php echo $row_settings['ort']; ?>" size="35"></td>
          </tr>
                    <tr>
            <td width="349" style="text-align:center;">Webseite :</td>
            <td width="455" style="text-align:left;"><input name="web" type="text" id="web" value="<?php echo $row_settings['web']; ?>" size="43"></td>
          </tr>
                    <tr>
            <td width="349" style="text-align:center;">E-Mail :</td>
            <td width="455" style="text-align:left;"><input name="user_email" type="text" id="user_email" value="<?php echo $row_settings['user_email']; ?>" size="43"></td>
          </tr>
                    <tr>
            <td width="349" style="text-align:center;">Telefon :</td>
            <td width="455" style="text-align:left;"><input name="tel" type="text" id="tel" value="<?php echo $row_settings['tel']; ?>" size="43"></td>
          </tr>
          <tr>
            <td width="349" style="text-align:center;">Fax :</td>
            <td width="455" style="text-align:left;"><input name="fax" type="text" id="fax" value="<?php echo $row_settings['fax']; ?>" size="43"></td>
          </tr>
          <tr>
            <td colspan="2" style="text-align:right;"><p>
              <input name="doSave" type="submit" id="doSave" value="Speichern">
            </p>
            <p>&nbsp;</p>
            <p>
            </p></td>
            </tr>
		</form>
und das zum abschluss
PHP:
<?php } ?>
 
Zuletzt bearbeitet:
Hallo:

zu 1. Hast du schon mal einen mysql_error() versucht?( mysql_query('UPDATE...') or die(mysql_error()) )?
zu 2. Eigentlich sagt diese Fehlermeldung doch aus das der Index in der besagten Array nicht vorhanden ist.
zu 3. Sicherlich macht er das, du prüfts ja auch nicht ob der Update erfogreich war, oder sehe ich da was nicht ^^
 
Mal mein Senf: SQL-Queries, die INSERT, UPDATE oder DELETE enthalten, können und sollten auch mit mysql_affected_rows() geprüft werden. Beispiel:

PHP:
$query = "UPDATE tabelle SET xyz='abc' WHERE id = $id";
mysql_query( $query ) or die( mysql_error() );

if( mysql_affected_rows() > 0 )
  echo "Update war erfolgreich.";
else
  echo "Update hat keine Änderungen vorgenommen.";
 
Zurück