kan de foutjes niet oplossen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ralph van der Tang

ralph van der Tang

04/10/2012 10:49:31
Quote Anchor link
hoi iedereen,

heb een paar kleine foutje waar ik na 2 dagen debuggen nog steeds uit kom.
dit zijn de warnings die ik krijg:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in E:\8.5\root\bsw\login\index.php on line 55

Warning: mysql_query() expects parameter 1 to be string, resource given in E:\8.5\root\bsw\login\index.php on line 62

Warning: mysql_affected_rows(): 4 is not a valid MySQL-Link resource in E:\8.5\root\bsw\login\index.php on line 68

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
include ('../include/config.php');

// debugger
# errors weergeven

    ini_set('display_errors',1); // 1 == aan , 0 == uit
    error_reporting(E_ALL | E_STRICT);

    # sql debug
    define('DEBUG_MODE',false);  // true == aan, false == uit

    # functie voor sql debug

    function showSQLError($sql,$error,$text='Error')
    {

        if (DEBUG_MODE)
        {

            return  '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
        }

        else
        {
            return $text;
        }
    }


    if (isset($_POST['formsubmitted'])) {
    $error = array();                                 // maak een array voor error opslag
    
    // naam

    if (!isset($_POST['name'])) {                 // wanneer er geen naam is ingevoerd
        $error[] = 'Voer een naam in aub. ';     // voeg toe aan array errors
    } else {
        $name =mysql_real_escape_string($_POST['name']);                //wanneer een naam is ingevuld koppel deze aan een variabele
    }

    //email
    if (!isset($_POST['e-mail'])) {
        $error[] = 'voer uw email in aub. ';    // voeg toe aan array errors
    } else {
        if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/",    // controle op tekens in het email adres.
        $_POST['e-mail'])) {
            $Email = mysql_real_escape_string($_POST['e-mail']);
        }
else {
            $error[] = 'uw email adres is ongeldig.';
        }

    }
    
    // password
    if (!isset($_POST['password'])) {
        $error[] = 'vul aub uw wachtwoord in.';
    }
else {
        if(!isset($_POST['password1'])){
            $error[]='herhaal uw wachtwoord aub.';
        }
else{

            if($_POST['password']== $_POST['password1']){
                $Password = md5(mysql_real_escape_string($_POST['password']));
            }
else {
                $error[]=' Wachtwoorden komen niet overeen.';
            }
        }
    }

    if (empty($error)){     //wanneer er geen errors zijn gaat dit naar de database
        
        // controle of email adres niet al in gebruik is.

        $query_verify_email = "SELECT * FROM members  WHERE Email =".$Email;
        $result_verify_email = mysql_query($query_verify_email);
    
        
        //als de query mislukt ,vergelijkbaar met: if($result_verify_email==false)
        if ($result_verify_email) {
            echo ' er heeft een fout plaatsgevonden in de database ';
        }


        // als het email adres nog niet geregistreerd is .
        if (mysql_num_rows(mysql_query($result_verify_email) == 0) {

            // Creeër een unieke activatie code
            $activation = md5(uniqid(rand(), true));

            $query_insert_user ="INSERT INTO `members` ( `Username`, `Email`, `Password`, `Activation`) VALUES ( '$name', '$Email', '$Password', '$activation')";

            $result_insert_user = mysql_query($query_insert_user);
            if (!$result_insert_user) {
                echo 'Registreren mislukt excusses voor de overlast.';
            }


            //als de query gelukt is.
            if (mysql_affected_rows($link) == 1) {

                // verstuur de email:
                $message = " Om uw account te activeren klik alstublieft op deze link:\n\n";
                $message .= WEBSITE_URL . '/activate.php?email=' . urlencode($Email) . "&key=$activation";
                mail($Email, 'Registration Confirmation', $message, 'From:'.EMAIL);

                // Flush the buffered output.

                // maak deze pagina compleet:

                echo '<div class="success">Bedankt voor het registreren. Een conformatie email is verzondern naar ' . $Email .' klik alstublieft op de link in de email om uw account te activeren</div>';

            }
else {
                //als t niet goed ging.
                echo '<div id="sysError" class="errormsgbox">U heeft zich niet kunnen registreren. Excusses voor het ongemak.
                            </div>'
;
            }

        // het email adres is niet beschikbaar.
        } else {
            echo '<div class="errormsgbox" >Het email adres  is al geregistreerd.</div>';
        }


    //als de error[] fouten bevat toon deze    
    } else {
        echo '<div class="errormsgbox"> <ol>';
        foreach ($error as $key => $values) {

            echo '<li>' . $values . '</li>';

        }

        echo '</ol></div>';
    }}

?>


met vriendelijke groet
Ralph van der Tang
Gewijzigd op 04/10/2012 11:05:46 door Ralph van der Tang
 
PHP hulp

PHP hulp

22/12/2024 19:21:54
 
- SanThe -

- SanThe -

04/10/2012 11:02:35
 
Ralph van der Tang

ralph van der Tang

04/10/2012 11:05:03
Quote Anchor link
krijg nu :Parse error: syntax error, unexpected '{' in E:\8.5\root\bsw\login\index.php on line 75

script geupdate boven.
 
- SanThe -

- SanThe -

04/10/2012 11:08:40
Quote Anchor link
Haakjes tellen.
 
Kris Peeters

Kris Peeters

04/10/2012 12:13:08
Quote Anchor link
Kijk eens bij elke mysql-functie wat de functie verwacht (als input) in de parameters en wat de functie terug geeft.

---

bv. lijn 74-75
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
// als het email adres nog niet geregistreerd is .
if (mysql_num_rows(mysql_query($result_verify_email) == 0) {
?>


* Zie hier eens: http://php.net/manual/en/function.mysql-num-rows.php

mysql_num_rows verwacht een resource; een result van een mysql_query
in jouw geval dus $result_verify_email


* http://php.net/manual/en/function.mysql-query.php
mysql_query verwacht dan weer een SQL-string. Je weet wel, iets als "SELECT username, email FROM ..."
en mysql_query geeft een resource terug.

mysql_query($result_verify_email) is dus pure nonsens.


dus ... dit moet worden
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
// als het email adres nog niet geregistreerd is .
if (mysql_num_rows($result_verify_email) == 0) {
?>


En dit controleer je dus even voor alle mysql-functies
Gewijzigd op 04/10/2012 12:14:57 door Kris Peeters
 
Ralph van der Tang

ralph van der Tang

09/10/2012 09:40:28
Quote Anchor link
krijg query was empty dat klopt maar hoe kan je dan verder gaan script werkt niet door terwijl het dat juist wel zou moeten
 
Kris Peeters

Kris Peeters

09/10/2012 10:22:59
Quote Anchor link
Wel ja, dus lijn 75:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if (mysql_num_rows($result_verify_email) === 0) {
?>

// geen == maar === . Anders wordt een false ook doorgelaten en heb je dus niets aan de if.

----

Lijn 65:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query_verify_email
= "SELECT * FROM members  WHERE Email='" . $Email . "' ";
?>

Je bent de ' vergeten

-----

mysql_affected_rows():
Je mag de parameter weglaten, ofwel zet je daar de return van mysql_connect.

dus, ergens in config.php heb je

$link = mysql_connect(...);
...
mysql_affected_rows($link);

En toon zelf nog eens hoe je code er nu uitziet.
Gewijzigd op 09/10/2012 10:23:37 door Kris Peeters
 
Ralph van der Tang

ralph van der Tang

09/10/2012 10:34:36
Quote Anchor link
de errors die ik krijg zijn de volgende:


Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in G:\8.5\root\bsw\login\index.php on line 70

dit komt waarschijnlijk door de null die gegeven wordt door : $result_verify_email = mysql_query($query_verify_email);

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in G:\8.5\root\bsw\login\index.php on line 79

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<?php
include ('../include/config.php');

// begin debugging
    # errors weergeven

    ini_set('display_errors',1); // 1 == aan , 0 == uit
    error_reporting(E_ALL | E_STRICT);

    # sql debug
    define('DEBUG_MODE',true);  // true == aan, false == uit

    # functie voor sql debug

    function showSQLError($sql,$error,$text='Error')
    {

        if (DEBUG_MODE)
        {

            return  '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
        }

        else
        {
            return $text;
        }
    }
  

// einde debugging

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

    $error = array();                                 // maak een array voor error opslag
    
    // naam

    if (!isset($_POST['name'])) {                 // wanneer er geen naam is ingevoerd
        $error[] = 'Voer een naam in aub. ';     // voeg toe aan array errors
    } else {
        $name =mysql_real_escape_string($_POST['name']);                //wanneer een naam is ingevuld koppel deze aan een variabele
    }

    //email
    if (!isset($_POST['e-mail'])) {
        $error[] = 'voer uw email in aub. ';    // voeg toe aan array errors
    } else {
        if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/",    // controle op tekens in het email adres.
        $_POST['e-mail'])) {
            $Email = mysql_real_escape_string($_POST['e-mail']);
        }
else {
            $error[] = 'uw email adres is ongeldig.';
        }

    }
    
    // password
    if (!isset($_POST['password'])) {
        $error[] = 'vul aub uw wachtwoord in.';
    }
else {
        if(!isset($_POST['password1'])){
            $error[]='herhaal uw wachtwoord aub.';
        }
else{

            if($_POST['password']=== $_POST['password1']){
                $Password = md5(mysql_real_escape_string($_POST['password']));
            }
else {
                $error[]=' Wachtwoorden komen niet overeen.';
            }
        }
    }

    if (empty($error)){     //wanneer er geen errors zijn gaat dit naar de database
        
        // controle of email adres niet al in gebruik is.

        $query_verify_email = "SELECT * FROM members  WHERE Email =".$Email;
        $result_verify_email = mysql_query($query_verify_email);
        $array_verify_email= mysql_fetch_array($result_verify_email);
        
    
        //als de query mislukt ,vergelijkbaar met: if($result_verify_email==false)
        if ($result_verify_email) {
            echo ' er heeft een fout plaatsgevonden in de database ';
        }


        // als het email adres nog niet geregistreerd is .
        if (mysql_num_rows($result_verify_email) === 0) {

            // Creeër een unieke activatie code
            $activation = md5(uniqid(rand(), true));
            
            // insert member query.
            $query_insert_user ="INSERT INTO `members` ( `Username`, `Email`, `Password`, `Activation`) VALUES ( '$name', '$Email', '$Password', '$activation')";
            $result_insert_user = mysql_query($query_insert_user);
            if (!$result_insert_user) {
                echo 'Registreren mislukt excusses voor de overlast.';
            }


            //als de query gelukt is.
            if (mysql_affected_rows($link) == 1) {

                // verstuur de email:
                $message = " Om uw account te activeren klik alstublieft op deze link:\n\n";
                $message .= WEBSITE_URL . '/activate.php?email=' . urlencode($Email) . "&key=$activation";
                mail($Email, 'Registration Confirmation', $message, 'From:'.EMAIL);

                // Flush the buffered output.

                // maak deze pagina compleet:

                echo '<div class="success">Bedankt voor het registreren. Een conformatie email is verzondern naar ' . $Email .' klik alstublieft op de link in de email om uw account te activeren</div>';

            }
else {
                //als t niet goed ging.
                echo '<div id="sysError" class="errormsgbox">U heeft zich niet kunnen registreren. Excusses voor het ongemak.</div>';
            }

        // het email adres is niet beschikbaar.
        } else {
            echo '<div class="errormsgbox" >Het email adres  is al geregistreerd.</div>';
        }


    //als de error[] fouten bevat toon deze    
    } else {
        echo '<div class="errormsgbox"> <ol>';
        foreach ($error as $key => $values) {

            echo '<li>' . $values . '</li>';

        }

        echo '</ol></div>';
    }
}

mysql_close($link); //sluit de database verbinding
?>
Gewijzigd op 09/10/2012 10:43:50 door ralph van der Tang
 
Kris Peeters

Kris Peeters

09/10/2012 11:09:35
Quote Anchor link
Ralph van der Tang op 09/10/2012 10:34:36:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in G:\8.5\root\bsw\login\index.php on line 70


Je snapt toch wat daar op je scherm staat?
Als je query string niet klopt, zal mysql_query niet werken en zullen alle andere mysql_functies ook fouten geven.

Dan zal je uiteraard niet kunnen berekenen hoeveel records er zijn, zal je niet kunnen fetchen, ...

Ik heb je al gezegd dat die query string fout is en hoe ze te verbeteren.
 
Ralph van der Tang

ralph van der Tang

26/10/2012 12:16:37
Quote Anchor link
blijf hangen in een stukje script
op de een of andere manier werkt mijn insert query niet
de error die ik krijg is de volgende:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@test.nl, 0ab19c1

de query is:
$query_insert_user ="INSERT INTO `members` ( `Username`, `Email`, `Password`, `Activation`) VALUES ( ".$Name.",".$Email.", ".$Password.", ".$Activation.")";

alle variabelen hebben een waarde

alvast bedankt
Ralph
 
Q S

Q S

26/10/2012 12:22:02
Quote Anchor link
Doe de quotes is andersom

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query_insert_user
="INSERT INTO members ( Username, Email, Password, Activation) VALUES ( '".$Name."','".$Email."', '".$Password."', '".$Activation."')";
?>
 
Kris Peeters

Kris Peeters

26/10/2012 12:24:10
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$query_insert_user
="
INSERT INTO members
  ( Username, Email, Password, Activation)
VALUES
  ( '"
. $Name . "','" . $Email . "', '" . $Password . "', '" . $Activation . "')";
?>


(zoals ik zie dat boven mij ook al staat)
 
Ralph van der Tang

ralph van der Tang

26/10/2012 12:33:10
Quote Anchor link
dank jullie beiden het werkt
 



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.