koppeling voor registratie php naar database lukt niet
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)
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
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>
<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
en mischien eerst laten merken dat er een php gedeelte komt bij values
Code (php)
1
2
3
2
3
<?php
$SQL_statement= mysqli_query($db,"INSERT INTO accounts (accountname, accountpass) VALUES (".$accountname.", ".$accountpass.")");
?>
$SQL_statement= mysqli_query($db,"INSERT INTO accounts (accountname, accountpass) VALUES (".$accountname.", ".$accountpass.")");
?>
ook kan je $db sneller schrijven:
Weet niet of dit de oplossing is maar zo doe ik het meestal ;)
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.
account: fab
password: mijnpassword
en vervolgens op de submit knop druk krijg ik dit:
Unknown column 'fab' in 'field list'
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.
Wat is nou het nieuwste/belangerijkste welke is handig om te weten of is mysqli gewoon de nieuwere versie of andersom.
Alvast bedankt.
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).
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
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>
<!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
Nog even de action gewijzigd
Frank heel erg bedankt! ik ga het zo even proberen :)
Prima, ik hoor het wel of het is gelukt.
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)
En dat was het zon beetje.
Frank Martens op 04/12/2013 18:15:50:
Als er nog fouten zijn hoor ik het wel.
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
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>
<!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
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.
Fab Kor op 04/12/2013 17:58:26:
Hoi Nick, bedankt voor je reactie.
Die @ zou moeten ivm het uitsluiten van fouten oid..
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...