Hoe zou ik het volgende doen.
Een pagina waar je in een formulier iets intikt.
Je controleert het gegeven.
Indien het gegeven niet ok is moet je de pagina terug tonen met een melding dat je uw gegeven niet volgens de regels hebt gedaan en anders moet je naar een nieuwe pagina gaan.
[off-topic]
Op al mijn vragen heb ik hier of via google altijd nog een antwoord kunnen vinden. Ik ben meer het type eerst zelf uitzoeken, en pas als het echt niet lukt vragen. Maar dat kom ik weinig tegen ;-)
[/off-topic]
Vaak is het inderdaad zo dat beginnelingen (niets op tegen overigens, je zal het toch moeten leren) niet zoveel moeite doen om dingen op te zoeken, maar gewoon meteen vragen.
-->Kiezen voor de gemakkelijkste weg<--
De wat meer gevorderde PHP-hulpers stellen niet vaak vragen, dus als ze ergens niet uit komen op het 1e moment, dan proberen ze dat zelf uit te zoeken.
@robert Dat is ook van hoe jezelf bent? vraag je alles maar aan iedereen als je het weer eens niet snapt? of ben je zelfstandig en zoek je het zelf op xP.. toevallig hadden we het bij bedrijfskunde het erover gisteren
<?php
session_start();
// indien er gepost wordt, anders het onderstaande stuk niet tonen
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Alle elementen uit de $_POST array controleren
if ( empty($_POST['voornaam']) or empty($_POST['achternaam']) or empty($_POST['woonplaats']) or empty($_POST['geboortejaar']))
{
//echo '<p><b>U heeft niet alle velden ingevuld.</b></p>';
}
else
{
header("Location: ietsanders.php");
}
}
?>
<!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>Invulformulier</title>
<style type="text/css">
.rechts {
text-align: right;
}
#container {
margin-top: 10px;
margin-right: auto;
margin-bottom: 5px;
margin-left: auto;
border: 1px solid #78BF60;
width: 80%;
padding: 10px;
background-color: #A0FF80;
}
#code {
background-color: #ECFFE6;
padding: 10px;
width: 90%;
margin-top: 5px;
margin-right: auto;
margin-bottom: 5px;
margin-left: auto;
border: 1px solid #78BF60;
font-size: 12px;
overflow: hidden;
}
label {
cursor:pointer;
}
label.naast {
float: left;
width: 100px;
text-align: right;
padding-right: 5px;
padding-top: 2px;
}
input.fout {
border: 2px solid #FF0000;
}
</style>
</head>
<body>
<div id="container">
<h2>Formulieren: Ingevulde velden onthouden en niet ingevulde velden markeren.</h2>
<p>Je kent het wel: je hebt een formulier nog niet helemaal ingevuld en drukt per ongeluk op verzenden.
Je krijgt een melding dat je niet alles hebt ingevuld en wordt teruggestuurd naar het formulier. Maar wat blijkt: alle ingevulde velden zijn leeg!</p>
<p>Dit is natuurlijk niet gewenst, vandaar dit voorbeeld. Door gebruik te maken van sessies is het mogelijk om variabelen op verschillende pagina's
te gebruiken. Hoewel ik hier met 1 pagina werk, zou je net zo makkelijk het formulier en de php logica op 2 verschillende pagina's kunnen plaatsen.
Dit script zorgt ervoor dat de niet ingevulde velden gemarkeerd worden en de reeds ingevulde waarden bewaard blijven. </p>
<form action="#" method="post" name="example">
<p>
<label for="voor" class="naast">Voornaam:</label>
<input type="text"
id="voor"
name="voornaam"
value="<?php echo isset($_POST['voornaam']) ? $_POST['voornaam'] : ''; ?>"
class="<?php echo (isset($_POST['voornaam']) && !empty($_POST['voornaam'])) ? '' : 'fout'; ?>"
/>
</p>
<p>
<label for="achter" class="naast">Achternaam:</label>
<input type="text"
id="achter"
name="achternaam"
value="<?php echo isset($_POST['achternaam']) ? $_POST['achternaam'] : ''; ?>"
class="<?php echo (isset($_POST['achternaam']) && !empty($_POST['achternaam'])) ? '' : 'fout'; ?>"
/>
</p>
<p>
<label for="woon" class="naast">Woonplaats:</label>
<input type="text"
id="woon"
name="woonplaats"
value="<?php echo isset($_POST['woonplaats']) ? $_POST['woonplaats'] : ''; ?>"
class="<?php echo (isset($_POST['woonplaats']) && !empty($_POST['woonplaats'])) ? '' : 'fout'; ?>"
/>
</p>
<p>
<label for="geboortejaar" class="naast">Geboortejaar:</label>
<select id="geboortejaar" name="geboortejaar">
<?php
for($i = date('Y'); $i >= 1900; $i--)
{
if(isset($_POST['geboortejaar']) && $_POST['geboortejaar'] == $i)
{
echo '<option value="'.$i.'" selected="selected">'.$i.'</option>';
}
else
{
echo '<option value="'.$i.'">'.$i.'</option>';
}
}
?>
</select>
<p>
<input type="submit" value="Verzenden" class="lijnuit" />
</p>
</form>
</div>
<div id="code">
<?php
// hiermee haal je de paginanaam op
$filename = basename($_SERVER['PHP_SELF']);
// en hier toon je de code van de pagina
highlight_file($filename);
?>
</div>
Dus zoals beloofd!
Maar willen jullie dit eens evalueren?
@robert Dat is ook van hoe jezelf bent? vraag je alles maar aan iedereen als je het weer eens niet snapt? of ben je zelfstandig en zoek je het zelf op xP.. toevallig hadden we het bij bedrijfskunde het erover gisteren
Klinkt nogal bekend ;) Staat ook in een boek wat ik voor school wel eens heb gebruikt, ben alleen de naam (en het boek) kwijt.
Maar het ligt inderdaad ook aan hoe jezelf bent, maar als je kennis wat groter wordt, dan heb je vaak minder snel de behoefte om meteen een vraag te stellen, omdat je bronnen voor het vinden van informatie vaak groter zijn dan wanneer je begint.
Maar het heeft ook heel veel met je eigen instelling te maken. Ik ben zelf ook meer van het zoeken, proberen en als "laatste" redmiddel, of gewoon om even te checken of je iets goed aanpakt, pas posten op het forum.