goedenacht!

ik ben bezig met een login systeem te maken, alleen stuit ik nu al een avond lang op de zelfde error:

Column count doesn't match value count at row 1

Mijn database ziet er als volgt uit:
CREATE TABLE `prospect` (
`prospect_nr` int(11) NOT NULL auto_increment,
`naam` varchar(50) NOT NULL default '',
`voornaam` varchar(50) NOT NULL default '',
`titel` char(3) NOT NULL default '',
`adres` varchar(50) NOT NULL default '',
`postcode` varchar(6) NOT NULL default '',
`plaats` varchar(50) NOT NULL default '',
`land` varchar(20) NOT NULL default '',
`identiteit` varchar(10) NOT NULL default '',
`email` varchar(50) NOT NULL default '',
`telefoon` varchar(13) NOT NULL default '',
`mobiel` varchar(13) NOT NULL default '',
`fax` varchar(13) NOT NULL default '',
`beroep` varchar(50) NOT NULL default '',
`werk` varchar(50) NOT NULL default '',
`interesse1` varchar(50) NOT NULL default '',
`interesse2` varchar(50) NOT NULL default '',
`interesse3` varchar(50) NOT NULL default '',
`oppervlak1` varchar(10) NOT NULL default '',
`oppervlak2` varchar(10) NOT NULL default '',
`oppervlak3` varchar(10) NOT NULL default '',
`gebruik` varchar(50) NOT NULL default '',
`financiering` varchar(10) NOT NULL default '',
`geld` varchar(10) NOT NULL default '',
`gesprek` char(3) NOT NULL default '',
`nieuwsbrief` char(3) NOT NULL default '',
`termsofuse` char(3) NOT NULL default '',
`wachtwoord` varchar(32) default NULL,
PRIMARY KEY (`prospect_nr`)


Mijn codering waar het fout gaat is deze:
<?
if(!empty($_POST)){
$prospect_nr = $_POST['prospect_nr'];
$naam = $_POST['naam'];
$voornaam = $_POST['voornaam'];
$titel = $_POST['titel'];
$adres = $_POST['adres'];
$postcode = $_POST['postcode'];
$plaats = $_POST['plaats'];
$land = $_POST['land'];
$identiteit = $_POST['identiteit'];
$email = $_POST['email'];
$telefoon = $_POST['telefoon'];
$mobiel = $_POST['mobiel'];
$fax = $_POST['fax'];
$beroep = $_POST['beroep'];
$werk = $_POST['werk'];
$interesse1 = $_POST['interesse1'];
$interesse2 = $_POST['interesse2'];
$interesse3 = $_POST['interesse3'];
$oppervlak1 = $_POST['oppervlak1'];
$oppervlak2 = $_POST['oppervlak2'];
$oppervlak3 = $_POST['oppervlak3'];
$gebruik = $_POST['gebruik'];
$financiering = $_POST['financiering'];
$geld = $_POST['geld'];
$gesprek = $_POST['gesprek'];
$nieuwsbrief = $_POST['nieuwsbrief'];
$termsofuse = $_POST['termsofuse'];
$wachtwoord = $_POST['wachtwoord'];


$sql_query = "SELECT * FROM prospect WHERE naam='".$naam."';";
$result = mysql_query($sql_query);

if(mysql_num_rows($result) > 0) {
$text = "$naam is al geregistreerd. <A HREF=\"" . $_SERVER["PHP_SELF"] . "\">Opnieuw registeren</A>";

echo($text);


} else {
$sql_query = "INSERT INTO prospect (prospect_nr,naam,voornaam,titel,adres,postcode,plaats,land,identiteit,email,telefoon,mobiel,fax,beroep,werk,interesse1,interesse2,interesse3,oppervlak1,oppervlak2,oppervlak3,gebruik,financiering,geld,gesprek,nieuwsbrief,termsofuse,wachtwoord)";
$sql_query .="VALUES ('".$prospect_nr."','".$naam."','".$voornaam."','".$titel."','".$adres."','".$postcode."','".$plaats."','".$land."','".$identiteit."','".$email."','".$telefoon."','".$mobiel."','".$fax."','".$beroep."','".$werk."' '".$interesse1."','".$interesse2."','".$interesse3."','".$oppervlak1."','".$oppervlak2."','".$oppervlak3."','".$gebruik."','".$financiering."','".$geld."','".$gesprek."','".$nieuwsbrief."','".$termsofuse."','".$wachtwoord."');";
$result = mysql_query($sql_query) or die(mysql_error());
$text="U heeft $naam toegevoegd, bedankt voor de aanmelding";

echo($text);


}
?>

Ik heb al gezocht op een aantal fora, waar ze de volgende oplossingen hadden:
- spaties weghalen;
- goed alle velden laten vullen

Ik kom er dus nog steeds niet uit, iemand anders misschien?
niemand?
frank schreef op 19.10.2006 22:55
niemand?
NIET BUMPEN!!! Je wordt hier uitstekend geholpen, bumpen is dus totaal overbodig en alles-behalve netjes. Niet meer doen dus.

Verder, vervang <?
$result = mysql_query($sql_query); // hier GEEN foutafhandeling! Zie volgende regel:
if(!$result && mysql_errno() == 1062) {
$text = $values['naam'].' is al geregistreerd. <A HREF="' . $_SERVER['PHP_SELF'] . '">Opnieuw registeren</A>';
echo $text;
die;
}
if(!$result){
die(mysql_error()); // kan nog beter, die() verdient geen schoonheidsprijs
}

$text= "$values[naam] is toegevoegd";
echo $text;
die();
}
else {
?>
Eens door: <?
$result = mysql_query($sql_query); // hier GEEN foutafhandeling! Zie volgende regel:
if(!$result && mysql_errno() == 1062) {
$text = $values['naam'].' is al geregistreerd. <A HREF="' . $_SERVER['PHP_SELF'] . '">Opnieuw registeren</A>';
echo $text;
die;
}
elseif(!$result){
die(mysql_error()); // kan nog beter, die() verdient geen schoonheidsprijs
}
else{
$text= "$values[naam] is toegevoegd";
echo $text;
die();
}
?>
En dan verwijder je ook nog even de laaste regeltjes van je code, die } is totaal overbodig. Je wilt het formulier namelijk helemaal niet binnen de if-else hebben.
sorry voor de bump, je hebt helemaal gelijk: ik word hier prima geholpen... waarschijnlijk frustratie van het vastlopen mijnerzijds.. ik ga morgenochtend met dit script verder.

THANKS!
ik heb nu de volgende code: maar het formulier wordt nu vooralsnog niet
weergegeven :(

<?
require("connection.php");

?>
<?php



if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$values = array ();
foreach ($_POST as $key => $value) {
$values[$key] = mysql_real_escape_string ($value);
}

$sql_query = "INSERT INTO prospect (
prospect_nr,
naam,
voornaam,
titel,
adres,

(..)

nieuwsbrief,
termsofuse,
wachtwoord
) VALUES (
'".$values['prospect_nr']."',
'".$values['naam']."',
'".$values['voornaam']."'
'".$values['titel']."'

(...)

'".$values['termsofuse']."'
'".$values['wachtwoord']."'
);";


$result = mysql_query($sql_query); // hier GEEN foutafhandeling! Zie volgende regel:
if(!$result && mysql_errno() == 1062) {
$text = $values['naam'].' is al geregistreerd. <A HREF="' . $_SERVER['PHP_SELF'] . '">Opnieuw registeren</A>';
echo $text;
die;
}
elseif(!$result){
die(mysql_error()); // kan nog beter, die() verdient geen schoonheidsprijs
}
else{
$text= "$values[naam] is toegevoegd";
echo $text;
die();
}
?>



<b>Registreren</b><br>
<FORM NAME="toevoegen" METHOD="post" ACTION="<? echo($_SERVER["PHP_SELF"]);?>">
<table width="90%" border="0">
<tr>
<td width="17%">First name</td>
<td colspan="3"><INPUT TYPE="text" NAME="voornaam" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Name</td>
<td colspan="3"><input type="text" name="naam" maxlength="40"></td>
</tr>
<tr>

(...)

<tr>
<td>Confirm password</td>
<td colspan="3"><INPUT TYPE="text" NAME="wachtwoord2" MAXLENGTH="40"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td colspan="3">&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td colspan="3"><INPUT TYPE="submit" VALUE="toevoegen"></td>
</tr>
</table>
</FORM>
Zorg dat je netjes werkt: maak gebruik van inspringen om je code overzichtelijk te houden. Hanteer tevens 1 vaste stijl voor het plaatsen van accolades...

De werkende code:

<?php
require("connection.php");
if($_SERVER['REQUEST_METHOD'] == 'POST')
{  
    $values = array ();
    foreach ($_POST as $key => $value) 
	{
        $values[$key] = mysql_real_escape_string ($value);
    }

    $sql_query = "INSERT INTO prospect (
    prospect_nr,
    naam,
    voornaam,
	titel,
	adres,
	
	(..)
	
	nieuwsbrief,
	termsofuse,
	wachtwoord
	) VALUES (
    '".$values['prospect_nr']."',
    '".$values['naam']."',
    '".$values['voornaam']."'
    '".$values['titel']."'

	(...)

    '".$values['termsofuse']."'
    '".$values['wachtwoord']."'
	);";  


	$result = mysql_query($sql_query); // hier GEEN foutafhandeling! Zie volgende regel:
	if(!$result && mysql_errno() == 1062) 
	{  
		$text = $values['naam'].' is al geregistreerd. <A HREF="' . $_SERVER['PHP_SELF'] . '">Opnieuw registeren</A>'; 
		echo $text;
		die;
	}
	elseif(!$result)
	{
		die(mysql_error()); // kan nog beter, die() verdient geen schoonheidsprijs
	}
	else
	{
		$text= "$values[naam] is toegevoegd";
		echo $text;
		die();
	}
}
else
{
?>
	<b>Registreren</b><br>
	<FORM NAME="toevoegen" METHOD="post" ACTION="<?php echo($_SERVER["PHP_SELF"]);?>">
	<table width="90%" border="0">
	<tr>
	<td width="17%">First name</td>
	<td colspan="3"><INPUT TYPE="text" NAME="voornaam" MAXLENGTH="40"></td>
	</tr>
	<tr>
	<td>Name</td>
	<td colspan="3"><input type="text" name="naam" maxlength="40"></td>
	</tr>
	<tr>
	
	(...)
	
	<tr>
	<td>Confirm password</td>
	<td colspan="3"><INPUT TYPE="text" NAME="wachtwoord2" MAXLENGTH="40"></td>
	</tr>
	<tr>
	<td>&nbsp;</td>
	<td colspan="3">&nbsp;</td>
	</tr>
	<tr>
	<td>&nbsp;</td>
	<td colspan="3"><INPUT TYPE="submit" VALUE="toevoegen"></td>
	</tr>
	</table>
	</FORM>

<?php
}
?>
okeej.. welnu het volgende: ik heb bovenstaan 'werkende script' gekopieerd, maar ik krijg nog steeds niets te zien. Maar als ik de site open op localhost krijg ik geen waarschuwingen te zien: alles opend normaal. Trouwens ook andere mensen zien niets op de site (online)
http://www.frank-raterink.nl/Zinvest/tEN/p-register.php

Wat had je btw veranderd aan het bovenstaande script? Of alleen netter genoteerd?
Ik heb nog een extra else toegevoegd die je vergeten was. Het betreft de else op regel 54 van bovenstaand script.

Ik krijg met bovenstaand script gewoon een formulier te zien. Het klopt natuurlijk niet helemaal aangezien in het script nog (....) staat, maar ik neem aan dat je dat zelf vervangt.
Nee daar niet :S

En als je de code gewoon in een nieuwe pagina plakt zonder verdere opmaakt, krijg je dan wel wat te zien?

Reageren