Hallo, ik probeer een UPDATE uit te voeren maar dit lukt niet zo als het zou moeten....

Ik heb een formulier welke data uit de DB haalt, dit gaat goed... Als ik zeg Aanpassen dan moet hij een UPDATE script draaien, dit gaat gedeeltelijk goed...

Hij neemt de gegevens mee naar de pagina en dit krijg ik ook te zien... maar dan... dan doet hij niets....

Het zal ongetwijfeld heel eenvoudig zijn maar ik kom er niet uit...

Dit is het script wat het zou moeten uitvoeren...

Dus ik ga van " form1.php " naar " form2.php " waar hij dus wel de aanpassingen laat zien, ik wil deze tussen stap doen om de vraag te stellen weet je het zeker... dit hoeft opzicht niet maar vond ik wel handig....

waar gaat het mis ?!


<?php

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);

include ("db_config.php");

if (isset($_POST['opslaan']))
{

$naam = mysql_real_escape_string($_POST['naam']);
$datum = mysql_real_escape_string($_POST['datum']);
$sku = mysql_real_escape_string($_POST['sku']);
$reden = mysql_real_escape_string($_POST['reden']);
$optie = mysql_real_escape_string($_POST['optie']);
$ontvangen = mysql_real_escape_string($_POST['ontvangen']);
$land = mysql_real_escape_string($_POST['land']);
$afhaal = mysql_real_escape_string($_POST['afhaal']);
$afgerond = mysql_real_escape_string($_POST['afgerond']);
$note = mysql_real_escape_string($_POST['note']);

$sql = "UPDATE pakket SET

naam = '$naam',
datum = '$datum'
sku = '$sku',
reden = '$reden',
optie = '$optie'
ontvangen = '$ontvangen',
land = '$land',
afhaal = '$afhaal'
afgerond = '$afgerond',
note = '$note'

WHERE

id='".$_GET['id']."'";

$update = mysql_query($sql)or die(mysql_error());

}

?>
En aansluitend op mijn vorige post is de name normaal gesproken nooit POST.

Beiden moet je omdraaien.
Formulier wat alles ophaalt en de mogelijkheid geeft gegevens aan te passen...

[code]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml">;
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Notitie aanpassen</title>
<style type="text/css">
#bestellen table {
text-align: center;
}
</style>
<script type="text/javascript">
// Popup window code
function newPopup(url) {
popupWindow = window.open(
url,'popUpWindow','height=500,width=800,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes')
}
</script>
</head>
<body>
<?php
require_once 'db_config.php';

include 'menu.php';
?>
<br><br><br><br>
WERKT NOG NIET !

<?php

$sql = "
SELECT

*

FROM

pakket

WHERE id= ' ".$_GET['id']." '

";

?>
<br>
<center>
<table border='0'>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>

<?php

$result = mysql_query($query);


if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
while($row = mysql_fetch_assoc($res))
{

{

echo "<form action=http://www.####.nl/slijter/test.php method=opslaan>\n";

echo "<tr>\n";
echo "<td> </td>\n";
echo "<td><a href=JavaScript:newPopup('print.php?id=".$row["id"]."');>Print</a><td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td></td>\n";
echo "<td><input type='hidden' name='id' value=".$row["id"]."></td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Gemeld:</td>\n";
echo "<td><input type='text' name='datum' value=".$row["datum"]."></td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Bestelnummer:#</td>\n";
echo "<td><input type='text' name='sku' value=".$row["sku"]."></td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Naam:</td>\n";
echo "<td><input type='text' name='naam' value=".$row["naam"]."></td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Optie:</td>\n";
echo "<td><select name=land><option value=".$row["land"]." >".$row["land"]."</option>
<option value=Nederland >Nederland</option>
<option value=Belgie >Belgie</option>
<option value=Duitsland >Duitsland</option>
</select></td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Reden:</td>\n";
echo "<td><input type='text' name='reden' value=".$row["reden"]."></td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Afhaal datum:</td>\n";
echo "<td><input type='text' name='afhaal' value=".$row["afhaal"]."></td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Ontvangen:</td>\n";
echo "<td><input type='text' name='ontvangen' value=".$row["ontvangen"]."></td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Optie:</td>\n";
echo "<td><select name=optie><option value=".$row["optie"]." >".$row["optie"]."</option>
<option value=juiste >Juiste toezenden</option>
<option value=crediteren >Crediteren</option>
<option value=opgelost >Al opgelost</option>
<option value=Anders >Anders, zie mail</option>
</select></td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Afgerond:</td>\n";
echo "<td><input type='text' name='afgerond' value=".$row["afgerond"]."></td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Notitie:</td>\n";
echo "<td><textarea name='note' rows='5' cols='40' value=".$row["note"]."></textarea></td>\n";
echo "</tr>\n";

}
}
?>
</table>
<input type="submit" name="POST" value="opslaan">
</form>
</center>
</body>
</html>

[\code]

Formulier wat het zou moeten aanpassen

[code]
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);

include ("db_config.php");

if ($_SERVER['REQUEST_METHOD']=="POST")
{
//alle namen uit de post ophalen en elk in een aparte variable zetten.

$naam = mysql_real_escape_string($_POST['naam']);
$datum = mysql_real_escape_string($_POST['datum']);
$sku = mysql_real_escape_string($_POST['sku']);
$reden = mysql_real_escape_string($_POST['reden']);
$optie = mysql_real_escape_string($_POST['optie']);
$ontvangen = mysql_real_escape_string($_POST['ontvangen']);
$land = mysql_real_escape_string($_POST['land']);
$afhaal = mysql_real_escape_string($_POST['afhaal']);
$afgerond = mysql_real_escape_string($_POST['afgerond']);
$note = mysql_real_escape_string($_POST['note']);

$sql = "UPDATE pakket SET

naam = '$naam',
datum = '$datum',
sku = '$sku',
reden = '$reden',
optie = '$optie',
ontvangen = '$ontvangen',
land = '$land',
afhaal = '$afhaal' ,
afgerond = '$afgerond',
note = '$note'

WHERE

id='".$_GET['id']."'";

$update = mysql_query($sql)or die(mysql_error());

}

?>
<br>
<center>
<form action=" <?=$_SERVER['PHP_SELF']?> " method="POST">
<table border='0'>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>

<?php

echo "<tr>\n";
echo "<td>Gemeld:</td>\n";
echo "<td>".$_GET["datum"]."</td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Bestelnummer:#</td>\n";
echo "<td>".$_GET["sku"]."</td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Naam:</td>\n";
echo "<td>".$_GET["naam"]."</td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Land:</td>\n";
echo "<td>".$_GET["land"]."</td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Reden:</td>\n";
echo "<td>".$_GET["reden"]."</td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Afhaal datum:</td>\n";
echo "<td>".$_GET["afhaal"]."</td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Ontvangen:</td>\n";
echo "<td>".$_GET["ontvangen"]."</td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Keuze:</td>\n";
echo "<td>".$_GET["optie"]."</td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Optie:</td>\n";
echo "<td>".$_GET["optie"]."</td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Afgerond:</td>\n";
echo "<td>".$_GET["afgerond"]."</td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td>Notitie:</td>\n";
echo "<td>".$_GET["note"]."</td>\n";
echo "</tr>\n";

?>
</table>
<input type="submit" name="POST" value="opslaan">
</form>
</center>
[\code]
- Echo is niet nodig per regel. ;-)
Verder moet je POST gebruiken voor de waardes die je toont.

- name="POST" is niet logisch.
- MySQL-functies zijn verouderd.
- Nog steeds SQL-injectie nog steeds mogelijk.
Dus ik moet .$_POST["note"]. gebruiken ??

die injectie maak ik me geen zorgen om... dit is puur een hulpje waarmee we dingen kunnen bijhouden, elke dag wordt dit leeg gemaakt..

het script stamt nog uit de tijd dat het nieuw was dus er zal idd al wel een en ander veranderd zijn... wil het graag werkend krijgen en daarna gaan verdiepen in nieuwe php .... dit heeft even voorrang zeg maar :)
Roland Reijerse op 24/01/2016 20:06:45

Dus ik moet .$_POST["note"]. gebruiken ??

die injectie maak ik me geen zorgen om... dit is puur een hulpje waarmee we dingen kunnen bijhouden, elke dag wordt dit leeg gemaakt..

Totdat je opeens een ' gebruikt.
Gewoon toepassen, het beschermt niet alleen tegen hacking.
Moet je wel weten hoe dat moet :)

vandaar dat ik nu eerst de update voor elkaar wil krijgen en dan gaan kijken naar de nieuwe php regels want de gehele code moet op de schop maar daar heb ik geen tijd voor nu.... het geen wat ingevoerd word is naam, bestelnummer, datum, land, reden dit zijn redelijk vaste gegevens en allen in het vak note zou een ' kunnen komen te staan.... daarbij ben ik degene dit het invult :P dus die kans is gelijk enorm klein! ik snap zeker dat dit moet maar zo als ik al zei moet alles op de schop :(


Toevoeging op 24/01/2016 20:14:52:

Dit update script is trouwens een aanvulling op een bestaand iets vandaar ook dat straks alles op de schop moet


Toevoeging op 24/01/2016 20:25:44:

Eigenlijk zou ik vanaf de pagina order.php?id='id_uit_db' alleen het script kunnen uitvoeren die zorgt dat alles geüpdatet word via de pagina ( nu nog ) test.php

hiervoor zou ik genoeg moeten hebben aan deze gegevens... Toch ?

<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);

include ("db_config.php");

if ($_SERVER['REQUEST_METHOD']=="POST")
{

$naam = mysql_real_escape_string($_POST['naam']);
$datum = mysql_real_escape_string($_POST['datum']);
$sku = mysql_real_escape_string($_POST['sku']);
$reden = mysql_real_escape_string($_POST['reden']);
$optie = mysql_real_escape_string($_POST['optie']);
$ontvangen = mysql_real_escape_string($_POST['ontvangen']);
$land = mysql_real_escape_string($_POST['land']);
$afhaal = mysql_real_escape_string($_POST['afhaal']);
$afgerond = mysql_real_escape_string($_POST['afgerond']);
$note = mysql_real_escape_string($_POST['note']);

$sql = "UPDATE pakket SET

naam = '$naam',
datum = '$datum',
sku = '$sku',
reden = '$reden',
optie = '$optie',
ontvangen = '$ontvangen',
land = '$land',
afhaal = '$afhaal' ,
afgerond = '$afgerond',
note = '$note'

WHERE

id='".$_GET['id']."'";

$update = mysql_query($sql)or die(mysql_error());

}

?>
Gebruik gewoon mysql_real_escape_string op je $_GET['id']
Dus zo dan ?

<?

WHERE

id=mysql_real_escape_string($_GET['id']);

?>

Toevoeging op 24/01/2016 20:32:52:

dan krijg ik een dikke foutmelding te zien


Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/moto/domains/###.nl/public_html/slijter/test.php on line 36

en dat is dan die regel
Let op je quotes ;-)

id='".mysql_real_escape_string($_GET['id'])."'
Als php makkelijk was geweest had het ook voetbal gehete he :)

maar met deze oplossing krijg ik

Parse error: syntax error, unexpected '.', expecting ')' in /home/moto/domains/###.nl/public_html/slijter/test.php on line 36 dus zal ik de ' maar ff weghalen...

Reageren