Data komt niet in database
Heb al veel geleerd.
Maar nu wil een formulier in mij database opslaan.
Naar ergens gaat er iets mis want er komt wel een nieuwe id maar geen data.
Weet iemand wat er fout gaat?
Formulier code:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php include ('info.php');
$db=mysql_connect($host, $username, $password)or die ($fout);
mysql_select_db ($dbnaam, $db) or die ($fout);
$query = "SELECT * FROM admin1";
$result = mysql_query($query);
while ($person = mysql_fetch_array($result)){
echo "<h3>" . $person['scouting'] . "<h3>" ;
echo "<h3>" . $person['naam'] . "<h3>" ;
}
?>
<h1>nieuwe toevoegen</h1>
<form action="aanmaken.php" methode="post">
<input type="text" name="scouting" value="" />
<input type="text" name="naam" value="" />
<br />
<input type="submit" name="submit" />
</form>
$db=mysql_connect($host, $username, $password)or die ($fout);
mysql_select_db ($dbnaam, $db) or die ($fout);
$query = "SELECT * FROM admin1";
$result = mysql_query($query);
while ($person = mysql_fetch_array($result)){
echo "<h3>" . $person['scouting'] . "<h3>" ;
echo "<h3>" . $person['naam'] . "<h3>" ;
}
?>
<h1>nieuwe toevoegen</h1>
<form action="aanmaken.php" methode="post">
<input type="text" name="scouting" value="" />
<input type="text" name="naam" value="" />
<br />
<input type="submit" name="submit" />
</form>
aanmaken.php code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
include 'info.php';
mysql_select_db ($dbnaam, $db) or die ($fout);
$scouting = $_POST['scouting'];
$naam = $_POST['naam'];
$query="insert into admin1 (scouting,naam) values('$scouting','$naam')";
mysql_query($query) or die(mysql_error());
echo "Your message has been received";
?>
include 'info.php';
mysql_select_db ($dbnaam, $db) or die ($fout);
$scouting = $_POST['scouting'];
$naam = $_POST['naam'];
$query="insert into admin1 (scouting,naam) values('$scouting','$naam')";
mysql_query($query) or die(mysql_error());
echo "Your message has been received";
?>
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Alvast bedankt!
Alvast bedankt!
Gewijzigd op 18/05/2014 09:10:37 door - Ariën -
Query is lek => Zie SQL-Injection.
Paar tips als dat mag:
- mysql_* gaat er uit. voor flat php kun je overstappen op mysqli_* functies. Werkt nagenoeg hetzelfde.
- functies geven waarden terug. Ook PHP functies zoals mysql_connect() en mysql_select_db(). Soms kunnen die functies ook een foutmelding geven maar dan moet je daar wel wat mee doen. Als je dat namelijk gedaan had dan had je zelf allang ontdekt dat je vergat om te connecten.
- Wat gebeurt er nu als iemand direct naar aanmaken.php surft en dus helemaal niets post?
- Waarom gebruik je mysql_fetch_array() als je aan mysql_fetch_assoc() genoeg hebt? (Probeer eens uit te vinden wat het verschil is tussen die twee)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
include 'info.php';
mysql_select_db ($dbnaam, $db) or die ($fout);
$scouting = $_POST['scouting'];
$naam = $_POST['naam'];
if($_POST['submit']) {
echo "vult het formulier in";
header('Location: index.php');
} else {
$query="insert into admin1 (scouting,naam) values('$scouting','$naam')";
mysql_query($query) or die(mysql_error());
echo "Your message has been received";
}?>
include 'info.php';
mysql_select_db ($dbnaam, $db) or die ($fout);
$scouting = $_POST['scouting'];
$naam = $_POST['naam'];
if($_POST['submit']) {
echo "vult het formulier in";
header('Location: index.php');
} else {
$query="insert into admin1 (scouting,naam) values('$scouting','$naam')";
mysql_query($query) or die(mysql_error());
echo "Your message has been received";
}?>
Volgens mij word er gepost omdat er een record bij komt in de database
https://github.com/WouterJ/sql-boilerplate/blob/master/mysql/query-insert.php
Dit geeft een goede flow aan over hoe je een formulier moet verzenden naar een database.
Je maakt onnodig 2 nieuwe variabelen aan.
Je controleert niet eens of de $_POST waarden bestaan.
Daarna controleer je of er op een knop is gedrukt.
Als dat zo is, wordt een tekst getoond om een formulier in te vullen.
Je gebruikt nog steeds mysql.
Je hebt geen beveiliging om je variabelen.