Probleempje met het invoegen van een formulier in een MySQL database
Mijn probleem houd in dat als ik op de pagina kom met het formulier dat er direct een nieuw kolom word aan gemaakt in de database.
Dit is mijn script.
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
42
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
<?
if(isset($_SESSION['user_id'])) {
if($_SESSION['user_status'] == 1)
{
?>
<form method="post" action="">
Server Name: <input type="text" name="Name" /><br />
Server Status: <select name="DropDown1">
<option value="1">Online</option>
<option value="0">Offline</option>
</select><BR>
Server Category: <select name="DropDown2">
<option value="Action">Action Server</option>
<option value="Role">Roleplay Server</option>
<option value="Chat">Chat Server</option>
<option value="Race">Race Server</option>
</select><BR>
Server Slots: <input type="text" name="Slots" /><br />
Server Description:<br /> <textarea name="Description" /></textarea><br /><br />
External Links: <input type="text" name="Links" /><br />
<input type="submit" name="submit" value="Add Server" />
</form>
<?
}
}
{
$sql = "INSERT INTO Servers (Name,Online,Cat,Slots,Description,Links) VALUES ('".$_POST['Name']."','".$_POST['DropDown1']."','".$_POST['DropDown2']."','".$_POST['Slots']."','".$_POST['Description']."','".$_POST['Links']."')";
}
$result = mysql_query($sql);
if(!$result)
{
//something went wrong, display the error
echo 'Error' . mysql_error();
}
else
{
echo 'New Server succesfully added.';
}
?>
if(isset($_SESSION['user_id'])) {
if($_SESSION['user_status'] == 1)
{
?>
<form method="post" action="">
Server Name: <input type="text" name="Name" /><br />
Server Status: <select name="DropDown1">
<option value="1">Online</option>
<option value="0">Offline</option>
</select><BR>
Server Category: <select name="DropDown2">
<option value="Action">Action Server</option>
<option value="Role">Roleplay Server</option>
<option value="Chat">Chat Server</option>
<option value="Race">Race Server</option>
</select><BR>
Server Slots: <input type="text" name="Slots" /><br />
Server Description:<br /> <textarea name="Description" /></textarea><br /><br />
External Links: <input type="text" name="Links" /><br />
<input type="submit" name="submit" value="Add Server" />
</form>
<?
}
}
{
$sql = "INSERT INTO Servers (Name,Online,Cat,Slots,Description,Links) VALUES ('".$_POST['Name']."','".$_POST['DropDown1']."','".$_POST['DropDown2']."','".$_POST['Slots']."','".$_POST['Description']."','".$_POST['Links']."')";
}
$result = mysql_query($sql);
if(!$result)
{
//something went wrong, display the error
echo 'Error' . mysql_error();
}
else
{
echo 'New Server succesfully added.';
}
?>
Ik hoop dat jullie mij kunnen helpen.
Ik denk dat het iets heel kleins en dom is waar ik over heen kijk...
Groet
Kylian
Gewijzigd op 28/11/2012 23:18:48 door Kylian Bos
Heb je error-reporting aan staan? Je opent op regel 2 en 4 een { en die sluit je na je form op regel 2 en 3. Daarna staat op regel 5 een { maar wat doet die daar? Je hebt er geen ELSE in staan. Op regel 7 sluit je de } en dan ga je een query uitvoeren.
Gebruik geen short-tags.
Logische opbouw van een pagina:
Php (/controles) bovenaan een pagina, daarna html/output.
In het geval van een formulier: controleer of het formulier is verzonden. Zo ja: controleer de input die de user heeft ingegeven. Indien correct --> verwerk de input en controleer of het verwerken goed is gegaan.
Indien de verwerking fout is gegaan -> melding. Indien de gegevens onjuist zijn -> melding en formulier tonen met eerder ingevulde gegevens.
Indien formulier niet verzonden: toon formulier.
Gewijzigd op 28/11/2012 22:51:17 door Obelix Idefix
Gewijzigd op 28/11/2012 23:24:05 door Aad B
Kylian Bos op 28/11/2012 22:35:44:
...als ik op de pagina kom met het formulier dat er direct een nieuw kolom word aan gemaakt ...
Ik hoop dat je een extra rij bedoelt. Rij is horizontaal; kolom vertikaal.
-----
Een POST-formulier en haar verwerking, moet je regelen op dit principe:
- PHP-logica bovenaan; HTML onderaan.
- Na het verwerken van de post moet je de pagina hernieuwen.
Werk volgens volgend geraamte.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// database connecties eerst maken + (eventueel session_start)
if($_SERVER['REQUEST_METHOD'] === 'POST') {
$sql = "INSERT INTO ...";
...
header('location: ?'); // De pagina herladen. Eventueel vervang je die ? door een specifieke locatie/file
exit; // de rest hoeft niet meer uitgevoerd te worden
}
// Pas vanaf hier mag je beginnen HTML naar het scherm te tonen
?>
<!doctype html>
...
<form method="post">...</form>
// database connecties eerst maken + (eventueel session_start)
if($_SERVER['REQUEST_METHOD'] === 'POST') {
$sql = "INSERT INTO ...";
...
header('location: ?'); // De pagina herladen. Eventueel vervang je die ? door een specifieke locatie/file
exit; // de rest hoeft niet meer uitgevoerd te worden
}
// Pas vanaf hier mag je beginnen HTML naar het scherm te tonen
?>
<!doctype html>
...
<form method="post">...</form>
ik mis ook een session_start(); in het begin ,en je kan mysql injection uit voeren let hierop!
Nick van de heijden aan de session_start(); heb ik wel gedacht, die staat wat verder boven op de pagina.
Aad B als ik dit er boven zet:
krijg ik deze errors:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Notice: Undefined index: Name in /home/pointzer/domains/point-zero.biz/public_html/AddServer.php on line 70
Notice: Undefined index: DropDown1 in /home/pointzer/domains/point-zero.biz/public_html/AddServer.php on line 70
Notice: Undefined index: DropDown2 in /home/pointzer/domains/point-zero.biz/public_html/AddServer.php on line 70
Notice: Undefined index: Slots in /home/pointzer/domains/point-zero.biz/public_html/AddServer.php on line 70
Notice: Undefined index: Description in /home/pointzer/domains/point-zero.biz/public_html/AddServer.php on line 70
Notice: Undefined index: Links in /home/pointzer/domains/point-zero.biz/public_html/AddServer.php on line 70
Notice: Undefined index: DropDown1 in /home/pointzer/domains/point-zero.biz/public_html/AddServer.php on line 70
Notice: Undefined index: DropDown2 in /home/pointzer/domains/point-zero.biz/public_html/AddServer.php on line 70
Notice: Undefined index: Slots in /home/pointzer/domains/point-zero.biz/public_html/AddServer.php on line 70
Notice: Undefined index: Description in /home/pointzer/domains/point-zero.biz/public_html/AddServer.php on line 70
Notice: Undefined index: Links in /home/pointzer/domains/point-zero.biz/public_html/AddServer.php on line 70
Die line 70 is deze line
Met if($_SERVER['REQUEST_METHOD'] == "POST") { kan je hierop controleren.
Let ook op SQL injection, je bent eenvoudig hackbaar nu.
Gewijzigd op 29/11/2012 12:45:09 door - Ariën -