Update met verkeerde haak
Volgens mij begrijp je de hints niet helemaal. Zorg er eerst maar even voor dat je wat meer basis kennis hebt over PHP. Zoals al aangegeven, je weet amper wat variabelen zijn, wat ze doen, wat POST variabelen zijn ( ze kunnen ook leeg zijn of gewoon niet bestaan etc ) dus, als je op deze manier door gaat, zul je continu tegen errors aanlopen, dat wil je niet. Beter begin je gewoon voor jezelf eerst met een simpele PHP cursus.
Nu krijg ik geen foutmelding meer, maar ik zie niet wat er in de database staat en ik kan niet updaten.
Willen jullie nog een keer naar mijn code kijken. Ik moet ergens een fout gemaakt hebben met $POST.
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
44
45
46
47
48
49
50
51
52
53
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
44
45
46
47
48
49
50
51
52
53
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
include ("db_connect.inc.php");
//Ik heb twee velden aangemaakt: nid, bre, bra
if ( $_SERVER['REQUEST_METHOD'] == 'POST'
&& isset($_POST['nid'])
&& ctype_digit($_POST['nid'])
&& (isset($_POST['bre'])) || isset($_POST['bra']))
//Als ik in bre of bra iets invoeg, wordt de database geupdatet
//Ik gebruik mysql_real_escape_string om te voorkomen dat er een delete-code in
//het tekstvak getypt kan worden.
{
if (isset($_POST['bre']) && isset($_POST['bra']))
{
$bre = mysql_real_escape_string($_POST['bre']);
$bra = mysql_real_escape_string($_POST['bra']);
$nid = mysql_real_escape_string($_POST['nid']);
$sql = "UPDATE gev SET bre = '$bre', bra='$bra' WHERE nid = '$nid'";
}
//Als de database niet geraadpleegd kan worden, krijg ik een foutmelding.
if (!$result = mysql_query($sql))
{
echo mysql_error().'<br />'.$sql;
}
// Als de gegevens wel verwerkt konden worden, dan is het misschien leuk om daar ook een melding over te geven.
else
{
echo 'De gegevens zijn nu wel verwerkt.';
}
}
?>
<form action="" method="post" enctype="multipart/form-data">
<label for="bre"> Naam: </label>
<input type="text" name="bre" value="<?php echo isset( $_POST['bre'] ) ? $_POST['bre'] : null; ?>" size="4">
<label for="bra">Adres: </label>
<input type="text" name="bra" value="<?php echo isset( $_POST['bra'] ) ? $_POST['bra'] : null; ?>" size="4">
<label for="nid"> Id: </label>
<input type="text" name="nid" value="<?php echo isset( $_POST['nid'] ) ? $_POST['nid'] : null; ?>" size="4">
<input type="submit" name="submit" value="verstuur" />
</form>
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
include ("db_connect.inc.php");
//Ik heb twee velden aangemaakt: nid, bre, bra
if ( $_SERVER['REQUEST_METHOD'] == 'POST'
&& isset($_POST['nid'])
&& ctype_digit($_POST['nid'])
&& (isset($_POST['bre'])) || isset($_POST['bra']))
//Als ik in bre of bra iets invoeg, wordt de database geupdatet
//Ik gebruik mysql_real_escape_string om te voorkomen dat er een delete-code in
//het tekstvak getypt kan worden.
{
if (isset($_POST['bre']) && isset($_POST['bra']))
{
$bre = mysql_real_escape_string($_POST['bre']);
$bra = mysql_real_escape_string($_POST['bra']);
$nid = mysql_real_escape_string($_POST['nid']);
$sql = "UPDATE gev SET bre = '$bre', bra='$bra' WHERE nid = '$nid'";
}
//Als de database niet geraadpleegd kan worden, krijg ik een foutmelding.
if (!$result = mysql_query($sql))
{
echo mysql_error().'<br />'.$sql;
}
// Als de gegevens wel verwerkt konden worden, dan is het misschien leuk om daar ook een melding over te geven.
else
{
echo 'De gegevens zijn nu wel verwerkt.';
}
}
?>
<form action="" method="post" enctype="multipart/form-data">
<label for="bre"> Naam: </label>
<input type="text" name="bre" value="<?php echo isset( $_POST['bre'] ) ? $_POST['bre'] : null; ?>" size="4">
<label for="bra">Adres: </label>
<input type="text" name="bra" value="<?php echo isset( $_POST['bra'] ) ? $_POST['bra'] : null; ?>" size="4">
<label for="nid"> Id: </label>
<input type="text" name="nid" value="<?php echo isset( $_POST['nid'] ) ? $_POST['nid'] : null; ?>" size="4">
<input type="submit" name="submit" value="verstuur" />
</form>
Code tags toegevoegd[/modedit]
Gewijzigd op 21/09/2010 10:39:18 door Bas IJzelendoorn
Ik begrijp je comment niet; op regel 6 geef je aan dat je twee velden hebt aangemaakt: nid, bre en bra. Dat zijn er drie.
Vervolgens controleer je in de if op regel 10 of bre OF bra is gevuld.
Regel 18 controleer je vervolgens of bre EN bra zijn ingevuld. Zo ja, dan maak je $sql aan en sluit de if af.
Daarna controleer je of $sql kan worden uitgevoerd. Als bre OF bra is ingevuld, zal er geen $sql zijn aangemaakt en krijg je een foutmelding.
Waarom maak je overigens de variabelen op regels 20 t/m 22 aan? Die kun je in 1x in de query zetten. Zorg dat je variabelen op de juiste manier opneemt in een query. Volgens mij is onderstaande beter dan wat jij hebt.
Gewijzigd op 20/09/2010 22:54:59 door Obelix Idefix
code] en [/code] dus.
[De UPDATE-regel is zo inderdaad een stuk korter en geeft hetzelfde resultaat. Er zijn geen foutmeldingen, maar de update werkt nog niet.
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
include ("db_connect.inc.php");
//Ik heb drie velden aangemaakt: nid, bre, bra
if ( $_SERVER['REQUEST_METHOD'] == 'POST'
&& isset($_POST['nid'])
&& ctype_digit($_POST['nid'])
&& (isset($_POST['bre'])) || isset($_POST['bra']))
////In de bovenste if controleer ik of bre OF bra is gevuld
//Als bre OF bra is ingevuld, zal er geen $sql zijn aangemaakt en krijg je een foutmelding.
//Ik gebruik mysql_real_escape_string om te voorkomen dat er een delete-code in
//het tekstvak getypt kan worden.
{
if (isset($_POST['bre']) && isset($_POST['bra']))
//In deze if controleer ik of bre EN bra zijn ingevuld. Zo ja, dan maak je $sql aan en sluit de if af.
//Daarna controleer je of $sql kan worden uitgevoerd.
{
$sql = 'UPDATE gev SET bre = "'.$bre.'", bra="'.$bra.'" WHERE nid = "'.$nid.'"';
}
//Als de database niet geraadpleegd kan worden, krijg ik een foutmelding.
if (!$result = mysql_query($sql))
{
echo mysql_error().'<br />'.$sql;
}
// Als de gegevens wel verwerkt konden worden, dan is het misschien leuk om daar ook een melding over te geven.
else
{
echo 'De gegevens zijn nu wel verwerkt.';
}
}
?>
[
<form action="" method="post" enctype="multipart/form-data">
<label for="bre"> Naam: </label>
<input type="text" name="bre" value="<?php echo isset( $_POST['bre'] ) ? $_POST['bre'] : null; ?>" size="4">
<label for="bra">Adres: </label>
<input type="text" name="bra" value="<?php echo isset( $_POST['bra'] ) ? $_POST['bra'] : null; ?>" size="4">
<label for="nid"> Id: </label>
<input type="text" name="nid" value="<?php echo isset( $_POST['nid'] ) ? $_POST['nid'] : null; ?>" size="4">
<input type="submit" name="submit" value="verstuur" />
</form>
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
include ("db_connect.inc.php");
//Ik heb drie velden aangemaakt: nid, bre, bra
if ( $_SERVER['REQUEST_METHOD'] == 'POST'
&& isset($_POST['nid'])
&& ctype_digit($_POST['nid'])
&& (isset($_POST['bre'])) || isset($_POST['bra']))
////In de bovenste if controleer ik of bre OF bra is gevuld
//Als bre OF bra is ingevuld, zal er geen $sql zijn aangemaakt en krijg je een foutmelding.
//Ik gebruik mysql_real_escape_string om te voorkomen dat er een delete-code in
//het tekstvak getypt kan worden.
{
if (isset($_POST['bre']) && isset($_POST['bra']))
//In deze if controleer ik of bre EN bra zijn ingevuld. Zo ja, dan maak je $sql aan en sluit de if af.
//Daarna controleer je of $sql kan worden uitgevoerd.
{
$sql = 'UPDATE gev SET bre = "'.$bre.'", bra="'.$bra.'" WHERE nid = "'.$nid.'"';
}
//Als de database niet geraadpleegd kan worden, krijg ik een foutmelding.
if (!$result = mysql_query($sql))
{
echo mysql_error().'<br />'.$sql;
}
// Als de gegevens wel verwerkt konden worden, dan is het misschien leuk om daar ook een melding over te geven.
else
{
echo 'De gegevens zijn nu wel verwerkt.';
}
}
?>
[
<form action="" method="post" enctype="multipart/form-data">
<label for="bre"> Naam: </label>
<input type="text" name="bre" value="<?php echo isset( $_POST['bre'] ) ? $_POST['bre'] : null; ?>" size="4">
<label for="bra">Adres: </label>
<input type="text" name="bra" value="<?php echo isset( $_POST['bra'] ) ? $_POST['bra'] : null; ?>" size="4">
<label for="nid"> Id: </label>
<input type="text" name="nid" value="<?php echo isset( $_POST['nid'] ) ? $_POST['nid'] : null; ?>" size="4">
<input type="submit" name="submit" value="verstuur" />
</form>
Code tags op juiste manier toegepast. Kijk nu zelf even hoe je ze gebruikt.[/modedit]
Gewijzigd op 21/09/2010 22:39:51 door Joren de Wit
Mark Boom op 21/09/2010 20:51:47:
Ik zal de ook code-tekens gebruiken.
De UPDATE-regel is zo inderdaad een stuk korter en geeft hetzelfde resultaat. Er zijn geen foutmeldingen, maar de update werkt nog niet.
De UPDATE-regel is zo inderdaad een stuk korter en geeft hetzelfde resultaat. Er zijn geen foutmeldingen, maar de update werkt nog niet.
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
include ("db_connect.inc.php");
//Ik heb drie velden aangemaakt: nid, bre, bra
if ( $_SERVER['REQUEST_METHOD'] == 'POST'
&& isset($_POST['nid'])
&& ctype_digit($_POST['nid'])
&& (isset($_POST['bre'])) || isset($_POST['bra']))
////In de bovenste if controleer ik of bre OF bra is gevuld
//Als bre OF bra is ingevuld, zal er geen $sql zijn aangemaakt en krijg je een foutmelding.
//Ik gebruik mysql_real_escape_string om te voorkomen dat er een delete-code in
//het tekstvak getypt kan worden.
{
if (isset($_POST['bre']) && isset($_POST['bra']))
//In deze if controleer ik of bre EN bra zijn ingevuld. Zo ja, dan maak je $sql aan en sluit de if af.
//Daarna controleer je of $sql kan worden uitgevoerd.
{
$sql = 'UPDATE gev SET bre = "'.$bre.'", bra="'.$bra.'" WHERE nid = "'.$nid.'"';
}
//Als de database niet geraadpleegd kan worden, krijg ik een foutmelding.
if (!$result = mysql_query($sql))
{
echo mysql_error().'<br />'.$sql;
}
// Als de gegevens wel verwerkt konden worden, dan is het misschien leuk om daar ook een melding over te geven.
else
{
echo 'De gegevens zijn nu wel verwerkt.';
}
}
?>
<form action="" method="post" enctype="multipart/form-data">
<label for="bre"> Naam: </label>
<input type="text" name="bre" value="<?php echo isset( $_POST['bre'] ) ? $_POST['bre'] : null; ?>" size="4">
<label for="bra">Adres: </label>
<input type="text" name="bra" value="<?php echo isset( $_POST['bra'] ) ? $_POST['bra'] : null; ?>" size="4">
<label for="nid"> Id: </label>
<input type="text" name="nid" value="<?php echo isset( $_POST['nid'] ) ? $_POST['nid'] : null; ?>" size="4">
<input type="submit" name="submit" value="verstuur" />
</form>
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
include ("db_connect.inc.php");
//Ik heb drie velden aangemaakt: nid, bre, bra
if ( $_SERVER['REQUEST_METHOD'] == 'POST'
&& isset($_POST['nid'])
&& ctype_digit($_POST['nid'])
&& (isset($_POST['bre'])) || isset($_POST['bra']))
////In de bovenste if controleer ik of bre OF bra is gevuld
//Als bre OF bra is ingevuld, zal er geen $sql zijn aangemaakt en krijg je een foutmelding.
//Ik gebruik mysql_real_escape_string om te voorkomen dat er een delete-code in
//het tekstvak getypt kan worden.
{
if (isset($_POST['bre']) && isset($_POST['bra']))
//In deze if controleer ik of bre EN bra zijn ingevuld. Zo ja, dan maak je $sql aan en sluit de if af.
//Daarna controleer je of $sql kan worden uitgevoerd.
{
$sql = 'UPDATE gev SET bre = "'.$bre.'", bra="'.$bra.'" WHERE nid = "'.$nid.'"';
}
//Als de database niet geraadpleegd kan worden, krijg ik een foutmelding.
if (!$result = mysql_query($sql))
{
echo mysql_error().'<br />'.$sql;
}
// Als de gegevens wel verwerkt konden worden, dan is het misschien leuk om daar ook een melding over te geven.
else
{
echo 'De gegevens zijn nu wel verwerkt.';
}
}
?>
<form action="" method="post" enctype="multipart/form-data">
<label for="bre"> Naam: </label>
<input type="text" name="bre" value="<?php echo isset( $_POST['bre'] ) ? $_POST['bre'] : null; ?>" size="4">
<label for="bra">Adres: </label>
<input type="text" name="bra" value="<?php echo isset( $_POST['bra'] ) ? $_POST['bra'] : null; ?>" size="4">
<label for="nid"> Id: </label>
<input type="text" name="nid" value="<?php echo isset( $_POST['nid'] ) ? $_POST['nid'] : null; ?>" size="4">
<input type="submit" name="submit" value="verstuur" />
</form>
De code-tags alléén helemaal buiten je complete script zetten.
Gewijzigd op 22/09/2010 19:57:20 door Mark Boom
//In deze if controleer ik of bre EN bra zijn ingevuld. Zo ja, dan maak je $sql aan en sluit de if af.
//Daarna controleer je of $sql kan worden uitgevoerd.
{
"
nee je controleerd alleen of de $_POST bestaan, de waarde kan nog steeds niet zijn wat het moet zijn
" $sql = 'UPDATE gev SET bre = "'.$bre.'", bra="'.$bra.'" WHERE nid = "'.$nid.'"';
}
"
en hier komen zomaar wat variabelen uit de lucht vallen en van sql injectie heb je zeker ook nog nooit gehoord
Gewijzigd op 24/09/2010 19:30:58 door Mark Boom