UPDATE tabel lukt niet
Pagina: « vorige 1 2 3 4 volgende »
Je moet dan in je action je id meesturen:
test.php?id=42 (of wat dan ook)
Een beetje laat gezien helaas.
ik ga morgen verder, je horen er weer van.
Ik denk dat het dan wel moet lukken. Wel zou de code aanzienlijk op de schop kunnen gaan, met diverse punten die ik al eerder opgenoemd hebt. Het kan je in ieder geval mogelijk onduidelijkheden of zelfs frustraties schelen ;-)
Het lukt nog niet zo als het zou moeten...
Ik heb een formulier waar alles netjes in komt, alleen krijg ik in de pagina die hem afwerkt een fout op regel 43 maar daar staat ?>
De link die hij mee geeft is " slijter/test.php?id=42 " hij heeft dus id 42 die hij moet aanpassen met de volgende gegevens....
de foutmelding is " Parse error: syntax error, unexpected $end in /home/moto/domains/###.nl/public_html/slijter/test.php on line 43 "
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?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='".mysql_real_escape_string($_GET['id'])."';
$update = mysql_query($sql)or die(mysql_error());
}
?>
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='".mysql_real_escape_string($_GET['id'])."';
$update = mysql_query($sql)or die(mysql_error());
}
?>
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$sql = "UPDATE pakket SET
[even ingekort]
WHERE
id='".mysql_real_escape_string($_GET['id'])."'";
?>
$sql = "UPDATE pakket SET
[even ingekort]
WHERE
id='".mysql_real_escape_string($_GET['id'])."'";
?>
Dat ziet er inderdaad beter uit, ik was al {()} aan het tellen :) maar die waren zo ver ik kon zien in orde.....
Verder nog een goede tip, om problemen met missende id's in de URL tegen te gaan: Gebruik isset() om te controleren of er een id in de URL voorkomt.
Code (php)
Gewijzigd op 26/01/2016 16:00:59 door - Ariën -
mysql_real_escape_string
of is daar een andere oorzaak voor ??
Ik zie ook geen vorm van validatie in je script. Verder is deze functie verouderd, en dient dit mysqli_real_escape_string() te zijn, met aanpassing van de rest van de mysql-functies.
Een ingeving: Misschien is de spatie die je invoert net te veel voor de maximale waarde van het datababaseveld?
- Ariën - op 26/01/2016 16:00:40:
Kleurtjes tellen in lappen PHP-codes helpt ook vaak. Zo zag ik dat die quotes blauw waren in plaats van rood. ;-)
Verder nog een goede tip, om problemen met missende id's in de URL tegen te gaan: Gebruik isset() om te controleren of er een id in de URL voorkomt.
Verder nog een goede tip, om problemen met missende id's in de URL tegen te gaan: Gebruik isset() om te controleren of er een id in de URL voorkomt.
Ja goede.... eeuh.... kleurtjes ?? ik zit in mijn browser te klooien :) dus zie alleen kleurtjes zodra ik het hier neer zet eigenlijk...
Moet dreamweaver maar eens gaan activeren denk ik....
Toevoeging op 26/01/2016 16:10:10:
- Ariën - op 26/01/2016 16:07:32:
Nee, mysql_real_escape_string beschermt de querie tegen ongewenste tekens, door deze onveilig te maken.
Ik zie ook geen vorm van validatie in je script. Verder is deze functie verouderd, en dient dit mysqli_real_escape_string() te zijn, met aanpassing van de rest van de mysql-functies.
Een ingeving: Misschien is de spatie die je invoert net te veel voor de maximale waarde van het datababaseveld?
Ik zie ook geen vorm van validatie in je script. Verder is deze functie verouderd, en dient dit mysqli_real_escape_string() te zijn, met aanpassing van de rest van de mysql-functies.
Een ingeving: Misschien is de spatie die je invoert net te veel voor de maximale waarde van het datababaseveld?
Nee het gaat al met 2 tekens zodra er een spatie komt zet hij alles na de spatie niet door... dus mijn naam Roland Reijerse zet hij door als Roland.... terwijl het eerste formulier dit wel netjes mee neemt....
enzovoorts. Deze geven prima aan als je een structuur-fout (syntax-error) hebt gemaakt.
Er zijn ook andere goede editors, zoals Eclipse, Netbeans Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
$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']);
$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?
mysqli_real_escape_string() moet gewoon werken, lijkt mij.
En ja, er zijn ook editors voor de mac. Zie de link.
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.....
mysql_real_escape_string of als je alles meteen wilt updaten (aan te raden) mysqli_real_escape_string. Maar de vraag is, wat gaat er fout als je alleen een spatie invoert? Heb je al gekeken welke query hij dan uitvoert?
Zie Gewijzigd op 26/01/2016 16:36:00 door - Ariën -
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.
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
Code (php)
1
echo "<td><input type='text' name='naam' value=".$row["naam"].">".$row["naam"]."</td>\n";
dat is toch wel vreemd ??
Persoonlijk zou ik de HTML-code helemaal buiten PHP laten, en de gewoon de variabelen tussen PHP-tags zetten.
<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