geen data naar de database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rinus

rinus

08/08/2006 17:41:00
Quote Anchor link
Ik ben al een paar dagen aan het proberen mijn regsitratie script werkend te krijgen, maar zie zelf de fout niet. Ziet iemand waar het aan ligt?

zonder ob_start(); en //ob_end_flush(); krijg ik deze foutmelding:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/campowebsolutions.com/www/foto/yapa_register.php on line 29

Warning: Cannot modify header information - headers already sent by (output started at /home/campowebsolutions.com/www/foto/yapa_register.php:29) in /home/campowebsolutions.com/www/foto/yapa_register.php on line 57

dit is het relevante deel van de code op www.campowebsolutions.com/foto/

register.php

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
<?php
//ob_start();
error_reporting(E_ALL);
ini_set('display_errors',1);
// bestanden insluiten
include_once('yapa_config.php');
include_once('yapa_functions.php');


// controleren of de pagina zichzelf heeft aangeroepen
if(isset($_POST['verzonden'])){
    // initialisatie
    $fout_bericht        = '';
    $member_naam        = safe_text($_POST['naam']);
    $member_email        = safe_text($_POST['email']);
    $member_wachtwoord    = safe_text($_POST['wachtwoord']);
    $member_datum        = safe_text($_POST['datum']);
    $member_code        = create_regcode(); // random 32-bits registratiecode genereren

    // de database openen

    $db        = safe_db_open($host, $gebruiker, $wachtwoord, $database);

    // een reeks controles uitvoeren:
    // eerst controleren of het e-mailadres al bestaat in de database
    // (dubbele vermeldingen mogen niet voorkomen)

    $query    = "SELECT * FROM 'yapa_members' WHERE email='$member_email'";
    $result    = safe_query($db, $query);

    if (mysql_num_rows($result) != 0){
        // e-mailadres bestaat al in de database, foutmelding tonen
        $fout_bericht .= "Dit e-mailadres (<b>$member_email</b>) bestaat al!<br />";
    }

    elseif(!check_field($member_email, T_EMAIL)){
        $fout_bericht .= "U hebt geen geldig e-mailadres opgegeven";
    }

    elseif(!check_field($member_wachtwoord, T_PASSWORD)){
        $fout_bericht .= "U hebt geen geldig wachtwoord opgegeven (minimaal 4, maximaal 8 tekens) <b />";
    }

    elseif(!send_confirmation($member_email, $member_code)){;
        // e-mailadres OK, query opbouwen en mailtje met
        // bevestigingscode verzenden

        $fout_bericht .="Het verzenden van de bevestigingsmail is mislukt";
    }

    if($fout_bericht){
        echo $fout_bericht . "<br/>";
        echo "<a href=\"$deze_pagina\">Opnieuw registreren</a>";
    }

    else{
        // alles is goed gegaan, query opbouwen en gegevens in de database plaatsen
        // wachtwoord versleutelen

        $member_wachtwoord = safe_password($member_wachtwoord);
        $query = "INSERT INTO yapa_members (id, naam, email, wachtwoord, datum, reg_code) VALUES
            ('', '$member_naam', '$member_email', '$member_wachtwoord', '$member_datum', '$member_code');"
;
        safe_query($db, $query);
        mysql_close($db);
        // gebruiker doorsturen naar de bevestigingspagina
        header ("Location: yapa_confirm.php");
    }
}

else{
?>


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
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
/**
 * Configuratiebestand invoegen.
 *
 */

include_once 'yapa_config.php';


function
safe_query($db, $query){
    global $ERRORS; // globale array met foutmeldingen
    $result = '';
    if (empty($query) || empty($db) || !is_string($query) || !is_object($db)){
        // er zijn geen geldige parameters meegegeven
        return false;
    }

    else{
        if (DEBUG_MODE){
            // uitgebreide debugging-mode, met meldingen voor de programmeur
            if (!$result = @mysql_query($db, $query)){
                die ("{$ERRORS['QUERY_ERROR_ADMIN']}
                <br> uitgevoerde query: $query  .
                <br> MySQL-foutnummer: "
. mysql_errno($db) .
                "<br> MySQL-melding: " . mysql_error($db));
            }

            else {
                return $result;
            }
        }

        else{
            // geen debug-mode, eindgebruiker krijgt beperkte foutmelding te zien
            if (!$result = @mysql_query($db, $query)){
                die ($ERRORS ['QUERY_ERROR_USER']);
            }

            else {
                return $result;
            }
        }
    }
}
// einde functie safe_query()


function safe_db_open($host, $gebruiker, $wachtwoord, $database){
     $db ='';
     if (empty($host) || empty($gebruiker) || empty($wachtwoord) || empty($database)){
        // er zijn geen geldige parameters meegegeven
        // eventueel nog uitbreiden met controles op het meegegeven type,
        // zoals is_string().

        return false;
    }

    else{
        if (DEBUG_MODE){
            // uitgebreide debugging-mode, met meldingen voor de programmeur
            // DEBUG_MODE is een constante, gedefinieerd in het config-bestand

            if (!$db = mysql_connect($host, $gebruiker, $wachtwoord, $database)){
                die ("Oooops: er is een fout opgetreden: <br />
                host        : $host <br />
                gebruiker    : $gebruiker <br />
                wachtwoord    : $wachtwoord <br />
                database    : $database <br />
                 MySQL-foutnummer: "
. mysql_errno($db) .
                "<br /> MySQL-melding: " . mysql_error($db));
            }

            else {
                // alles OK, resource-handler teruggeven
                return $db;
            }
        }

        else{
            // geen debug-mode, eindgebruiker krijgt beperkte foutmelding te zien
            if (!$db = mysql_connect($host, $gebruiker, $wachtwoord, $database)){
                die ("Er s een fout opgetreden bij het werken met de database");
            }

            else {
                // alles OK, resource-handler teruggeven
                return $db;
            }
        }
    }
 }
// einde functie safe_db_open()

?>
Gewijzigd op 01/01/1970 01:00:00 door Rinus
 
PHP hulp

PHP hulp

28/11/2024 03:58:38
 
Jan Koehoorn

Jan Koehoorn

08/08/2006 17:46:00
Quote Anchor link
Dit mag sowieso niet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= "SELECT * FROM 'yapa_members' WHERE email='$member_email'";
?>

je tabelnaam moet zonder quotes.
 
Frank -

Frank -

08/08/2006 17:49:00
Quote Anchor link
Blijkbaar doe je niets aan foutafhandeling, de query zal namelijk mislukt zijn.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= "SELECT * FROM 'yapa_members' WHERE email='$member_email'";
?>

yapa_members is een tabelnaam en die hoort nooit tussen quotes of andere rommel te staan. Quotes gebruik je bij een string.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= "SELECT * FROM yapa_members WHERE email='$member_email'";
?>

Maar zorg ook nog voor foutafhandeling, een query kan altijd mislukken, ook al is de SQL nog zo goed geschreven.
 
Rinus

rinus

08/08/2006 18:12:00
Quote Anchor link
Ook zonder quotes still the same problem. Via de functie safe_query gebeurd al een foutafhandeling lijkt me.

Ik vind het soieso vreemd de query's bleken werkend in phpmyadmin, de configparameters staan goe, hij doorloopt alle controles maar toch geen data in de tabel :(

Misschien maar heel iets anders proberen.
 
Jan Koehoorn

Jan Koehoorn

08/08/2006 18:24:00
Quote Anchor link
En er staan dus geen errors in je errorlog?
 
Rinus

rinus

08/08/2006 18:46:00
Quote Anchor link
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/campowebsolutions.com/www/foto/yapa_register.php on line 29

Warning: Cannot modify header information - headers already sent by (output started at /home/campowebsolutions.com/www/foto/yapa_register.php:29) in /home/campowebsolutions.com/www/foto/yapa_register.php on line 57

dit krijg ik als errors
 
Jan Koehoorn

Jan Koehoorn

08/08/2006 19:00:00
Quote Anchor link
mysql_num_rows () moet een resource id meekrijgen van een gelukte query. Je query mislukt dus omdat er een fout in de syntax zit. Wat zie je als je dit doet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    echo '<pre>';
    echo $query;
    echo '</pre>';
?>


Plaats deze code eens vlak na regel 26 van je eerste voorbeeld?
 
Rinus

rinus

08/08/2006 19:17:00
Quote Anchor link
SELECT * FROM yapa_members WHERE email='[email protected]'

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/campowebsolutions.com/www/foto/yapa_register.php on line 35

Warning: Cannot modify header information - headers already sent by (output started at /home/campowebsolutions.com/www/foto/yapa_register.php:28) in /home/campowebsolutions.com/www/foto/yapa_register.php on line 63

dit krijg ik
 
Jan Koehoorn

Jan Koehoorn

08/08/2006 19:47:00
Quote Anchor link
Die query ziet er op zich goed uit. Dan is de volgende stap meestal je tabelnamen en je veldnamen checken.

Die fout cannot modify header information staat bij de FAQ op deze site.
 
Rinus

rinus

08/08/2006 20:23:00
Quote Anchor link
ik zie niet iets geks zelf

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
<?php

CREATE TABLE `yapa_members` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `naam` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL DEFAULT '',
  `wachtwoord` varchar(50) NOT NULL DEFAULT '',
  `datum` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `reg_code` varchar(50) NOT NULL DEFAULT '',
  `actief` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
)
ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

?>
Gewijzigd op 01/01/1970 01:00:00 door rinus
 
Rinus

rinus

08/08/2006 22:17:00
Quote Anchor link
kan het zijn dat de database op een 1 of andere manier niet goed geselecteerd wordt
 



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.