Undefined index...****?

Alph4

Mitglied
Hallo,
und zwar hab ich folgendes problem.
Ich hab möchte mir ein Formular erstellen womit ich die Datensätze in der SQL ändern kann das sieht wie folgt aus:

PHP:
$sql = "UPDATE $tabelle SET test = '".$_POST['test'].'", WHERE id = '".$_POST['id']."'";

als fehler bekomm ich dann:

Notice: Undefined index: test in D:\Web Server\xampp\htdocs\versuch\test.php on line 5

Selbst wenn ich `test` = '".$_POST['test'].'"......... mache kommt das selbe.

kann das sein das der Webserver auf meinem pc nicht richtig konfiguriert ist bzw. etwas ausgeschlaten sein könnte?
 
Das Notice ist nur ein Hinweis das es den Index "test" nicht im Post-Array gibt. Hast du denn auch ein Feld in deinem Formular mit namen "test"?

und deinen Query würd ich so schreiben:
PHP:
$sql = "UPDATE ".$tabelle." SET test = '".$_POST['test']."', WHERE id = ".$_POST['id'];
Dann ist er auch Syntaktisch richtig.
 
Zuletzt bearbeitet:
Zu dem wäre noch die Frage, ob das Formular überhaupt mit method="post" übertragen wird, oder evtl. gar keine Angabe dazu gemacht wurde (oder "get", was aufs gleiche raus kommt).
 
Ich stimme meinen Vorrednern zu, ich mache dazu oft:
PHP:
print_r($yourArray);
Damit sieht man alle vorhandenen Einträge.

Außerdem solltest du unbedingt die Daten vor Einfug in das SQL-Query escapen/unschädlich machen!
Siehe mein Tutorial: Sicherheit in PHP-Codes schaffen
 
Mal abgesehn davon was hier schon geschrieben wurde, stimmt deine Zeichensetzung im Query hier einfach nicht.
PHP:
// $sql = "UPDATE $tabelle SET test = '".$_POST['test'].'", WHERE id = '".$_POST['id'].""; 
// die Reihenfolge der Anführungszeichen um $_POST['test'] stimmen so nicht
// Auch fehlt bei $_POST['id'] ein weiteres einfaches Anführungszeichen
$sql = "UPDATE $tabelle SET test = '".$_POST['test']."' WHERE id = '".$_POST['id']."'";
// Das Komma vor WHERE ist hier überflüssig und kann auch entfernt werden
Kleiner Tipp, durch einen entsprechend guten Editor wird der Code so gut gehighlightet, dass man solche einfachen Fehler relativ schnell entdecken kann.
 
Also es existiert ein Formular mit einem Feld test wenns nur das wäre...
Ich hatte vorher auch das problem das ich als ich eine while schleife gebastelt hatte das er mir den selben fehler ausgegeben hat obwohl die richtig war da musste ich die arrays von $t[test] in $t["test"] umwandeln dann ging es... aber ich kann in einem SQL Syntax den Test ja nicht in anführungszeichen setzen deshalb bin ich da leicht überfragt...=(
 
just-click und ich haben dir doch den richtigen SQL-Query geschrieben.
Und was steht im Formular im Feld "Test"?
 
das formular sie so aus:

PHP:
<?php

include("config.php");

$anfrage = "SELECT * from $tabelle WHERE `test`= '".$_GET['test']."'";
$query = mysql_query($anfrage, $con);


$b = mysql_fetch_array($query)
?>

<form action="?action=versuch/testedit" method="POST">
<table border="0" width="43%" cellspacing="0" cellpadding="0">
<tr>
<td width="158">ID:</td>
<td>
<p align="center"><?php echo $b["id"]; ?></td>
</tr>
<tr>
<td width="158">Aktueller test:</td>
<td><?php echo $b["test"]; ?></td>
</tr>
<tr>
<td width="158">Ändern Test:</td>
<td>
<font size="1">
<input type="password" name="test" value="" size="20"></font></td>
</tr>

und das ist die datei testedit.php

PHP:
<?php
include("config.php");

$sql = "UPDATE ".$tabelle." SET test='".$_POST['test']."', WHERE id='".$_POST['id']."'";
if (mysql_query ($sql, $con))
{
	echo "Daten Erfolgreich editiert";
}
else
{
	echo "Fehler beim editieren!";
}
?>

also das auslesen funktioniert ohne probs bekomm auf dem formular die die angaben die in der SQL sind ausgelesen kann nur nicht UPDATE machen
 
Ein Formular muss Inputfelder beinhalten damit du was als POST übergeben kannst.
zb:
Code:
<tr>
<td width="158">ID:</td>
<td>
<input type="text" name="id" value="<?php echo $b["id"]; ?>" /></td>
</tr>
Ansosnten isses klar das dein POST-Array leer ist.
So wie es jetzt ist, wird nur dein Passwort im POST-Array gespeichert.
gib es dir doch vorher aus:
PHP:
echo "<pre>";
print_r($_POST);
echo "</pre>";

include("config.php");

$sql = "UPDATE ".$tabelle." SET pwd='".$_POST['pwd']."', anschr='".$_POST['anschr']."',plz='".$_POST['plz']."',ort='".$_POST['ort']."',mail='".$_POST['mail']."',WHERE kundennr='".$_POST['kundennr']."'";
if (mysql_query ($sql, $con))
{
    echo "Daten Erfolgreich editiert";
}
else
{
    echo "Fehler beim editieren!";
}
 
so ich bekomm:

Array
(
[id] => 1
[test] => 111
[SUBMIT] => Edit
)

Fehler beim editieren!

hab oben das falsche als erstes kopiert
und jetzt das
 
Zurück