hallo iedereen,

ik heb een vragenlijst dat de entry's in en database zet, maar sinds enkele dagen gaat het niet meer:s

dit is het eerste deel vd code:

<?php



if ($submit) {

// process form
$db = mysql_connect("localhost", "user", "pw");
mysql_select_db("database",$db);

$sql = "INSERT INTO vragenlijst (voornaam,familienaam,geslacht,geboortedatum,straat,nr,postcode,gemeente,voornaammoeder,familienaammoeder,voornaamvader,familienaamvader,voornaampartner,familienaampartner,telefoonprive,gsm,emailprive,telefoonwerk,emailwerk) VALUES ('$voornaam','$familienaam','$geslacht','$geboortedatum','$straat','$nr','$postcode', '$gemeente','$voornaammoeder','$familienaammoeder','$voornaamvader','$familienaamvader','$voornaampartner','$familienaampartner','$telefoonprive','$gsm','$emailprive','$telefoonwerk','$emailwerk')";

$result = mysql_query($sql);

echo "Bedankt voor de gegevens in te vullen, klik op index om terug naar de hoofdpagina te gaan.\n";

} else{

?>

/code

een voorbeeld is te zien op :

http://kaag.frih.net/yo/vragenlijst.php
het formulier staat er dus, maar het doet niets!

wat is de fout?

grtz
sinds enkele dagen gaat het niet meer

Daarvoor werkte het gewoon? Even je host vragen wat er veranderd is.
if ($submit) is niet echt een goede methode om te testen als je submit button name="submit" heeft. Liever zo:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
}
?>
hij zegt dat er gewoon een update is geweest van de php, meer niet!
is dat dan ok nog goed?
<form method="post" action="">

er wordt een nieuwe rij gemaakt, maar er wordt niet in gezet:s
dit is de volledige code:

<?php



   if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    
// process form
$db = mysql_connect("localhost", "user", "pswrd");
mysql_select_db("databse",$db);

  $sql = "INSERT INTO vragenlijst (voornaam,familienaam,geslacht,geboortedatum,straat,nr,postcode,gemeente,voornaammoeder,familienaammoeder,voornaamvader,familienaamvader,voornaampartner,familienaampartner,telefoonprive,gsm,emailprive,telefoonwerk,emailwerk) VALUES ('$voornaam','$familienaam','$geslacht','$geboortedatum','$straat','$nr','$postcode', '$gemeente','$voornaammoeder','$familienaammoeder','$voornaamvader','$familienaamvader','$voornaampartner','$familienaampartner','$telefoonprive','$gsm','$emailprive','$telefoonwerk','$emailwerk')";

  $result = mysql_query($sql);

  echo "Bedankt voor de gegevens in te vullen, klik op index om terug naar de hoofdpagina te gaan.\n";

} else{



  // display form



  ?>


<table>
<tr>
	<td colspan="2" class="style1">

Beste familieleden,<br/><br/>
 
 
Hier dus onze vragenlijst. Zoals je ziet verzamelen we de personalia van alle leden van onze familie.<br/>
Graag zouden we hebben dat per tante, nonkel, nicht, kozijn, kind, kleinkind &#233;&#233;n zo&rsquo;n formulier wordt ingevuld.<br/>
We willen immers op termijn ook een stamboom met foto&rsquo;s maken.<br/><br/>
 
Velden die niet van toepassing zijn of die je niet wil invullen laat je gewoon blanco.<br/>
Als iedereen meewerkt hebben we meteen een hele recente adressenlijst van de familie die altijd actueel kan gehouden worden.<br/><br/>
 
Dank u <br/><br/><br/><br/>
	</td>
	
	
</tr>
<tr>
  <form method="post" action="">

  <td class="style1">Voornaam:</td><td><input type="Text" name="voornaam"><br></td></tr>

 <tr><td class="style1">Familienaam:</td><td width="40%"><input type="Text" name="familienaam"><br></td></tr>

<tr><td class="style1">Geslacht:</td><td width="40%"><input type="Text" name="geslacht"><br></td></tr>

<tr><td class="style1"> Geboortedatum:</td><td width="40%"><input type="Text" name="geboortedatum"><br></td></tr>
  
<tr><td class="style1"> Straat:</td><td width="40%"><input type="Text" name="straat"><br></td></tr>
  
<tr><td class="style1"> Nr:</td><td width="40%"><input type="Text" name="nr"><br></td></tr>
  
<tr><td class="style1"> Postcode:</td><td width="40%"><input type="Text" name="postcode"><br></td></tr>
  
<tr><td class="style1"> Gemeente:</td><td width="40%"><input type="Text" name="gemeente"><br></td></tr>
 
 <tr><td class="style1"> Voornaam moeder:</td><td width="40%"><input type="Text" name="voornaammoeder"><br></td></tr>
 
 <tr><td class="style1"> Familienaam moeder:</td><td width="40%"><input type="Text" name="familienaammoeder"><br></td></tr>
 
 <tr><td class="style1"> Voornaam vader:</td><td width="40%"><input type="Text" name="voornaamvader"><br></td></tr>
 
 <tr><td class="style1"> Familienaam vader:</td><td width="40%"><input type="Text" name="familienaamvader"><br></td></tr>
 
 <tr><td class="style1"> Voornaam partner:</td><td width="40%"><input type="Text" name="voornaampartner"><br></td></tr>
 
  <tr><td class="style1"> Familienaam partner:</td><td width="40%"><input type="Text" name="familienaampartner"><br></td></tr>
  
 <tr><td class="style1"> Telefoon prive:</td><td width="40%"><input type="Text" name="telefoonprive"><br></td></tr>
 
 <tr><td class="style1"> Gsm nummer:</td><td width="40%"><input type="Text" name="gsm"><br></td></tr>
  
 <tr><td class="style1"> Email prive:</td><td width="40%"><input type="Text" name="emailprive"><br></td></tr>
   
 <tr><td class="style1"> Telefoon werk:</td><td width="40%"><input type="Text" name="telefoonwerk"><br></td></tr>
    
 <tr><td class="style1"> Email werk:</td><td width="40%"><input type="Text" name="emailwerk"><br></td></tr>
     
 </table>



  <input type="Submit" name="submit" value="Verzend">

  </form>



  <?php



} // end if



?>

Als er een update van PHP geweest is zal hij waarschijnlijk het gebruik van superglobals afdwingen nu. Dat betekent dat je in plaats van $submit met $_POST['submit'] zult moeten gaan werken.
Zoek maar eens met Google naar "PHP superglobals tutorials", dan vind je genoeg.
dus dan is het volledige formulier van hierbove volledig verkeert? of is het vrij makkelijk te doen?


grtz
Het formulier is wel goed, dat is het probleem niet.

Begin je code eens met de volgende regel:
error_reporting(E_ALL);

Je krijgt dan een hele serie notices dat je variabelen niet bestaan. Dat komt omdat $voornaam e.d. niet bestaat. Deze worden nu netjes in de array $_POST gezet en kun je oproepen met $_POST['voornaam'].

Maar voordat je alles zo maar in je database gooit, controleer wel eerst even de input. Wat je nu doet is bijzonder onveilig! Zoek maar eens op de term 'SQL-injection'...
@ Wouter: ik heb je post even ge-edit voor de leesbaarheid. Kijk even in de broncode hoe ik het gedaan heb, dan weet je het voortaan. Ik ga nu even je code bestuderen om te kijken wat er beter kan.
Is vrij makkelijk te doen.

Je kan (niet netjes hoor) bovenin je script alle globals omzetten naar de vars die je nu gebruikt. Dan hoef je niet overal in het script te gaan editen.

Dus zoiets:
$naam = $_POST['naam'];
$bla = $_POST['bla'];
Enz.
De action van je formulier was leeg. Ik heb je code wat opgeschoond. Er zit nog geen controle op de invoer!

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
	// process form
	$db = mysql_connect("localhost", "user", "pswrd");
	mysql_select_db("databse", $db);
	
	$sql = "
		INSERT INTO vragenlijst
		(voornaam, familienaam, geslacht, geboortedatum, straat, nr, postcode, gemeente, voornaammoeder, familienaammoeder, voornaamvader, familienaamvader, voornaampartner, familienaampartner, telefoonprive, gsm, emailprive, telefoonwerk, emailwerk)
		VALUES
		('$voornaam', '$familienaam', '$geslacht', '$geboortedatum', '$straat', '$nr', '$postcode', '$gemeente', '$voornaammoeder', '$familienaammoeder', '$voornaamvader', '$familienaamvader', '$voornaampartner', '$familienaampartner', '$telefoonprive', '$gsm', '$emailprive', '$telefoonwerk', '$emailwerk')";
	
	if ($result = mysql_query($sql)) {
		echo "Bedankt voor de gegevens in te vullen, klik op index om terug naar de hoofdpagina te gaan.\n";
	}
	else {
		trigger_error (mysql_error ());
	}

}
else {
// display form
?>
<table>
<tr>
<td colspan="2" class="style1">
Beste familieleden, <br/><br/>
Hier dus onze vragenlijst. Zoals je ziet verzamelen we de personalia van alle leden van onze familie.<br/>
Graag zouden we hebben dat per tante, nonkel, nicht, kozijn, kind, kleinkind &#233;&#233;n zo&rsquo;n formulier wordt ingevuld.<br/>
We willen immers op termijn ook een stamboom met foto&rsquo;s maken.<br/><br/>
Velden die niet van toepassing zijn of die je niet wil invullen laat je gewoon blanco.<br/>
Als iedereen meewerkt hebben we meteen een hele recente adressenlijst van de familie die altijd actueel kan gehouden worden.<br/><br/>
Dank u <br/><br/><br/><br/>
</td>
</tr>

<tr>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<td class="style1">Voornaam:</td><td><input type="Text" name="voornaam"><br></td></tr>
<tr><td class="style1">Familienaam:</td><td width="40%"><input type="Text" name="familienaam"><br></td></tr>
<tr><td class="style1">Geslacht:</td><td width="40%"><input type="Text" name="geslacht"><br></td></tr>
<tr><td class="style1"> Geboortedatum:</td><td width="40%"><input type="Text" name="geboortedatum"><br></td></tr>
<tr><td class="style1"> Straat:</td><td width="40%"><input type="Text" name="straat"><br></td></tr>
<tr><td class="style1"> Nr:</td><td width="40%"><input type="Text" name="nr"><br></td></tr>
<tr><td class="style1"> Postcode:</td><td width="40%"><input type="Text" name="postcode"><br></td></tr>
<tr><td class="style1"> Gemeente:</td><td width="40%"><input type="Text" name="gemeente"><br></td></tr>
<tr><td class="style1"> Voornaam moeder:</td><td width="40%"><input type="Text" name="voornaammoeder"><br></td></tr>
<tr><td class="style1"> Familienaam moeder:</td><td width="40%"><input type="Text" name="familienaammoeder"><br></td></tr>
<tr><td class="style1"> Voornaam vader:</td><td width="40%"><input type="Text" name="voornaamvader"><br></td></tr>
<tr><td class="style1"> Familienaam vader:</td><td width="40%"><input type="Text" name="familienaamvader"><br></td></tr>
<tr><td class="style1"> Voornaam partner:</td><td width="40%"><input type="Text" name="voornaampartner"><br></td></tr>
<tr><td class="style1"> Familienaam partner:</td><td width="40%"><input type="Text" name="familienaampartner"><br></td></tr>
<tr><td class="style1"> Telefoon prive:</td><td width="40%"><input type="Text" name="telefoonprive"><br></td></tr>
<tr><td class="style1"> Gsm nummer:</td><td width="40%"><input type="Text" name="gsm"><br></td></tr>
<tr><td class="style1"> Email prive:</td><td width="40%"><input type="Text" name="emailprive"><br></td></tr>
<tr><td class="style1"> Telefoon werk:</td><td width="40%"><input type="Text" name="telefoonwerk"><br></td></tr>
<tr><td class="style1"> Email werk:</td><td width="40%"><input type="Text" name="emailwerk"><br></td></tr>
</table>
<input type="Submit" name="submit" value="Verzend">
</form>
<?php
} // end if
?>

SanThe schreef op 03.06.2006 21:17
Is vrij makkelijk te doen.

Je kan (niet netjes hoor) bovenin je script alle globals omzetten naar de vars die je nu gebruikt. Dan hoef je niet overal in het script te gaan editen.

Dus zoiets:
$naam = $_POST['naam'];
$bla = $_POST['bla'];
Enz.


Als je die vars vaak nodig hebt kan een kortere schrijfwijze handig zijn. Het zal vaker voorkomen dat je iets wilt doen als:
$naam = htmlspecialchars ($_POST['naam']);
$bla = htmlspecialchars ($_POST['bla']);
uit oogpunt van beveiliging.

Reageren