Ik ben bezig geweest om al mijn fouten uit het script te halen maar na een eindcontrole bleek dat er geen formulier meer wordt toegevoegd wanneer ik een nieuwe wil toevoegen.

Het is het volgende script gedeelte:

<?

$form = true;

if(isset($_GET['a']) && $_GET['a'] == "toevoegen"){
$form = true;

if(isset($_POST['submit'])){
$form = false;

if($_POST['titel'] == "" || $_POST['prijs'] == ""){
echo mededeling("rood", "Een of meerdere verplichte velden zijn leeg gelaten.");
$form = true;
}
if(!$form){


if(!$form){
$sql = mysql_query("INSERT INTO Tabel
VALUES ('', '". $_POST['titel'] ."', '". $_POST['geinspireerd'] ."', '". $_POST['inhoud'] ."', '". $_POST['prijs'] ."', '". $_POST['geurgroep'] ."', '". $_POST['details'] ."', '". $_POST['collectie'] ."', '". $_POST['model'] ."', '". $_POST['afbeelding'] ."', '". $_POST['nieuw'] ."')");
if($sql){
echo mededeling("uitroepteken", "De parfum is succesvol toegevoegd.");
$overzicht = true;
}
else{
echo mededeling("error", "Er ging iets fout tijdens het toevoegen van dit parfum. Hieronder kunt u het nogmaals proberen.");
$form = true;
}
}
}

if($form){
echo "<form method='post'>
<table width='500' border='0' cellpadding='0' cellspacing='0'>
<tr>
<td>Naam:</td>
<td><input size='47' type='text' value='". $_POST['titel'] ."' name='titel'></td>
</tr>
<tr>
<td>Geinspireerd door:</td>
<td><input size='47' type='text' value='". $_POST['geinspireerd'] ."' name='geinspireerd'></td>
</tr>
<tr>
<td>Inhoud:</td>
<td>
<select name='inhoud'>";
$s_q = mysql_query("SELECT * FROM Inhoud ORDER BY Inhoud DESC") or die(mysql_error());
while($s = mysql_fetch_assoc($s_q)){
echo "<option value='". $s['ID'] ."'>". $s['Inhoud'] ."</option>";
}
echo "</select></td>
</tr>
<tr>
<td>Prijs:</td>
<td>
<select name='prij...

";
?>

Ik hoop dat iemand van jullie ziet waarom het formulier niet meer wordt weergegeven op de pagina.
Omdat je niet alles afsluit. Zet je error_reporting maar eens aan. Je zult zien dat je een unexpected $end error krijgt.

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

// rest van je code
?>
Nee, het vreemde van alles is. Ik krijg geen foutmeldingen meer... spijtig genoeg.
Kijk nu eens goed naar je code. Waarom staat er twee keer achter elkaar:

<?php
if(!$form){
?>
Owja, ik heb er 1 van die 2 weg gehaald.... nu werkt alleen het posten van het formulier niet meer, ik heb al wel het formulier terug
Naast dat je script op dit moment niet blijkt te werken, zou het ook nog eens ontzettend onveilig zijn als het wel werkt. SQL injectie ligt op de loer aangezien je POST variabelen direct in je query gebruikt.

Neem eens een kijkje in deze PHP beginnershandleiding en lees dan met name de stukken die over forumlieren in PHP gaan. Daar wordt uitgelegd hoe je formulieren veilig opzet. Ook dit script met een uitgebreide formuliercontrole is het bekijken waard. Succes!
1. Gebruik single quotes, Is makkelijker om mee te werken.
2. Een formulier posten doen we op de volgende manier:

<?PHP

if($_SERVER['REQUEST_METHOD'] == 'POST') {

?>

3. Bij je query gebruik je *, Noem gewoon alle namen op die je eruit wilt halen.
4. Om een veld controle te doen kan je het beste op de volgende manier doen:

<?PHP

if(isset($_POST['blaat']) && !empty($_POST['blaat'])) (

?>

5. Gebruik gewoon <? PHP in plaats van < ?

Als je deze dingen toepast, Dan kom je al een heel stuk opgang om een goed scriptje te maken.
ark schreef op 06.06.2009 15:53
4. Om een veld controle te doen kan je het beste op de volgende manier doen:
Die isset() is daar overbodig, die zit immers ook al in empty() verwerkt. Die functie controleert namelijk zowel of een variabele bestaat en of hij gevuld is.

ps. In een formulier controle is het niet altijd handig om empty() te gebruiken, aangezien deze functie ook false teruggeeft bij bijvoorbeeld '0'. Gebruik voor de controle op een lege string liever:
<?php
if($string != '')
{
// $string is met een waarde gevuld
}
?>
Dank jullie wel voor de posten. Ik ga er gewoon opnieuw mee aan de slag, en ga eerst eens die pagina goed doorlezen die ik eerder kreeg.
@ Blanche

Dus eigenlijk is

<?PHP

if(!empty($_POST['blaat']) {

?>

al goed genoeg?

/* Edit */

Dan zou de volgende manier ook goed zijn?

<?PHP

if(isset($_POST['blaat']) && $_POST['blaat'] !== '') {

?>
@ Ark, inderdaad. Maar zoals hij zegt, bij invullen van 0 returned hij wel false

Reageren