Verplicht velden invoeren in een Form

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

B van der Leeden

B van der Leeden

17/07/2014 15:40:19
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<!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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?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?
Gewijzigd op 17/07/2014 15:41:47 door B van der Leeden
 
PHP hulp

PHP hulp

25/12/2024 02:40:09
 
Victor G

Victor G

17/07/2014 15:53:04
Quote Anchor link
Van php.net:
Quote:
(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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(!isset($_POST['var'])) {
// var is null
}
?>


Wat je dus wil is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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
}

?>
Gewijzigd op 17/07/2014 15:54:52 door Victor G
 
B van der Leeden

B van der Leeden

17/07/2014 15:55:28
Quote Anchor link
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.
 
Victor G

Victor G

17/07/2014 16:04:46
Quote Anchor link
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.
Gewijzigd op 17/07/2014 16:04:54 door Victor G
 
B van der Leeden

B van der Leeden

17/07/2014 16:07:39
Quote Anchor link
Voor elke variable een stukje aanmaken? en moet ik || of && gebruiken? of denk ik verkeerd xD?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?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
Gewijzigd op 17/07/2014 16:09:34 door B van der Leeden
 
Frank Nietbelangrijk

Frank Nietbelangrijk

17/07/2014 16:10:25
Quote Anchor link
Alphanummerieke velden kun je controleren met

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

Numerieke velden
If($var > 0)
// getal is groter dan nul
 
Victor G

Victor G

17/07/2014 16:11:24
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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...
}

?>
 
B van der Leeden

B van der Leeden

17/07/2014 16:15:26
Quote Anchor link
Op deze manier dus?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?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");  }
}

?>


Toevoeging op 17/07/2014 16:16:24:

Bedankt voor de post victor G

Ik ga ff testen.

Toevoeging op 17/07/2014 16:22:59:

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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
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?

Toevoeging op 17/07/2014 16:36:11:

Heb nu de volgende code

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?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.
Gewijzigd op 17/07/2014 16:38:58 door B van der Leeden
 
Stefan WM

Stefan WM

17/07/2014 16:56:42
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(!isset($type) || !isset($opmerkingen) {
    echo ' fout!';
}
else {
    echo ' goed';
}

?>


zet ze is allemaal los tussen een !isset() ;)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

17/07/2014 17:47:04
Quote Anchor link
@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).
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?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
?>
Gewijzigd op 17/07/2014 18:03:33 door Frank Nietbelangrijk
 
Peter  Flos

Peter Flos

17/07/2014 17:57:47
Quote Anchor link
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.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

17/07/2014 18:02:02
Quote Anchor link
B van der Leeden Je moet in je php code eerst testen of het formulier verstuurd is.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    // het formulier is verstuurd.
}
?>


Daarna ga je het formulier valideren:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?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
Gewijzigd op 17/07/2014 18:10:09 door Frank Nietbelangrijk
 
Stefan WM

Stefan WM

18/07/2014 09:51:58
Quote Anchor link
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..
 
B van der Leeden

B van der Leeden

18/07/2014 10:09:49
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<!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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.