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());

}

?>
Er missen een aantal komma's:

naam      = '$naam',
        datum     = '$datum'[b],[/b] 
        sku       = '$sku',
        reden     = '$reden',
        optie     = '$optie' [b],[/b]
        ontvangen = '$ontvangen',
        land      = '$land',
        afhaal    = '$afhaal' [b],[/b]
        afgerond  = '$afgerond',
        note      = '$note' 

Dank, die over het hoofd gezien inderdaad....

Maar dan nog niet hoor!

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

include ("db_config.php");

if (isset($_POST['opslaan']))
{
//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());

}

?>

Ik gebruik in het eerste formulier deze link om er te komen...

<form action=http://www.###.nl/slijter/test.php method=opslaan>

Wat hij laat zien als resultaat is...

http://www.###.nl/slijter/test.php?id=45&datum=24-01-2016&sku=100312345&naam=Roland&land=Nederland&reden=Geen&afhaal=Nog&ontvangen=Nee&optie=Nog&afgerond=Nee&note=asdfghjkl++dfghjkl&POST=opslaan

Ik zie hier ook dat hij achter de spatie niet mee neemt, dus reden = Geen moet zijn geen een maatgoed, eerst maar eens zorgen dat hij dit er wel in gaat zetten....
De method moet POST zijn.
Als ik dat aanpas dan krijg ik foutmeldingen... daarom staat hij op opslaan net als in de pagina die ik aanroep..

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

moet dan dan ook POST worden ?

Toevoeging op 24/01/2016 19:48:01:

ik krijg dan deze link... nl/slijter/test.php hij neemt de gegevens niet meer mee
Maar er van


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


Misschien je formulier hier ook even neerzetten.

Ja hij neemt de gegevens wel mee als je ze achter de url wilt hebben moet je method GET zijn
Controleren of een formulier is verstuurd via POST, kan het beste met:

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

Verder is er SQL-injectie mogelijk in je WHERE.

Ook wordt gebruik van de mysql_*() functies afgeraden omdat deze verouderd zijn. Gebruik mysqli of PDO.
Dit is het formulier die de gegevens ophaalt en de mogelijkheid geeft deze aan te passen...

Hij zet ook alles netjes in de juiste vakjes

Door opslaan te zetten neemt hij alles mee doe ik POST dan laat hij alles staan..

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



<!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>
Kan je het tussen de code-tags zetten? Dat maakt het beter leesbaarder.

Verder kan method alleen POST of GET zijn. In dit geval is het POST.
[ co de ]

[\ code ]

En dan zonder spatie

Reageren