Ik heb een contactformulier, en wil dat bij een foutmelding de waardes van de velden behouden blijven.
Dit gebeurt momenteel niet, ik snap alleen niet waarom niet.

Dit is het volledige script

<?php
//////////////////////////////////////////////
// contact.php								//
// page where everyone can contact us		//
// 											//
//									 		//
// creation: 2008-05-03				 		//
// last modified: 2008-05-04		 		//
// created by: Stefan van Iwaarden   		//
// last modified by: Stefan van Iwaarden 	//
//////////////////////////////////////////////

if ($_SERVER['REQUEST_METHOD'] == "POST")
{
	if (!empty($_POST['naam']) && !empty($_POST['email']) && !empty($_POST['bericht']))
	{
		if (isset($_SESSION['userID']))
		{
			$userID	= $_SESSION['userID'];
		}
		else
		{
			$userID	= 0;
		}
	
		$query	= "INSERT INTO 
						tickets_berichten
							(userID,
							onderwerp,
							naam,
							email,
							bericht,
							status,
							datum)
						VALUES
							(".$userID.",
							".$_POST['onderwerp'].",
							'".mysql_real_escape_string($_POST['naam'])."',
							'".mysql_real_escape_string($_POST['email'])."',
							'".mysql_real_escape_string($_POST['bericht'])."',
							1,
							NOW())";
		if ($result	= mysql_query($query) or die (mysql_error()))
		{
			echo 'Uw bericht is succesvol verstuurd!<br />';
			echo 'Wij streven ernaar binnen 12 uur een reactie te geven';
		}
		else
		{
			echo 'Er is een fout opgetreden bij het versturen van uw bericht, Mocht dit probleem zich blijven voordoen kunt u contact met de webmaster opnemen via [email protected]';
		}	
	}
	else
	{
		?><meta http-equiv="refresh" content="0; url=?page=contact&action=error"><?php	
	}
}
else
{
?> 
	<h2>Contact</h2>
	
	<form method="post">
	<table>
	<?php
	if (isset($_GET['action']) && $_GET['action'] == 'error')
	{
		echo '<tr><td colspan="2"><font color="red">Niet alle velden zijn ingevuld</font></td></tr>';
	}
	?>
	<tr>
		<td><b>Naam</b></td>
		<td><input type="text" name="naam" value="<?php echo $_POST['naam']; ?>" size="30"></td>
	</tr>
	<tr>
		<td><b>E-mail</b></td>
		<td><input type="text" name="email" value="<?php echo $_POST['email']; ?>" size="30"></td>
	</tr>
	<tr>
		<td><b>Onderwerp</b></td>
		<td><select name="onderwerp">
		<?php
		$query	= "SELECT * FROM tickets_onderwerpen ORDER BY rang ASC";
		$result	= mysql_query($query) or die (mysql_error());
		
		while ($row = mysql_fetch_array($result))
		{
			if ($row['id'] == $_POST['onderwerp'])
			{
				echo '<option value="'.$row['id'].'" selected>'.$row['onderwerp'].'</option>';
			}
			else
			{
				echo '<option value="'.$row['id'].'">'.$row['onderwerp'].'</option>';
			}
		}
		?>
		</select></td>
	</tr>
	<tr>
		<td><b>Bericht</b></td>
	</tr>
	<tr>
		<td colspan="2"><textarea name="bericht" cols="40" rows="10"><?php echo $_POST['bericht']; ?></textarea></td>
	</tr>
	<tr>
		<td><input type="submit" name="submit" value="Versturen"></td>
	</tr>
	</table>
	</form>
<?php
}
?>
AgeDeO schreef op 05.05.2008 10:48
das waar, ik begrijp het ook wel hoor. maar ik dacht dat ik het goed had en dat bleek niet zo te zijn. Dus dan kan ik het beter weghalen. volgende keer beter. Kijk maar eens in het forum spellen bug. Daar doe ik het toch wel goed of niet dan :P


Tot op zekere hoogte..... Persoonlijk ben ik niet zo van het voorkauwen maar dat is meer je eigen ding.

Verder is het belangrijk dat je leert van je fouten en ze niet meer (bewust) maakt. Vergissen is menselijk en ik denk dat iedereen zich nog wel eens het apezuur zoekt naar iets wat een verkeerd geplaatste { of iets dergelijks is (al doet E_ALL error_reporting hier ook wonderen :P)
de else rond het formulier weggehaald, maar dat is niet de oplossing.
maar dat is niet de oplossing.


Dat heb ik ook nooit gezegt ik zei dat je dan al iets meer zou krijgen


Als je de else om je formulier vandaan haalt dan zou je al meer resultaat moeten krijgen.


En een fout is toch wel het minste dat ik verwacht
voorbeeldje:


<form method="post" action="#">
    <input type=text id="naam">
    <input type="submit" value="klik!"
</form>

<?php
    if($_SERVER['REQUEST_METHOD'] == 'POST')//deze if vangt alle geposte gegevens op
    {
        echo 'je hebt het formulier verzonden';
    }
    else
    {
        echo $_POST['naam'];//deze post kan dus nooit hier komen
    }
?>
@jacco, er is geen fout, de velden blijven gewoon leeg.

@erwin, maar dan heb je je formulier dus in principe twee keer staan, in het verleden heb ik dit ook nooit hoeven doen dus waarom kan dat nu opeens niet meer?
Ik heb het nu opgelost door middel van een session, deze variabelen worden geleegd zodra het bhericht succesvol verstuurd is.

Reageren