Hoi!

Ik heb via een boek(PHP keuzemodule programmeren van Peter Kassenaar) geprobeerd om een Update bewerking uit te voeren. Alleen het werkt niet.

De 3 waardes die als eerst in de form worden geladen doen het, alleen als ik daar in iets verander en dan op de submit butten klik, dan zegt hij wel succesvol bijgewerkt, maar heeft hij niks veranderd. Wie o wie weet de oplossing?!

De code:

<?
$server = "localhost:3307";
$user = "xxxx";
$wachtwoord = "xxxx";
$database = "voetbal";

$db=mysql_connect($server, $user, $wachtwoord);
mysql_select_db($database, $db);

if (isset($_POST["bevestiging"])){
	$query="UPDATE statistiek SET
	voornaam = '". $_POST["voornaam"] ."',
	achternaam = '". $_POST["achternaam"] ."',
	email = '". $_POST["email"] ."',
	WHERE spelers_id='" .$_POST["id"] ."'";
	mysql_query($query);
	echo "De gegevens zijn bijgewerkt";
}
else{
$query="SELECT * FROM statistiek WHERE spelers_id='" .$_GET["id"] ."'";
$resultaat = mysql_query($query);
while (list($id, $voornaam, $achternaam, $email) = mysql_fetch_row($resultaat)){
	$vn=$voornaam;
	$an=$achternaam;
	$em=$email;
}
}
?>
<form action="<?php echo($_SERVER["PHP_SELF"]);?>" method="post"/>
<input type="hidden" name="bevestiging" value="1" />
<input type="hidden" name="id" value="<?php echo $_GET["id"];?>" />
Voornaam: <input type="text" name="voornaam" value="<?php echo $vn;?>" size="30" />
Achternaam <input type="text" name="achternaam" value="<?php echo $an;?>" size="30" />
Email <input type="text" name="email" value="<?php echo $em;?>" size="30" />
<hr />
<input type="submit" value="Gegevens bijwerken!" />
</form>

Alvast bedankt!
Je post is nu niet echt leesbaar. Pas je post even aan en gebruik [ignore]
 en 
[/ignore] tags om je code heen. Om php code zet je uiteraard dit:<?php en ?>Gebruik je knop om dit te doen.

SanThe.
Excuses, ik hoop dat het zo beter is ;-)
Zoiets zou ik er ongeveer van maken.

<?php
$server = "localhost:3307";
$user = "xxxx";
$wachtwoord = "xxxx";
$database = "voetbal";

$db=mysql_connect($server, $user, $wachtwoord);
mysql_select_db($database, $db);

if (isset($_POST["bevestiging"]))
{
    $query="UPDATE statistiek SET
    voornaam = '". mysql_real_escape_string($_POST["voornaam"]) ."',
    achternaam = '". mysql_real_escape_string($_POST["achternaam"]) ."',
    email = '". mysql_real_escape_string($_POST["email"]) ."'
    WHERE spelers_id='" .mysql_real_escape_string($_POST["id"]) ."'";
    $res = mysql_query($query);
    if($res and mysql_affected_rows() > 0)
    {
	    echo "De gegevens zijn bijgewerkt";
    }
    else
    {
	    echo 'UPDATE ERROR';
    }
}
else
{
	$query="SELECT * FROM statistiek WHERE spelers_id='" .mysql_real_escape_string($_GET["id"]) ."'";
	$resultaat = mysql_query($query);
	if($resultaat and mysql_num_rows($resultaat) > 0)
	{
		list($id, $voornaam, $achternaam, $email) = mysql_fetch_row($resultaat);
	}
	else
	{
		echo 'SELECT ERROR';
	}
?>
	<form action="<?php echo($_SERVER["PHP_SELF"]);?>" method="post"/>
	<input type="hidden" name="bevestiging" value="1" />
	<input type="hidden" name="id" value="<?php echo $_GET["id"];?>" />
	Voornaam: <input type="text" name="voornaam" value="<?php echo $voornaam;?>" size="30" />
	Achternaam <input type="text" name="achternaam" value="<?php echo $achternaam;?>" size="30" />
	Email <input type="text" name="email" value="<?php echo $email;?>" size="30" />
	<hr />
	<input type="submit" value="Gegevens bijwerken!" />
	</form>
<?php
}
?>
Voor de WHERE hoort geen ",", dit is volgens mij de reden dat de query failt.

Daarnaast nog wat tips:
1) Zet aan het eind van de select query "LIMIT 0,1" aangezien je maximaal 1 resultaat wilt.
2) Sla het resultaat van mysql_query op bij de update query. Zet er vervolgens dit onder:

<?php
$resultaat = mysql_query($query);
if (!$resultaat) {
    die('Query failed: ' . mysql_error());
}
?>

3) Het uitlezen van het resultaat (regel 22) is heel onlogisch. Waarom overigens extra variabelen aanmaken en waarom afkortingen gebruiken? Kijk eens naar deze pagina: http://id.php.net/manual/en/function.mysql-fetch-assoc.php.

Succes!
Je controleert nergens of de query wel lukt, je kunt wel een leuke echo geven maar dat geeft je nog geen zekerheid.

probeer zo iets eens:

<?php
if(mysql_query($query))
{
echo 'Gegevens bijgewerkt';
}
else
{
echo 'Er is iets mis gegaan.';
//echo mysql_error();
}
?>
Het werkt SanThe! Hartstikke bedankt :D

Ook de andere heren bedankt!

Reageren