Update met verkeerde haak

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3

Pieter Jansen

Pieter Jansen

05/09/2010 21:45:55
Quote Anchor link
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.
 
PHP hulp

PHP hulp

19/01/2021 03:14:29
 
Mark Boom

Mark Boom

20/09/2010 21:09:57
Quote Anchor link
Na vele tutorials en raad van anderen heb ik eindelijk de isset kunnen plaatsen.

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>


Mod edit The Dutch Guy:
Code tags toegevoegd
Gewijzigd op 21/09/2010 10:39:18 door Bas IJzelendoorn
 
Obelix Idefix

Obelix Idefix

20/09/2010 22:52:46
Quote Anchor link
Zet code aub tussen code-tags, dat leest een stuk makkelijker. [.code.] en [/.code.] (zonder punten).

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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql = 'UPDATE gev SET bre = "'.$bre.'", bra="'.$bra.'" WHERE nid  = "'.$nid.'"';
Gewijzigd op 20/09/2010 22:54:59 door Obelix Idefix
 

20/09/2010 22:55:07
Quote Anchor link
[code] en [/code] dus.
 
Mark Boom

Mark Boom

21/09/2010 20:51:47
Quote Anchor link
Dank je wel voor je commentaar. 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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>


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
 
- SanThe -

- SanThe -

21/09/2010 21:52:34
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>


De code-tags alléén helemaal buiten je complete script zetten.
 
Mark Boom

Mark Boom

22/09/2010 19:52:34
Quote Anchor link
Ik heb de code tags buiten het volledige script gezet, maar ik zag later pas dat het bij het vorige bericht al gedaan was, dus ik heb hem hier weer weggehaald.
Gewijzigd op 22/09/2010 19:57:20 door Mark Boom
 
Noppes Homeland

Noppes Homeland

22/09/2010 19:57:24
Quote Anchor link
" 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.
{
"

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
 
Mark Boom

Mark Boom

22/09/2010 20:48:10
Quote Anchor link
Hartelijk dank voor jullie hulp.
Gewijzigd op 24/09/2010 19:30:58 door Mark Boom
 

Pagina: « vorige 1 2 3



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.