koppeling voor registratie php naar database lukt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Fab Kor

Fab Kor

04/12/2013 17:13:49
Quote Anchor link
Beste,
Ik ben niet lang geleden begonnen met php. Ik heb de onderstaande code geschreven, deze is niet geheel zoals het hoort misschien en ook wat slordig wellicht, maar dat is het probleem niet.
Mijn probleem is dat als ik het formulier invul mijn gegevens uiteindelijk niet in de database komen te staan. De database heb ik aangemaakt via phpmyadmin. Is er iemand die ziet wat er mis is? Alvast bedankt iig! :)
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Register</title>  
        <link rel="stylesheet" href="login.css" type="text/css" />
    </head>
    <body>
<?php
if(isset($_POST['register'])==0){  
    ?>

        <div id='register'>
             <form name='register' action='register.php' method='post'>      
             <legend> Register</legend>
             <pre>
Account:  <input type='text' name='accountname' value='account' size='15' maxlength='15'><br>
Password: <input type='password' name='accountpass' value='password' size='15' maxlength='15'>
            </pre>
                <input type='submit' name='register' value='register'>
                <input type='reset' name='reset' value="reset">  
            </form>
        </div>      
        <a href="login.php">Login</a>
    <?php
} else{
    $accountname=$_POST['accountname'];
    $accountpass=$_POST['accountpass'];
    $db = mysql_connect(" ", " ", " ") or die ("Registratie mislukt");
    mysql_select_db("byron", $db);
    $SQL_statement= "INSERT INTO accounts (accountname, accountpass) VALUES ($accountname, $accountpass)";
    @
mysql_query($SQL_statement);
    echo "Welcome, " . $accountname . " the registration is complete. <br />";
    echo "Go back to the login section";
    echo "<a href=login.php>Login</a>";
    mysql_close();
}

    ?>

    </body>
</html>


Graag in het vervolg bij code, [code] [/code] tags gebruiken.[/modedit]
Gewijzigd op 04/12/2013 18:14:12 door Bas IJzelendoorn
 
PHP hulp

PHP hulp

26/12/2024 01:25:01
 
Nick kuijpers

nick kuijpers

04/12/2013 17:47:55
Quote Anchor link
waarom een @ voor mysql_query?
en mischien eerst laten merken dat er een php gedeelte komt bij values
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$SQL_statement
= mysqli_query($db,"INSERT INTO accounts (accountname, accountpass) VALUES (".$accountname.", ".$accountpass.")");
?>

ook kan je $db sneller schrijven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$db
= mysqli_connect(" ", " ", " ","byron") or die ("Registratie mislukt");
?>

Weet niet of dit de oplossing is maar zo doe ik het meestal ;)
 
Fab Kor

Fab Kor

04/12/2013 17:58:26
Quote Anchor link
Hoi Nick, bedankt voor je reactie.
Die @ zou moeten ivm het uitsluiten van fouten oid.. had ik ergens gelezen. Nu ik hem heb weggehaald en jou code in mn script heb verwerkt lukt het alleen nog steeds niet.. Ik ga straks maar even proberen om het op een andere manier te doen. Had ergens nog een mooie uitleg gevonden op internet.
 

04/12/2013 17:59:38
Quote Anchor link
Zet eens onder @mysql_query($SQL_statement);

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
print(mysql_error());
?>
 
Fab Kor

Fab Kor

04/12/2013 18:04:49
Quote Anchor link
Als ik dan het registratie formulier invul met
account: fab
password: mijnpassword
en vervolgens op de submit knop druk krijg ik dit:
Unknown column 'fab' in 'field list'
 
Nick kuijpers

nick kuijpers

04/12/2013 18:09:13
Quote Anchor link
Ook even een vraagje van mij ;)
Ik ben ook nog niet zo lang bezig met php enzo.
En ik heb altijd de dingen met Mysql geleerd maar toen zag ik op w3schools weer mysqli en ik dacht dat dat de nieuwste was dus heb ik dat geleerd maar nu gebruikt iedereen hier mysql.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
mysql_query(...); //mysql
mysqli_query(...,...); //mysqli
?>

Wat is nou het nieuwste/belangerijkste welke is handig om te weten of is mysqli gewoon de nieuwere versie of andersom.
Alvast bedankt.
 

04/12/2013 18:10:31
Quote Anchor link
Je kunt beter mysqli gebruiken, mysql gaat er binnenkort uit en kan je dus nietmeer gebruiken

Fab: Ik herschrijf je script even, 1 moment!
Gewijzigd op 04/12/2013 18:11:27 door
 
Erwin H

Erwin H

04/12/2013 18:14:00
Quote Anchor link
En dan ben ik benieuwd of Frank wel de missende quotjes in de query er bij gaat zetten..... (wat dus helemaal los staat van mysql vs mysqli).
 

04/12/2013 18:15:50
Quote Anchor link
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
<code>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Register</title>
<link rel="stylesheet" href="login.css" type="text/css" />
</head>
<body>
<?php
if(isset($_POST['register'])){  
    $accountname=mysql_real_escape_string($_POST['accountname']);
    $accountpass=mysql_real_escape_string($_POST['accountpass']);
    $db = mysql_connect(" ", " ", " ") or die ("Kan geen connectie maken");
    mysql_select_db("byron", $db);
    $SQL_statement= mysql_query("INSERT INTO accounts (accountname, accountpass) VALUES ('$accountname', '$accountpass')");
print(mysql_error()); // Error printen indien nodig
    echo "Welcome, " . $accountname . " the registration is complete. <br />";
    echo "Go back to the login section";
    echo "<a href=login.php>Login</a>";
}

if(!isset($_POST['register'])){   // Als er niet op de knop is gedrukt
 ?>


<div id='register'>
<form name='register' action='' method='post'>
<legend> Register</legend>
<pre>
Account: <input type='text' name='accountname' value='account' size='15' maxlength='15'><br>
Password: <input type='password' name='accountpass' value='password' size='15' maxlength='15'>
</pre>
<input type='submit' name='register' value='register'>
<input type='reset' name='reset' value="reset">
</form>
</div>
<a href="login.php">Login</a>
<?php
}
?>

</body>
</html>
</code>


Als er nog fouten zijn hoor ik het wel.

Edit:

Nog even de action gewijzigd
Gewijzigd op 04/12/2013 18:18:22 door
 
Fab Kor

Fab Kor

04/12/2013 18:28:20
Quote Anchor link
Frank heel erg bedankt! ik ga het zo even proberen :)
 

04/12/2013 18:37:33
Quote Anchor link
Prima, ik hoor het wel of het is gelukt.
 
Fab Kor

Fab Kor

04/12/2013 18:37:49
Quote Anchor link
Frank het script doet het.
Ik zie alleen niet helemaal waar ik het fout heb gedaan. Ik zag wel dat je bij <form acount='register.php' het deel register.php hebt weg gehaald.
Daarnaast heb je ook de opbouw veranderd (neem aan dat het vooral daar aan ligt)
 

04/12/2013 18:40:57
Quote Anchor link
Ten eerste had je hem inderdaad naar register.php gestuurd. Ten tweede was je de quotes ('') vergeten bij je values. Je controleerde niet of het formulier was verzonden, je deed het deel if(isset($_POST.... fout. Tevens heb ik de mysql_query in enen gedaan inplaats van het deel met de @. Ook heb ik een deel beveiliging toegevoegd: mysql_real_escape_string. Als iemand anders DELETE * FROM accounts invoert, krijg je een query waarbij hij de tabel verwijderd. mysql_real_escape_string vermijd dat.

En dat was het zon beetje.
 
Reshad F

Reshad F

04/12/2013 20:01:47
Quote Anchor link
Frank Martens op 04/12/2013 18:15:50:
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
<code>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Register</title>
<link rel="stylesheet" href="login.css" type="text/css" />
</head>
<body>
<?php
if(isset($_POST['register'])){  
    $accountname=mysql_real_escape_string($_POST['accountname']);
    $accountpass=mysql_real_escape_string($_POST['accountpass']);
    $db = mysql_connect(" ", " ", " ") or die ("Kan geen connectie maken");
    mysql_select_db("byron", $db);
    $SQL_statement= mysql_query("INSERT INTO accounts (accountname, accountpass) VALUES ('$accountname', '$accountpass')");
print(mysql_error()); // Error printen indien nodig
    echo "Welcome, " . $accountname . " the registration is complete. <br />";
    echo "Go back to the login section";
    echo "<a href=login.php>Login</a>";
}

if(!isset($_POST['register'])){   // Als er niet op de knop is gedrukt
 ?>


<div id='register'>
<form name='register' action='' method='post'>
<legend> Register</legend>
<pre>
Account: <input type='text' name='accountname' value='account' size='15' maxlength='15'><br>
Password: <input type='password' name='accountpass' value='password' size='15' maxlength='15'>
</pre>
<input type='submit' name='register' value='register'>
<input type='reset' name='reset' value="reset">
</form>
</div>
<a href="login.php">Login</a>
<?php
}
?>

</body>
</html>
</code>


Als er nog fouten zijn hoor ik het wel.

Edit:

Nog even de action gewijzigd


Frank je hebt zelf ook behoorlijk nog wat te leren.

- Ten eerste dien je variabelen buiten quotes te zetten.
- je controleert of een form verstuurd is dmv if($_SERVER['REQUEST_METHOD'] == 'POST') { } en niet met isset.
- Ik hoop niet dat jij dood gaat wanneer je een kleine fout maakt? waarom je script dan wel..
$db = mysql_connect(" ", " ", " ") or die ("Kan geen connectie maken");
- Onnodig variabelen aanmaken
$accountname=mysql_real_escape_string($_POST['accountname']);
$accountpass=mysql_real_escape_string($_POST['accountpass']);
En volgens mij heb ik je hele code hiermee gehad.

Nu de goede uitleg waar je echt wat aan hebt:

Een van de leden van PHPHULP heeft bijvoorbeeld dit in elkaar gezet

https://github.com/WouterJ/sql-boilerplate/tree/master/mysqli

Hier kan je zien hoe de MySQLI zowel OO als procedureel werkt.
 
- Ariën  -
Beheerder

- Ariën -

04/12/2013 20:06:51
Quote Anchor link
Fab Kor op 04/12/2013 17:58:26:
Hoi Nick, bedankt voor je reactie.
Die @ zou moeten ivm het uitsluiten van fouten oid..

Dat zou toch een handig zijn, als je met een simpele '@' alles werkend kon krijgen.
Nee, het is om fouten niet uit te sluiten, maar foutmeldingen te verbergen. En dat wil je dus zeker niet...
 



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.