Ik heb dit genomen en een beetje aangepast: http://www.phphulp.nl/php/script/php-algemeen/beveiligde-login-en-registratie/1873/registreervphp/1537/

Maar het lukt mij niet om die informatie in de database te krijgen. De bestaande records in “T_Leden” tabel laat die wel zien, maar kan er niets aan toevoegen:

config.inc.php
<?php
/* no cache */
header("Expires: Mon, 26 Jul 1990 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

/* connecten met DB */
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';

$connect = mysql_connect($dbhost, $dbuser, $dbpass);
if(!$connect) {
	die('Kon geen verbinding maken: ' . mysql_error());
}

$dbname = 'db_school';
mysql_select_db($dbname);

/* menu */
$menu = "<p style=\"text-align:center\"><a href=\"/vlad/examen/index.php\">Begin</a> - <a href=\"/vlad/examen/files/list.php\">Leden weergeven</a> - <a href=\"/vlad/examen/files/add.php\">Lid toevoegen</a></p>";
?>


add.php
<?php include_once("config.inc.php"); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
	<title>Lid aanmaken</title>
	<meta http-equiv="content-type" content="text/html;charset=utf-8" />
	<meta name="generator" content="Geany 0.20" />
</head>

<body>
<h1 style="text-align: center">Lid Aanmaken</h1>
<br /><? echo $menu ?><br />
<form id="form1" name="form1" method="post" action="addf.php">
  <p>
    <label for="naam">Naam:</label>
    <input type="text" name="naam" />
  </p>
  <p>
    <label for="voornaam">Voornaam:</label>
    <input type="text" name="voornaam" />
</p>
  <p>
    <label for="adres">Adres:</label>
    <input type="text" name="adres" />
</p>
  <p>
    <label for="peter">Peter:</label>
    <input type="text" name="peter" />
</p>
  <p>
    <label for="soortlid">Soort lid:</label>
    <select name="lid">
    <option value="Bestuurslid" name="lid">Bestuurslid</option>
    <option value="Gewoon lid" name="lid">Gewoon lid</option>
    <option value="Uitgetreden lid" name="lid">Uitgetreden lid</option>
    </select>
  </p>
  <p>
    <label for="naam7">Laatst betaald:</label>
    <input type="text" name="betaald" value="DD/MM/XXXX" maxlength="10" />
  </p>
  <p>
    <input type="submit" value="Verzenden" />
  </p>
</form>

</body>
</html>
<?php
mysql_close($connect);
?>

addf.php
<?php include_once("config.inc.php"); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
	<title>Lid aanmaken</title>
	<meta http-equiv="content-type" content="text/html;charset=utf-8" />
	<meta name="generator" content="Geany 0.20" />
</head>

<body>
<h1 style="text-align: center">Lid Aanmaken</h1>
<br /><br />
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is geklikt.
{
    if(!empty($_POST['naam']) AND !empty($_POST['voornaam']) AND !empty($_POST['adres']) AND !empty($_POST['peter']) AND !empty ($POST['lid']) AND !empty ($POST_['betaald'])) // Controle op invoeren
    {
		$naam = mysql_real_escape_string($_POST['naam']);
		$voornaam = mysql_real_escape_string($_POST['voornaam']);
		$adres = mysql_real_escape_string($_POST['adres']);
		$peter = mysql_real_escape_string($_POST['peter']);
		$lid = mysql_real_escape_string($_POST['lid']);
		$betaald = mysql_real_escape_string($_POST['betaald']);
		
		mysql_query("INSERT INTO T_Leden (D_index, D_Naam, D_Voornaam, D_Adres, D_Peter, D_Lid, D_Betaald) VALUES (NULL, '".$naam."', '".$voornaam."', '".$adres."', '".$peter."', '".$lid."', strtodate('".$betaald."', '%d/%m/%Y'));"); // Gebruiker in db plaatsen.
		
		header('Refresh: 4; url=list.php');
		exit ('Lid toegevoegd, u kunt nu verder gaan.');
	}
	else
	{
		exit ('De ingevoerde gegevens kloppen niet.');  // Negatieve melding van ingevoerde gegevens.
	}
}

?> 

</body>
</html>
<?php
mysql_close($connect);
?>


list.php
<?php include_once("config.inc.php"); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
	<title>Ledenlijst</title>
	<meta http-equiv="content-type" content="text/html;charset=utf-8" />
	<meta name="generator" content="Geany 0.20" />
</head>

<body>
<h1 style="text-align: center">Ledenlijst</h1>
<br /><? echo $menu ?><br />
<table align="center" border="1">
<tr>
<td><b><a href="list.php?sortby=index">ID</a></b></td>
<td><b><a href="list.php?sortby=naam">Naam</a></b></td>
<td><b><a href="list.php?sortby=voornaam">Voornaam</a></b></td>
<td><b><a href="list.php?sortby=adres">Adres</a></b></td>
<td><b><a href="list.php?sortby=peter">Peter</a></b></td>
<td><b><a href="list.php?sortby=lid">Soort lid</a></b></td>
<td><b><a href="list.php?sortby=betaald">Laatst betaald</a></b></td>
<td><b><a href="list.php?sortby=gdatum">Geboorte datum</a></b></td>
<td><b>Actie</b></td>
</tr>
<?php
/* Een switch om sorteren makkelijk te maken */
switch(isset($_GET['sortby'])) {
	case 'ID':
		$result=mysql_query("SELECT D_index,D_Naam,D_Voornaam,D_Adres,D_Peter,D_Lid,D_Betaald,D_Gdatum FROM T_Leden ORDER BY D_".$_GET['sortby']);
		break;
	default:
		$result=mysql_query("SELECT D_index,D_Naam,D_Voornaam,D_Adres,D_Peter,D_Lid,D_Betaald,D_Gdatum FROM T_Leden ORDER BY D_index");
		break;
	}

/* Een loop om leden te tonen */
while( $row=mysql_fetch_array($result) )
	{
		echo "<tr>";
		echo "<td>".htmlspecialchars($row['D_index'])."</td>";
		echo "<td>".htmlspecialchars($row['D_Naam'])."</td>";
		echo "<td>".htmlspecialchars($row['D_Voornaam'])."</td>";
		echo "<td>".htmlspecialchars($row['D_Adres'])."</td>";
		echo "<td>".htmlspecialchars($row['D_Peter'])."</td>";
		echo "<td>".htmlspecialchars($row['D_Lid'])."</td>";
		echo "<td>".htmlspecialchars($row['D_Betaald'])."</td>";
		echo "<td>".htmlspecialchars($row['D_Gdatum'])."</td>";
		echo "<td>Verwijder/Bewerk</td>";
		echo "</tr>";
		}
?>
</table>
<ul>
  <li>Leden laten uittreden (gegevens bijgehouden)</li>
  <li>Leden displayen
  </li>
  <ul>
    <li>Iedereen
      <ul>
        <li>Alfabetisch</li>
        <li>Op geboorte datum</li>
        <li>Op naam van peter</li>
      </ul>
    </li>
    <li>Enkel de <strong>vrouwen</strong>
      <ul>
        <li>Alfabetisch </li>
        <li>Op geboorte datum </li>
        <li>Op naam van peter</li>
      </ul>
    </li>
    <li>Enkel de <strong>mannen</strong>
      <ul>
        <li>Alfabetisch</li>
        <li>Op geboorte datum</li>
        <li>Op naam van peter</li>
      </ul>
    </li>
    <li>Enkel de <strong>bestuursleden</strong>
      <ul>
        <li>Alfabetisch</li>
        <li>Op geboorte datum</li>
        <li>Op naam van peter</li>
      </ul>
    </li>
  </ul>
</ul>

</body>
</html>
<?php
mysql_close($connect);
?>
zorg dat je een error afhandeling aan query's toevoegt.

voorbeeld:
<?php
// zet dit bovenaan het script

// errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);

// sql debug
define('DEBUG_MODE',true); // true == aan, false == uit

// functie voor sql debug
function showSQLError($sql,$error)
{
echo '<pre>Error: '.$error.'<br />'.$sql.'</pre>';
}


// start van het script
// zet dit waar je query moet

// de query
// let op sql-injectie -> mysql_real_escape_string()
$sql = "
";

// Check query
if (($result = mysql_query($sql)) === false)
{
// als de query fout is -> foutafhandeling
echo 'Fout met database.';

// geef de error via de functie (bovenaan script)
if (DEBUG_MODE)
{
showSQLError($sql,mysql_error());

}
}
else
{
// De query is gelukt
}
?>
// EDIT: PHP Jasper was me voor.
Wow, bedankt Jasper, dat zijn al direct plus punten op mijn taak! :D

Als ik de code copy paste en gewoon van boven zet, krijg ik dit:
Fout met database.
Error: Query was empty


Als ik het verspreid op deze manier:
<?php include_once("config.inc.php"); ?>
<?php
// errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);

// sql debug
define('DEBUG_MODE',true);  // true == aan, false == uit

// functie voor sql debug
function showSQLError($sql,$error) 
{
    echo  '<pre>Error: '.$error.'<br />'.$sql.'</pre>';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
	<title>Lid aanmaken</title>
	<meta http-equiv="content-type" content="text/html;charset=utf-8" />
	<meta name="generator" content="Geany 0.20" />
</head>

<body>
<h1 style="text-align: center">Lid Aanmaken</h1>
<br /><br />
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is geklikt.
{
    if(!empty($_POST['naam']) AND !empty($_POST['voornaam']) AND !empty($_POST['adres']) AND !empty($_POST['peter']) AND !empty ($POST['lid']) AND !empty ($POST_['betaald'])) // Controle op invoeren
    {
		$naam = mysql_real_escape_string($_POST['naam']);
		$voornaam = mysql_real_escape_string($_POST['voornaam']);
		$adres = mysql_real_escape_string($_POST['adres']);
		$peter = mysql_real_escape_string($_POST['peter']);
		$lid = mysql_real_escape_string($_POST['lid']);
		$betaald = mysql_real_escape_string($_POST['betaald']);
		
		$sql = mysql_query("INSERT INTO T_Leden (D_index, D_Naam, D_Voornaam, D_Adres, D_Peter, D_Lid, D_Betaald) VALUES (NULL, '".$naam."', '".$voornaam."', '".$adres."', '".$peter."', '".$lid."', strtodate('".$betaald."', '%d/%m/%Y'));"); // Gebruiker in db plaatsen.
		
//  Check query        
if (($result = mysql_query($sql)) === false) 
{
    // als de query fout is -> foutafhandeling
    echo 'Fout met database.';
    
    // geef de error via de functie (bovenaan script)
    if (DEBUG_MODE) 
    {
       showSQLError($sql,mysql_error());
       
    } 
}
else 
{
    // De query is gelukt
}
	}
	else
	{
		exit ('De ingevoerde gegevens kloppen niet.');  // Negatieve melding van ingevoerde gegevens.
	}
}

?> 

</body>
</html>
<?php
mysql_close($connect);
?>

Krijg ik gewoon mijn standaard foutmelding terug: De ingevoerde gegevens kloppen niet.

[size=xsmall]Toevoeging op 18/02/2011 23:48:11:[/size]

Kan het zijn dat die mijn dropdown veld niet opvangt "Bestuurslid, Gewoon lid, Uitgetreden lid" ?
Goed kijken.
<?php
$sql = mysql_query("....");
if (($result = mysql_query($sql))
?>
Op lijn 41 heb je een fout:

<?php
$sql = mysql_query("INSERT INTO T_Leden (D_index, D_Naam, D_Voornaam, D_Adres, D_Peter, D_Lid, D_Betaald) VALUES (NULL, '".$naam."', '".$voornaam."', '".$adres."', '".$peter."', '".$lid."', strtodate('".$betaald."', '%d/%m/%Y'));"); // Gebruiker in db plaatsen.
?>

Moet worden:
<?php
$sql = "INSERT INTO T_Leden (D_index, D_Naam, D_Voornaam, D_Adres, D_Peter, D_Lid, D_Betaald) VALUES (NULL, '".$naam."', '".$voornaam."', '".$adres."', '".$peter."', '".$lid."', strtodate('".$betaald."', '%d/%m/%Y'));"; // Gebruiker in db plaatsen.
?>

En er klopt ook iets niet aan je datum veld als ik het zo bezie, waarom werk je niet met NOW()?
Oh, helemaal niet op gelet!

@Jasper: ik moet mijn tijd in DD/MM/JJJJ formaat hebben, en NOW() doet dat niet (voor zover ik weet).
je moet je tijd pas bewerken als je het uit de database haalt. bekijk deze tutorial (het eerste puntje)
Vlad Polianskii op 20/02/2011 21:41:07

@Jasper: ik moet mijn tijd in DD/MM/JJJJ formaat hebben, en NOW() doet dat niet (voor zover ik weet).


DD/MM/JJJJ is hoe je het aan de bezoeker toont. Zo moet het NOOIT in de database staan. Daar is het altijd een DATE of DATETIME veld.
Maar de gebruiker moet het in de DD-MM-YYYY formaat intypen, terwijl DATE in YYYY-MM-DD formaat is. Dan klopt het toch niet?
[google]mysql date and time functions[/google].
Je kunt dus DATE_FORMAT en of nog een andere functie gebruiken. Die kan dan het ene formaat ontvangen en maakt er het andere (juiste) formaat van.

Reageren