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?
Van php.net:
(PHP 4, PHP 5)
isset — Determine if a variable is set and is not NULL


De ! ervoor betekend niet, dus jij wil nu dat hij niet geset is. Jij kijkt nu dus of het variable null (=leeg) is.

<?php
if(!isset($_POST['var'])) {
// var is null
}
?>

Wat je dus wil is:

<?php
if(isset($_POST['var'])) {
// var is geset / niet leeg
}

// OF
// Allebei werken

// not empty, dus niet leeg
if(!empty($_POST['var'])) {
// var is niet leeg
}

?>
Wat er eigenlijk moet gebeuren is als we een printer toevoegen in de database met behulp van de form dat elke veld ingevuld moet zijn.
Wat je kan doen:

Je hebt een objectsoort (een printer, een computer), attributen (firmware, merk, type).

Een objectsoort koppeling met attributen, zo maak je in principe een blauwdruk van je object en kan je per attribuut aangeven wat hij bij die object soort moet zijn.

Als je dan een object toevoegt haal je je koppeling op en laad je dat in een form, en dat sla je op in je database.
Voor elke variable een stukje aanmaken? en moet ik || of && gebruiken? of denk ik verkeerd xD?

<?php
if(isset($_POST['type'] || $_POST['class'])) 	// waar plaats ik mijn object? 
{ 
{ header( "location:addprinter.php");  }
}

?>



Wat de code moet doen is kijken of de velden leeg zijn. Als deze velden leeg zijn niet de insert query uitvoeren maar opnieuw terugverwijzen naar de Addprinter.php

Alphanummerieke velden kun je controleren met

If(strlen($var) == 0)
// veld heeft geen inhoud

Numerieke velden
If($var > 0)
// getal is groter dan nul
<?php
$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' ];

// Veld of velden leeg
if(!isset($class, $type, $properties, $firmware, $opslaglocatie, $bnl, $doos, $serienummer, $status, $opmerkingen)) {
header('Location: addprinter.php');
} else {
// query...
}

?>
Op deze manier dus?


<?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' ];

if(!isset($class, $type, $properties, $firmware, $opslaglocatie, $bnl, $doos, $serienummer, $status, $opmerkingen)) {
header('Location: addprinter.php');
} else 
{
// 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 ) );

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

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


[size=xsmall]Toevoeging op 17/07/2014 16:16:24:[/size]

Bedankt voor de post victor G

Ik ga ff testen.

[size=xsmall]Toevoeging op 17/07/2014 16:22:59:[/size]

Ik denk dat ik nog een stukje code in me php file heb dat er niet hoort of niet goed staat.


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

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


Die staat onderaan. En ik heb nu ook een IF else met daarin een if else. Kan dit wel?

[size=xsmall]Toevoeging op 17/07/2014 16:36:11:[/size]

Heb nu de volgende code


<?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' ];

if
(!isset($class, $type, $properties, $firmware, $opslaglocatie, $bnl, $doos, $serienummer, $status, $opmerkingen))
	{ header('Location: addprinter.php');} 
	
else{
// 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");  }
}
?>


Hij laat nu nog steeds toe dat er een printer kan worden toegevoegd waar bv geen type voor is ingevuld.
Waar ga ik de mist in?

Alvast bedankt voor de support en ondersteuning die al gegeven is.

<?php
if(!isset($type) || !isset($opmerkingen) {
	echo ' fout!';
} else {
	echo ' goed';
}
?>


zet ze is allemaal los tussen een !isset() ;)
@Victor en Stefan (en B van der Leeden):

Je kunt met isset() NIET controleren of een variabele leeg is of enige inhoud heeft! Je kunt met isset() enkel controleren of een variabele bestaat (of beter gezegd geïnitialiseerd is).
<?php
if(isset($a))
echo 'variabele a is geïnitialiseerd.'; // niet waar
else
echo 'variabele a is NIET geïnitialiseerd.'; // waar

$a = ''; // initialiseer $a en geef een hem de waarde 'lege string'

if(isset($a))
echo 'variabele a is geïnitialiseerd.'; // waar
else
echo 'variabele a is NIET geïnitialiseerd.'; // niet waar
?>
Tevens ook nog iets, Client-Side wel aardig als je even bij elk invoerveld er required achter zet zodat ik een melding krijg (Mits JS aan), dat een veld leeg is.

Reageren