Beste mensen,

Ik heb een form gemaakt waarmee je een product kan invoeren in de database. Werkt perfect :D.
Maar loop nu tegen het volgende aan:

Als je die velden blanco laat dan accepteer hij deze ook, en dat is iets wat ik niet wil.

Heb gegoogled en kwam dit tegen: if (!isset($_POST[' '])).

Heb ermee geknoeid om hte werkend te krijgen maar alas. no succes.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 <head> 
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  <title>DemoPool</title> 
 </head> 
 <body background="Plaatje.png">
  <div style="width:100%" align="center" >
  <div style="color: white">
   <h1>Welkom</h1>
   <h2>Vul hier de gegevens in</h2>
  </div>
  <div style="color: white">
   <form name="form1" method="POST" action="addprinter_check.php">
    <table width="500" border="15" align="center" cellpadding="3" cellspacing="6" bgcolor="BLACK">
     <tr>
      <td>
       <table width="100%" border="0" cellpadding="10" cellspacing="5" bgcolor="#FFFFFF">
        <tr>
	 <td style="color: Black">
		 Class:<br />
		 <input type="text" name="class"><br />
		 Type:<br />
		 <input type="text" name="type"><br />	
		 Properties:<br />
		 <input type="text" name="properties"><br />
		 Firmware:<br />
		 <input type="text" name="firmware"><br />
		 opslaglocatie:<br />
		 <input type="text" name="opslaglocatie"><br />
		 BNL:<br />
		 <input type="text" name="bnl"><br />
		 </td>
		 <td style="color: Black">
		 Doos"LxBxH":<br />
		 <input type="text" name="doos"><br />
		 Serienummer:<br />
		 <input type="text" name="serienummer"><br />
		 Productcode:<br />
		 <input type="text" name="productcode"><br />
		 Status:<br />
		 <input type="text" name="status"><br />
		 Opmerkingen:<br />
		 <input type="text" name="opmerkingen">
		 <br />
		 <br />
		 <input type="submit" name="toevoegen" value="Toevoegen">
	 </td>
	</tr>
	<tr>
          <td style="color: Black">
          <input type="button" value="Vorige pagina" onclick="location.href '../DemoPool/printerbeheer.php'">
          <input type="button" value="Logout" onclick="location.href = '../DemoPool/login.php'">
         </td>
        </tr>
       </table>
      </td>
     </tr>
    </table>     
   </form>
  </div>
 </body>  
</html>


en hier de PHP


<?php 
// include connection file
include("config.php");
				
//variables
$class = $_POST[ 'class' ];
$type = $_POST[ 'type' ];
$properties = $_POST[ 'properties' ];
$firmware = $_POST[ 'firmware' ];
$opslaglocatie = $_POST[ 'opslaglocatie' ];
$bnl = $_POST[ 'bnl' ];
$doos = $_POST[ 'doos' ];
$serienummer = $_POST[ 'serienummer' ];
$productcode = $_POST[ 'productcode' ];
$status = $_POST[ 'status' ];
$opmerkingen = $_POST[ 'opmerkingen' ];



$sql = "INSERT INTO demopool ( class, type, properties, firmware, opslaglocatie, bnl, doos, serienummer, productcode, status, opmerkingen) 
		VALUES ( :class, :type, :properties, :firmware, :opslaglocatie, :bnl, :doos, :serienummer, :productcode, :status, :opmerkingen)";

 $query = $dbh->prepare( $sql );
 $query->execute( array( ':class'=>$class, ':type'=>$type, ':properties'=>$properties, ':firmware'=>$firmware, ':opslaglocatie'=>$opslaglocatie, ':bnl'=>$bnl, ':doos'=>$doos, ':serienummer'=>$serienummer, ':productcode'=>$productcode, ':status'=>$status, ':opmerkingen'=>$opmerkingen ) );

 if (is_null($sql))
{ header( "location:addprinter.php");  }

else    { header( "location:admin.php");  } 
?>


Kan iemand me hier op weg helpen?
B van der Leeden Je moet in je php code eerst testen of het formulier verstuurd is.

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// het formulier is verstuurd.
}
?>

Daarna ga je het formulier valideren:

<?php
// het valideren doen we in een aparte functie om onze code overzichtelijk te houden.
function validate()
{
$errors = array();

if(strlen($_POST['class']) == 0)
$errors[] = 'U moet een class opgeven.';

if(strlen($_POST['type']) == 0)
$errors[] = 'U moet een type opgeven.';

return $errors;
}

// lege array voor de errors
$errors = array();

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$errors = validate(); // roep de functie validate() aan en zet de foutmeldigen in $errors.

if(!count($errors)) // als er geen foutmeldingen zijn
{
// sla pas nu de gegevens op in de database

// redirect de gebruiker naar een andere pagina
header('Location: bedankt.php');
}

}

// laat de foutmeldingen zien als ze er zijn
foreach($errors as $error)
{
echo $error.'<br>';
}
?>
en hieronder je HTML
Dat weet ik Frank, alleen hoe hij het nu doet werkt het zeker niet. Ik wijs hem alleen op een fout.
Ik snap ook dat je daar voor empty() moet gebruiken..
Beste Frank,

Ik heb jouw uitleg is goed doorgelezen. En mijn code aangepast aan de hadn daarvan. Tot mijn grote vreugde werkt het zoals het hoort te werken nu. Bedankt voor de tijd en support van iedereen. Ik post hieronder de php code die voor mij nu goed werkt.

De HTML pagina:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 <head> 
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  <title>DemoPool</title> 
 </head> 
 <body background="Plaatje.png">
  <div style="width:100%" align="center" >
  <div style="color: white">
   <h1>Welkom</h1>
   <h2>Vul hier de gegevens in</h2>
  </div>
  <div style="color: white">
   <form name="form1" method="POST" action="addprinter_check.php">
    <table width="500" border="15" align="center" cellpadding="3" cellspacing="6" bgcolor="BLACK">
     <tr>
      <td>
       <table width="100%" border="0" cellpadding="10" cellspacing="5" bgcolor="#FFFFFF">
        <tr>
	     <td style="color: Black">
		 Class:<br />
		 <input type="text" name="class"><br />
		 Type:<br />
		 <input type="text" name="type"><br />	
		 Properties:<br />
		 <input type="text" name="properties"><br />
		 Firmware:<br />
		 <input type="text" name="firmware"><br />
		 opslaglocatie:<br />
		 <input type="text" name="opslaglocatie"><br />
		 BNL:<br />
		 <input type="text" name="bnl"><br />
		 </td>
		 <td style="color: Black">
		 Doos"LxBxH":<br />
		 <input type="text" name="doos"><br />
		 Serienummer:<br />
		 <input type="text" name="serienummer"><br />
		 Productcode:<br />
		 <input type="text" name="productcode"><br />
		 Status:<br />
		 <input type="text" name="status"><br />
		 Opmerkingen:<br />
		 <input type="text" name="opmerkingen">
		 <br />
		 <br />
		 <input type="submit" name="toevoegen" value="Toevoegen">
		 </td>
		</tr>
		<tr>
		 <td style="color: Black">
          <input type="button" value="Vorige pagina" onclick="location.href = '../DemoPool/printerbeheer.php'">
		  <input type="button" value="Logout" onclick="location.href = '../DemoPool/login.php'">
         </td>
        </tr>
       </table>
      </td>
     </tr>
    </table>     
   </form>
  </div>
 </body>  
</html>



Het PHP gedeelte

<?php

//Variables
$class = $_POST[ 'class' ];
$type = $_POST[ 'type' ];
$properties = $_POST[ 'properties' ];
$firmware = $_POST[ 'firmware' ];
$opslaglocatie = $_POST[ 'opslaglocatie' ];
$bnl = $_POST[ 'bnl' ];
$doos = $_POST[ 'doos' ];
$serienummer = $_POST[ 'serienummer' ];
$productcode = $_POST[ 'productcode' ];
$status = $_POST[ 'status' ];
$opmerkingen = $_POST[ 'opmerkingen' ];

// het valideren doen we in een aparte functie om onze code overzichtelijk te houden.
function validate()
{
    $errors = array();

    if(strlen($_POST['class']) == 0)
        $errors[] = 'U moet een klasse printer opgeven.';
    
    if(strlen($_POST['type']) == 0)
        $errors[] = 'U moet een type printer opgeven.';
		
	if(strlen($_POST['properties']) == 0)
        $errors[] = 'U moet de eigenschappen opgeven.';
		
	if(strlen($_POST['firmware']) == 0)
        $errors[] = 'U moet een firmware versie opgeven.';
		
	if(strlen($_POST['opslaglocatie']) == 0)
        $errors[] = 'U moet een locatie opgeven.';
		
	if(strlen($_POST['bnl']) == 0)
        $errors[] = 'U moet een BNL-nummer opgeven.';
	
	if(strlen($_POST['doos']) == 0)
        $errors[] = 'U moet de grote van de doos opgeven.';
		
	if(strlen($_POST['serienummer']) == 0)
        $errors[] = 'U moet een serienummer opgeven.';
	
	if(strlen($_POST['productcode']) == 0)
        $errors[] = 'U moet een productcode opgeven.';
	
	if(strlen($_POST['status']) == 0)
        $errors[] = 'U moet een status opgeven.';

    return $errors;
}

// lege array voor de errors
$errors = array();

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $errors = validate(); // roep de functie validate() aan en zet de foutmeldigen in $errors.

    if(!count($errors)) // als er geen foutmeldingen zijn
    {
        // include connection file
		include("config.php");

		$sql = "INSERT INTO demopool ( class, type, properties, firmware, opslaglocatie, bnl, doos, serienummer, productcode, status, opmerkingen) 
		VALUES ( :class, :type, :properties, :firmware, :opslaglocatie, :bnl, :doos, :serienummer, :productcode, :status, :opmerkingen)";

		$query = $dbh->prepare( $sql );
		$query->execute( array( ':class'=>$class, ':type'=>$type, ':properties'=>$properties, ':firmware'=>$firmware, ':opslaglocatie'=>$opslaglocatie, ':bnl'=>$bnl, ':doos'=>$doos, ':serienummer'=>$serienummer, ':productcode'=>$productcode, ':status'=>$status, ':opmerkingen'=>$opmerkingen ) );

{ header( "location:admin.php");  }
}

// laat de foutmeldingen zien als ze er zijn
foreach($errors as $error)
{
    echo $error.'<br>';
}
}
?>


Nogmaals Bedankt :D

Reageren