Ik heb een bestelformulier met vele velden, hoe kan ik nu de niet ingevulde velden NIET mee laten versturen.
Dus alleen de ingevulde velden m.b.t. de bestelling meesturen?

foreach($_POST as $key => $value) {
    if (!empty($value)) {
          //doe iets
    }
}

stel, je hebt

<b>Wat wilt u extra op uw pizza ?</b><br />
<input type="text" name="extra_op_pizza"><br />
<b>Wat wilt u om te drinken ?</b><br />
<input type="text" name="drankje">


dan verwerk je het zo :
[code]
<?
if($_POST['extra_op_pizza']==""){
$extra = "niets";
}
else {
$extra = $_POST['extra_op_pizza'];
}
if($_POST['drankje']==""){
$drankje = "niets";
}
else {
$drankje = $_POST['drankje'];
}
//en dat bv.
mail(...);
?>
Gewoon bovenaan je PHPscript:

<?php
    foreach ($_POST as $key => $value)
    {
        if (empty($value))
        {
            unset($_POST[$key]);
        }
    }
?>
wanneer ik bovenstaande code bovenin mijn formulier zet komt nog steeds het gehele formulier binnen; ook alle niet ingevulde velden.

moet ik ergens dan nog wat aanpassen?
en die key en value kan ik die zo laten staan of moet ik die nog vervangen door..........
Ik zit echt dringend verlegen om een idee van 1 van jullie!

Het gaat er dus om dat wanneer er niets is ingevuld op een veld dit ook niet wordt meegestuurd in de mail naar de eigenaar van de website die de mail moet verwerken.

Dit om het enigszins overzichtelijk te houden.

Een andere optie is wanneer bovenstaande niet mogelijk is bepaalde opmaakkenmerken mee te geven bij het bestelformulier bijvoorbeeld dat de getallen strong/vet in de email te zien zijn.........
<?php
if (trim($_POST['waarde1'] == '' | trim($_POST['waarde2'] == '' /* etc.. */ ) {
echo "Er is een veld niet ingevuld...";
} else {
//bv.
mail();
//of
$sql "INSERT INTO...";
}

?>
Voorbeeldpagina: standaardformulier

Code:

<?php
	ini_set ('display_errors', 1);
	error_reporting (E_ALL | E_STRICT);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	<title>Standaardformulier</title>
	
	<style type="text/css" media="screen">
		@import 'oop.css';
	</style>
</head>

<body>
	<div id="container">
	<div class="wrapper">
	<?php
		if ($_SERVER['REQUEST_METHOD'] == 'POST') {
			$verplicht = array ('veld1', 'veld2');
			$values = array ();
			$errors = array ();

			foreach ($_POST as $key => $value) {
				$value = trim ($value);
				if (empty ($value) && in_array ($key, $verplicht)) {
					array_push ($errors, '<p>Niets ingevuld bij ' . $key . '</p>');
				}
				else {
					if (!empty ($value)) {
						$values[$key] = $value;
					}
				}
			}
			if (!empty ($errors)) {
				echo '<h2>De volgende errors zijn gevonden:</h2>';
				foreach ($errors as $err) {
					echo '<p>' . $err . '</p>';
				}
			}
			else {
				echo '<h2>De volgende waarden zullen worden verzonden:</h2>';
				foreach ($values as $key => $value) {
					echo '<p>' . $key . ': ' . $value . '</p>';
				}
			}
		}
	?>
	<h1>Velden met een sterretje zijn verplicht</h1>
	<form method="post" action="#">
		<p>
			<label for="veld1">veld 1 (*):</label>
			<input id="veld1" name="veld1" type="text" value="<?php if (isset ($values['veld1'])) echo $values['veld1']; ?>">
		</p>
		<p>
			<label for="veld2">veld 2 (*):</label>
			<input id="veld2" name="veld2" type="text" value="<?php if (isset ($values['veld2'])) echo $values['veld2']; ?>">
		</p>
		<p>
			<label for="veld3">veld 3:</label>
			<input id="veld3" name="veld3" type="text" value="<?php if (isset ($values['veld3'])) echo $values['veld3']; ?>">
		</p>
		<p>
			<label for="veld4">veld 4:</label>
			<input id="veld4" name="veld4" type="text" value="<?php if (isset ($values['veld4'])) echo $values['veld4']; ?>">
		</p>
		<p>
			<input type="submit" value="verzenden">
		</p>
	</form>
	
	</div>
	</div>
</body>
</html>
zet je het in een Mysql. dan de niet verplichte velden op NULL zetten ipv NOT NULL en als MySQL niets ontvangt maakt hij er automatisch NULL van
Misschien: een tussenpagina waarbij hij kijkt welke velden er leeg zijn dmv: !empty($_POST) en dan met een if de ingevulde velde in een sessie zetten
Bart schreef op 25.06.2007 16:40
stel, je hebt

<b>Wat wilt u extra op uw pizza ?</b><br />
<input type="text" name="extra_op_pizza"><br />
<b>Wat wilt u om te drinken ?</b><br />
<input type="text" name="drankje">


dan verwerk je het zo :

<?
if($_POST['extra_op_pizza']==""){
$extra = "niets";
}
else {
$extra = $_POST['extra_op_pizza'];
}
if($_POST['drankje']==""){
$drankje = "niets";
}
else {
$drankje = $_POST['drankje'];
}
//en dat bv.
mail(...);
?>


Hmm, dat is ook niet echt netjes..

<?php
$drankje = (!empty($_POST[' drankje'])) ? $_POST['drankje'] : 'niets'; //niets kun je natuurlijk ook vervangen door NULL o.i.d.
?>

@ TS:

Volgens mij zijn hier toch al wel genoeg goede oplossingen gegeven, als het nog niet werkt moet je misschien even een relevant deel van je script posten...

Reageren