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 zijn ook andere goede editors, zoals Eclipse, Netbeans enzovoorts. Deze geven prima aan als je een structuur-fout (syntax-error) hebt gemaakt.
dit is het eerste verwerking stuk van het eerste formulier...



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


daar werkt hij wel met spatie....

moet echt weer een keer aan de bak, gewoon php 6 leren...

Toevoeging op 26/01/2016 16:12:17:

- Ariën - op 26/01/2016 16:10:57

Er zijn ook andere goede editors, zoals Eclipse, Netbeans enzovoorts. Deze geven prima aan als je een structuur-fout (syntax-error) hebt gemaakt.


ook voor mac?
Ai ai... Addslashes gebruiken, is een voorbode voor een hoop ellende en verminking van je data.
mysqli_real_escape_string() moet gewoon werken, lijkt mij.

En ja, er zijn ook editors voor de mac. Zie de link.
$naam = mysql_real_escape_string($_POST['naam']);

Moet dat dan worden...

$naam = mysql_real_escape_string() ($_POST['naam']);

of is de bovenste gewoon goed ?

Het vreemde is dat hij bij andere pagina's gewoon werkt maar nu niet.....
Zie [php]mysql_real_escape_string[/php] of als je alles meteen wilt updaten (aan te raden) [php]mysqli_real_escape_string[/php]. Maar de vraag is, wat gaat er fout als je alleen een spatie invoert? Heb je al gekeken welke query hij dan uitvoert?
Als ik mysqli doe krijg ik foutmeldingen...

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in
Je geeft maar 1 parameter op, terwijl je ook een parameter naar je MySQLi connectie nodig hebt.
ok, heb ondertussen ook al iets gevonden met de fout met de spatie.... hij staat wel in de database maar wordt dus zonder spatie opgehaald en daarna weer opgeslagen zonder spatie....

Dus in de database staat Roland Reijerse maar hij haalt Roland op het zit hem dus in de weergave van de data....

Als test heb ik hem er nu even na gezet en dan zie ik in het invoer vak Roland staan maar naast het van netjes Roland Reijerse


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


dat is toch wel vreemd ??
Het zal wel komen omdat er quotes bij je value missen. Bekijk je HTML-code maar in de browser (Ctrl+U).
Persoonlijk zou ik de HTML-code helemaal buiten PHP laten, en de gewoon de variabelen tussen PHP-tags zetten.


<td><input type="text" name="naam" value="<?php echo $row["naam"]; ?>"><?php echo $row["naam"]; ?></td>




niet vreemd, aangezien je in je html plaatst:


<input value=Roland Reijerse>

ipv

<input value="Roland Reijerse">


Toevoeging op 26/01/2016 17:36:30:

aanvullend op Ariëns code:

htmlspecialchars() toe te voegen aan de echo's

Reageren