[php] Forumulier zet automatisch dingen in database

Pagina: 1
Acties:
  • 50 views sinds 30-01-2008

  • Solopher
  • Registratie: December 2002
  • Laatst online: 21-08 21:43
Ik heb een Formuliertje gemaakt, maar voordat ik op het submit buttontje klik worden de gegevens al in de database gezet. Weet iemand misschien hoe dit komt en heeft iemand hier misschien een oplossing voor?

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
mysql_connect("localhost", "root", "") or die("Error: Can't Connect MySQL Server"); 
mysql_select_db("xsf") or die("Error: Can't Select Database"); 
?>

<form method="post" action="<? echo("$PHP_SELF"); ?>">

<table width="50%" border="0" cellspacing="0" cellpadding="0">
  <tr> 
    <td width="17%">Vraag:</td>
    <td width="83%">
        <input name="vraag" type="text" size="50" style="background-color: #6EBC95; font-family: Verdana; font-size: 12 px; border-style: solid; border-color: #000000">
      </td>
  </tr>
  <tr> 
    <td>Keuze 1:</td>
    <td><input type="text" name="keuze1" size="50" style="background-color: #6EBC95; font-family: Verdana; font-size: 12 px; border-style: solid; border-color: #000000"></td>
  </tr>
  <tr> 
    <td>Keuze 2:</td>
    <td><input type="text" name="keuze2" size="50" style="background-color: #6EBC95; font-family: Verdana; font-size: 12 px; border-style: solid; border-color: #000000"></td>
  </tr>
  <tr> 
    <td>Keuze 3:</td>
    <td><input type="text" name="keuze3" size="50" style="background-color: #6EBC95; font-family: Verdana; font-size: 12 px; border-style: solid; border-color: #000000"></td>
  </tr>
  <tr> 
    <td>Keuze 4:</td>
    <td><input type="text" name="keuze4" size="50" style="background-color: #6EBC95; font-family: Verdana; font-size: 12 px; border-style: solid; border-color: #000000"></td>
  </tr>
  <tr>
    <td>Keuze 5:</td>
    <td><input type="text" name="keuze5" size="50" style="background-color: #6EBC95; font-family: Verdana; font-size: 12 px; border-style: solid; border-color: #000000"></td>
  </tr>
</table>
<INPUT TYPE="HIDDEN" NAME="stage" value="1">
<input type="submit" value="Wijzig Poll!" style="background-color: #81C1E3; font-family: Verdana; font-size: 12 px; border-style: solid; border-color: #000000">
</form>
<?
if(!isset($_POST["stage"])) {
print "";
}else{

 /* Pakt waardes van de form en zet ze om in normale variabelen */
  $vraag   = $_POST["vraag"];
  $keuze1 = $_POST["keuze1"];
  $keuze2 = $_POST["keuze2"];
  $keuze3 = $_POST["keuze3"];
  $keuze4 = $_POST["keuze4"];
  $keuze5 = $_POST["keuze5"];

 /* Voegt waardes aan database toe */
$sql = "INSERT INTO poll (vraag, keuze1, keuze2, keuze3, keuze4, keuze5) VALUES ('$vraag', '$keuze1', '$keuze2', '$keuze3', '$keuze4', '$keuze5')";

$result = mysql_query($sql) or die(mysql_error());
echo("Your Server has been added.");

}
?>

Verwijderd

Als het form nog niet gepost is, lijkt dat me sterk, heel erg sterk... Je fout zit met 100% zekerheid ergens anders. Of je kijkt verkeerd naar wat er in de database staat, of je hebt al een keer gesubmit...

Wat wordt er precies in de DB gezet?

  • _-= Erikje =-_
  • Registratie: Maart 2000
  • Laatst online: 06-07 14:29
1) foute forum
2) volgens de FaQ in het goede forum zijn dit type vragen niet de bedoeling (dit is me code, het werkt niet, los het ff op)

verder is
PHP:
1
2
3
if(!isset($_POST["stage"])) { 
print ""; 
}else{

niet netjes, doet het dan zo
PHP:
1
2
3
if(isset($_POST["stage"])) { 
//hier query uitboeren
}


houdt er rekening mee dat je dan als je je formulier verstuurd altijd nog een keer het formulier te zien krijgt...

  • Solopher
  • Registratie: December 2002
  • Laatst online: 21-08 21:43
Okeej.. Thnx.. hij werkt.. maar nu heb ik nog een vraagje: ik heb
PHP:
1
$sql = "INSERT INTO poll (vraag, keuze1, keuze2, keuze3, keuze4, keuze5) VALUES ('$vraag', '$keuze1', '$keuze2', '$keuze3', '$keuze4', '$keuze5')";
Is er nu ook manier.. dat hij niet een nieuwe id gaat maken maar de eerste oude overschrijft?

Verwijderd

code:
1
2
3
4
if ($query_geeft_dat_het_al_bestaat) 
  update query
else 
  insert query

  • Solopher
  • Registratie: December 2002
  • Laatst online: 21-08 21:43
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
if(isset($_POST["stage"])) {  
$sql = "INSERT INTO poll (vraag, keuze1, keuze2, keuze3, keuze4, keuze5) VALUES ('$vraag', '$keuze1', '$keuze2', '$keuze3', '$keuze4', '$keuze5')";
$result = mysql_query($sql) or die(mysql_error());
echo("De Poll is gewijzigd.");
}
 /* Pakt waardes van de form en zet ze om in normale variabelen */
  $vraag   = $_POST["vraag"];
  $keuze1 = $_POST["keuze1"];
  $keuze2 = $_POST["keuze2"];
  $keuze3 = $_POST["keuze3"];
  $keuze4 = $_POST["keuze4"];
  $keuze5 = $_POST["keuze5"];

 /* Voegt waardes aan database toe */
?>

Maar waar moet ik dat stukje tussen plaatsen dan?

[ Voor 17% gewijzigd door Solopher op 06-01-2003 21:35 ]


Verwijderd

Deze hoort in PW, maar ik denk niet dat ze daar een thread als deze open laten. Divinity is erg duidelijk, je bent voldoende in de goede richting geholpen lijkt me :)
Als je geen idee hebt hoe je een eenvoudig stukje PHP/SQL als dit moet schrijven moet je je gewoon nog wat meer verdiepen erin, lijkt me. Kant en klare code is ook niet alles; als je later iets moet aanpassen kom je daardoor in de problemen :)

Succes :)

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Beste is imho nog gewoon te checken of er werkelijk een POSt heeft plaatsgevonden voor uberhaupt ook maar iets te doen:

PHP:
1
2
3
if ($_SERVER['REQUEST_METHOD'] == "POST") {
   // process form
}


Maar dit hoort niet in W&G thuis en is geen lang leven beschoren in P&W.. bovendien heb je al genoeg input die je op weg moeten helpen :)

Verwijderd

Dit topic staat inderdaad in het verkeerde forum, en zo'n probleem los je op door te debuggen. Waar gebeurt wat met welke variabelen? Ga alles na, controleer het, en veel proberen. Succes!

offtopic:
grr @ bosmonster.. ;)

[ Voor 11% gewijzigd door Verwijderd op 06-01-2003 21:57 ]

Pagina: 1

Dit topic is gesloten.