Probleempje met het invoegen van een formulier in een MySQL database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kylian Bos

Kylian Bos

28/11/2012 22:35:44
Quote Anchor link
Hallo,

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)
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
<?
  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
 
PHP hulp

PHP hulp

21/11/2024 15:21:31
 
Obelix Idefix

Obelix Idefix

28/11/2012 22:50:25
Quote Anchor link
Plaats code aub tussen code tags ( [code.] en [/code.] maar dan zonder .)

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
 
Aad B

Aad B

28/11/2012 23:23:17
Quote Anchor link
Overigens wordt er waarschijnlijk geen nieuwe kolom aangemaakt maar een nieuw record in de tabel servers. Zet dit bovenin je script:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
?>
Gewijzigd op 28/11/2012 23:24:05 door Aad B
 
Kris Peeters

Kris Peeters

29/11/2012 09:50:39
Quote Anchor link
(bepaalde dingen zijn al vermeld...)

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>
 
Nick van der heijden

nick van der heijden

29/11/2012 10:08:25
Quote Anchor link
ik mis ook een session_start(); in het begin ,en je kan mysql injection uit voeren let hierop!
 
Kylian Bos

Kylian Bos

29/11/2012 12:30:33
Quote Anchor link
Kris Peeters ik bedoel dan een rij die direct word ingevoegd als ik op de pagina kom.

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
?>

krijg ik deze errors:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


Die line 70 is deze line
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
       $sql = "INSERT INTO Servers (Name,Online,Cat,Slots,Description,Links) VALUES ('".$_POST['Name']."','".$_POST['DropDown1']."','".$_POST['DropDown2']."','".$_POST['Slots']."','".$_POST['Description']."','".$_POST['Links']."')";
 
- Ariën  -
Beheerder

- Ariën -

29/11/2012 12:42:50
Quote Anchor link
Dat klopt, die $_POST-waardes zijn nog nergens aangemaakt, dus dan krijg je die foutmelding. Ze zijn pas beschikbaar NADAT je het formulier verzonden hebt, en hierop gecontroleerd hebt.

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 -
 



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.