probleme mit einer $variable

dempf

Mitglied
zuerrst mal den quellcode:



$eintrag_ds = holeDS2( "eintraege", "id", "$id");


if ( $nachricht == "" )
{
aktualisiereEintrag($form[id], $form[name],
$form[location], $form[hp],
$form[mail] );
header("Location: vieweintraege.php");
exit;
}
}
else
{
$form = $eintrag_ds;
}


function aktualisiereEintrag( $id, $name, $location, $hp, $mail )
{
global $link;
$query = "UPDATE eintraege set name='$name', location='$location',
hp='$hp', mail='$mail'
WHERE id='$id' ";
$ergebnis = mysql_query( $query, $link );
if ( ! $ergebnis )
die ( "aktualisiereEintrag update error: ".mysql_error() );
}



ich sollte $id oder $form[id], $id übergeben.

Ich habe
$id und $form[id] mit einer print ausgabe überprüft und es ging.

Habe auch noch überprüft ob das Update klappen würde, und zwar habe ich einfach eine zahl anstelle von
$id geschrieben und das ging auch.

Meine Frage: Wiso niehmt
$id meine variable $id oder $form[id] nicht an?

gruess Dempf

 
Versuchs mal damit

$form['id']

Ich denke, das nur die Quotes fehlen. Versuche generell Quotes bei $variable['name'] zu verwenden. Sonst kommt es mitunter zu seltsamsten Fehlern.

Hmm wo ich noch einmal über das Script geschaut habe: Woher kommt $id?
Eventuelle müsstest Du $_GET['id'] oder $_POST['id'] verwenden falls Du $id über ein Formular oder die URI übergibst, wenn ein aktuelleres PHP auf dem Server ist, ist nämlich register globals = off. Das ist eine Sicherheitsoption die für ein wenig mehr Sicherheit in PHP-Scripts sorgt.
 
Zuletzt bearbeitet:
habe es nun so versucht:

aktualisiereEintrag($form['id'], $form[name],
$form[location], $form[hp],
$form[mail] );



function aktualisiereEintrag( $id, $name, $location, $hp, $mail )
{
global $link;
$query = "UPDATE eintraege set name='$name', location='$location',
hp='$hp', mail='$mail'
WHERE id='$id'";
$ergebnis = mysql_query( $query, $link );
if ( ! $ergebnis )
die ( "aktualisiereEintrag update error: ".mysql_error() );
}

klappte jedoch auch nicht.

habe es dan noch so versucht:

$id1 = $_GET['id'];

WHERE id='$id1'";

klappte aber auch nicht.

zu deiner frage: Die ID kommt von der url ( updateeintrag.php?id=60)

1.Datei = updateeintrag.php ( dort ist alles drin was ich hier bis jetzt geschrieben habe)
2.Datei = vieweintraege.php ( dort hole ich die einträge und verlinke sie demendsprechend. also eintrag mit der ID 1 = updateeintrag.php?id=1)

gruess dempf
 
PHP:
$query = "UPDATE
                 eintraege 
               SET
                 name='".$name."',
                 location='".$location."',
                 hp='".$hp."',
                 mail='".$mail."'
               WHERE 
                 id='".$id."'";
und die ID per GET auslesen, wie du es bereits versucht hast.

MfG
 
habe ich versucht:

$id1 = $_GET['id'];

function aktualisiereEintrag( $id, $name, $location, $hp, $mail )
{
global $link;
$query = "UPDATE eintraege SET
name='".$name."', location='".$location."',
hp='".$hp."', mail='".$mail."'
WHERE id='".$id1."'";
$ergebnis = mysql_query( $query, $link );
if ( ! $ergebnis )
die ( "aktualisiereEintrag update error: ".mysql_error() );
}

ging aber auch nicht.

gruess dempf

ps. habe $id1 auch wieder mit einer print ausgabe überprüft und das ging.
 
Du mußt alle deine Variablen mit $_GET['name'] versehen, falls die alle mit Get übergeben werden. Bei register_globals = off wird nicht viel anderes funktionieren, außerdem isses auch noch sauber programmiert :)
 
also, register_globals ist auf on. ich benutze php4, könnte aber auch jeder zeit auf php5 umsteigen.

es ist gar nicht nötig die variablen mit
$_GET['name'] zu versehen, denn:


$eintrag_ds = holeDS2( "eintraege", "id", "$id")

das klappt ja, also hat $id ja auch einen richtigen wert.
ich habe das ganze auch mit einer print ausgabe geprüft und es hat geklappt.
genau daselbe auch mit
$form['id'].

das problem ist nur:

$query = "UPDATE eintraege SET
name='".$name."', location='".$location."',
hp='".$hp."', mail='".$mail."'
WHERE id='".$id."'";

das
$id beim update nicht angenomen wird.

habe auch noch geprüft ob das update überhaupt geht und das tut es.

den ich habe anstad $id einfach ne zahl genommen, und das klappte.
 
Deine $id scheint ja eine integer zu sein. Dann lass mal die einfachen Anführungszeichen um Deine $id bei der WHERE id= $id weg.
 
benax hat gesagt.:
Deine $id scheint ja eine integer zu sein. Dann lass mal die einfachen Anführungszeichen um Deine $id bei der WHERE id= $id weg.

Mann, ick gloob icke hev Tomaten uffe Augen, sorry. Benax hat absolut recht.
Wenn eine normale Ausgabe per print funktioniert, aber das Query nicht .. sollte es eigentlich am Query liegen. Eingerostetes PHP-Gedächtnis in Wallung bring.

Ein SQL-Query wird als Integer id=zahl übergeben.
Ein String wird per id='string' übergeben.
Ein SQL-Query ist sehr wählerisch und moniert jeglichen Fehler bei "- und '-Verwechslungen.

Das Query sollte (eigentlich) so funktionieren:

PHP:
$query = "UPDATE eintraege SET
name='".$name."', location='".$location."',
hp='".$hp."', mail='".$mail."'
WHERE id=".$id."";

Hmm eine Fehlerabfrage in Deiner DB-Klasse wäre nicht schlecht. Ich denke mal, das Mysql eine hilfreiche Fehlermeldung ausgegeben hat. :)

P.S.: Ich sollte mich doch eher morgens/tagsüber an solche Dinge setzen ... dann übersehe ich nicht die Hälfte.
 
Zuletzt bearbeitet:
abe es so versucht:

PHP:
function aktualisiereEintrag($name, $location, $hp, $mail )
  	{
  	global $link;
  	  $query = "UPDATE eintraege SET
  	name='".$name."', location='".$location."',
  	hp='".$hp."', mail='".$mail."'
  	WHERE id=".$id.""; 
  	$ergebnis = mysql_query( $query, $link );
  	if ( ! $ergebnis )
  		die ( "aktualisiereEintrag update error: ".mysql_error() );
  	}

nun bringt er mir dieses feler meldung:

aktualisiereEintrag update error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4

habe nun noch mermals abgeändert und versucht, doch ich bin nicht auf die lösung gekommen.
 
Zurück