Column count doesn't match value count at row 1

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Pagina: 1 2 3 volgende »

Frank

frank

19/10/2006 01:18:00
Quote Anchor link
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:
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
<?
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?
Gewijzigd op 01/01/1970 01:00:00 door Frank
 
PHP hulp

PHP hulp

18/11/2024 16:37:45
 
Winston Smith

Winston Smith

19/10/2006 01:51:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$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."');"; ?>

Tel het aantal waarden dat je hier invoert, en vergelijk dat met het aantal velden in je tabel. Ze zouden gelijk moeten zijn; die error wijst erop dat dat niet zo is (meestal probeer je teveel in te voeren, waardoor er geen ruimte is voor alle info).

Edit:
Op het eerste gezicht lijkt het allemaal te kloppen: 27 velden in je database en je voert 27 waarden in volgens mij. Zijn alle waarden ook daadwerkelijk gevuld?

Je kan eens proberen om je query de volgende opmaak te geven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
INSERT INTO tabel VALUES('" . $value1 . "', '" . $value2 . "', '" . $etcetera . "');

in plaats van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
INSERT INTO tabel (value1, value2, etcetera) VALUES('" . $value1 . "', '" . $value2 ."', '" . $etcetera . "');
Dat maakt het een stuk duidelijker voor jezelf, en over het algemeen is die laatste notatie niet nodig (tenzij je velden over slaat bij het invoegen).

Edit 2:
Let ook even goed op wat je naamgenoot zegt, dat kan heel erg schelen in je verdere programmeren en debuggen.
Gewijzigd op 01/01/1970 01:00:00 door Winston Smith
 
Frank -

Frank -

19/10/2006 01:54:00
Quote Anchor link
Er valt een hoop op te merken op dit script, te beginnen met een slecht datamodel. Ga eens normaliseren, dan zul je zien dat je nooit genummerde kolomnamen krijgt. Zie de tutorials.

Verder is de SELECT-query die je uitvoert voordat je de INSERT-query doet, niet betrouwbaar. Er bestaan een heel klein kansje dat tussen de SELECT en de INSERT iemand anders een INSERT uitvoert. Gevolg: Jij bent een corrupte database rijker. Oplossing: Maar de kolom 'naam' UNIQUE en voer uitsluitend de INSERT-query uit. De SELECT-query is onbetrouwbaar en dus overbodig. Mocht de naam al voorkomen, dan zal de INSERT-query mislukken en een mysql_errno() 1062 opleveren. Dit kun je controleren en op basis daarvan een fraaie melding geven.

Wanneer je niets aan beveiliging doet, en dat is sterk af te raden, dan is
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $prospect_nr = $_POST['prospect_nr']; ?>
e.d. volkomen zinloos. Het kost alleen extra geheugen en levert verder niets op. Maak daar van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $prospect_nr = mysql_real_escape_string($_POST['prospect_nr']); ?>
. Dit doe je uiteraard met alle user-input, dit mag je namelijk nooit vertrouwen.

De query is ook voor verbetering vatbaar, wat je nu hebt genoteerd is niet leesbaar, laat staan de debuggen. Dat merk je nu zelf ook al. Noteer een query op de volgende manier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
INSERT INTO
  tabelnaam(
    kolom,
    anderekolom,
    nogeenkolom
  )
VALUES(
  'waarde 1',
  'waarde 2',
  'waarde 3'
)

Op deze manier kun je zo zien dat je 3 kolommen hebt en dus ook 3 waardes moet hebben bij de values. En gezien de foutmelding heb je hier een probleem mee. Het aantal kolommen en het aantal waardes komt niet met elkaar overeen.

Tenslotte: echo is geen functie, ( en ) horen daar dus niet bij:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $text; ?>


Tip: Ga je eens verdiepen in de verschillende datatypes die MySQL te bieden heeft. Een VARCHAR gebruik je uitsluitend wanneer je niets beters voor handen hebt. Jij gebruikt vrijwel uitsluitend VARCHAR's! Zie hoofdstuk 11 van de MySQL-handleiding.
 
Frank

frank

19/10/2006 01:56:00
Quote Anchor link
beiden zijn er 28 waarden, dat aantal klopt wel.
 
Frank

frank

19/10/2006 02:01:00
Quote Anchor link
hehe dankjullie wel... ik ga ermee aan de slag (waarschijnlijk morgen). En ja, zoals opgevallen is: ik ben een startende php'er ;)
 
Frank

frank

19/10/2006 11:10:00
Quote Anchor link
Frank schreef op 19.10.2006 01:54:
Verder is de SELECT-query die je uitvoert voordat je de INSERT-query doet, niet betrouwbaar. Er bestaan een heel klein kansje dat tussen de SELECT en de INSERT iemand anders een INSERT uitvoert. Gevolg: Jij bent een corrupte database rijker. Oplossing: Maar de kolom 'naam' UNIQUE en voer uitsluitend de INSERT-query uit. De SELECT-query is onbetrouwbaar en dus overbodig. Mocht de naam al voorkomen, dan zal de INSERT-query mislukken en een mysql_errno() 1062 opleveren. Dit kun je controleren en op basis daarvan een fraaie melding geven.


Dus ik kan de regels met SELECT gewoon verwijderen?
En hoe maak ik de kolom 'naam' unique? En wat ik de achterliggende gedachte? Want nu krijg ik ook al een melding als een user al bestaat.. Lijkt me dan neerkomen op hetzelfde, of niet?
 
Frank

frank

19/10/2006 11:10:00
Quote Anchor link
trouwens offtopic: Frank helpt frank ;)
 
Robert Deiman

Robert Deiman

19/10/2006 11:47:00
Quote Anchor link
Als je PHPmyAdmin gebruikt, dan kan je als je naar die tabel gaat, achter de kolom een U vinden.. (in een plaatje) klik daarop, en hij wordt unque gemaakt.

Het komt wel op hetzelfde neer, maar het voordeel is dat je minder capaciteit van je server gebruikt. Hij hoeft dan niet elke keer alle rijen af te zoeken en daarna pas te inserten. (het scheelt bij een kleine tabel niet veel, maar bij een grote tabel levert dit merkbare tijdswinst op.) Het script werkt dan dus efficiënter.
 
Frank

frank

19/10/2006 12:59:00
Quote Anchor link
ik heb nu de kolom 'naam' uniek gemaakt. hoe kan ik nu mijn bestaande controle vervangen door de controle op de unique waarde van kolom 'naam'?

Plus, ik heb nu het script verbeterd met:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $prospect_nr = mysql_real_escape_string($_POST['prospect_nr']); ?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $text; ?>

en
INSERT INTO
tabelnaam(
kolom,
anderekolom,
nogeenkolom
)
VALUES(
'waarde 1',
'waarde 2',
'waarde 3'
)
afkomstig van Frank

Verbeterde script:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?
require("connection.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
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?




if(!empty($_POST)){  
$prospect_nr = mysql_real_escape_string($_POST['prospect_nr']);
$naam = mysql_real_escape_string($_POST['naam']);
$voornaam = mysql_real_escape_string($_POST['voornaam']);
$titel = mysql_real_escape_string($_POST['titel']);
$adres = mysql_real_escape_string($_POST['adres']);
$postcode = mysql_real_escape_string($_POST['postcode']);
$plaats = mysql_real_escape_string($_POST['plaats']);
$land = mysql_real_escape_string($_POST['land']);
$identiteit = mysql_real_escape_string($_POST['identiteit']);
$email = mysql_real_escape_string($_POST['email']);
$telefoon = mysql_real_escape_string($_POST['telefoon']);
$mobiel = mysql_real_escape_string($_POST['mobiel']);
$fax = mysql_real_escape_string($_POST['fax']);
$beroep = mysql_real_escape_string($_POST['beroep']);
$werk = mysql_real_escape_string($_POST['werk']);
$interesse1 = mysql_real_escape_string($_POST['interesse1']);
$interesse2 = mysql_real_escape_string($_POST['interesse2']);
$interesse3 = mysql_real_escape_string($_POST['interesse3']);
$oppervlak1 = mysql_real_escape_string($_POST['oppervlak1']);
$oppervlak2 = mysql_real_escape_string($_POST['oppervlak2']);
$oppervlak3 = mysql_real_escape_string($_POST['oppervlak3']);
$gebruik = mysql_real_escape_string($_POST['gebruik']);
$financiering = mysql_real_escape_string($_POST['financiering']);
$geld = mysql_real_escape_string($_POST['geld']);
$gesprek = mysql_real_escape_string($_POST['gesprek']);
$nieuwsbrief = mysql_real_escape_string($_POST['nieuwsbrief']);
$termsofuse = mysql_real_escape_string($_POST['termsofuse']);
$wachtwoord = mysql_real_escape_string($_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;
die;  

}
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="$naam is toegevoegd";
echo $text;
die;
} }

?>




<b>Registreren</b><br>
<FORM NAME="toevoegen" METHOD="post" ACTION="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? 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>
<td>Title</td>
<td colspan="3"><INPUT TYPE="text" NAME="titel" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Address</td>
<td colspan="3"><INPUT TYPE="text" NAME="adres" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Postal code</td>
<td colspan="3"><INPUT TYPE="text" NAME="postcode" MAXLENGTH="40"></td>
</tr>
<tr>
<td>City</td>
<td colspan="3"><INPUT TYPE="text" NAME="plaats" MAXLENGTH="40"></td>
</tr>
<tr>
<td>ID</td>
<td colspan="3"><select name="identiteit">
<option value="paspoort">Passport</option>
<option value="rijbewijs">Driver licence</option>
<option value="euid">EU ID</option>

</select></td>
</tr>
<tr>
<td>Email</td>
<td colspan="3"><INPUT TYPE="text" NAME="email" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Telephone</td>
<td colspan="3"><INPUT TYPE="text" NAME="telefoon" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Mobile</td>
<td colspan="3"><INPUT TYPE="text" NAME="mobiel" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Fax</td>
<td colspan="3"><INPUT TYPE="text" NAME="fax" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Profession</td>
<td colspan="3"><INPUT TYPE="text" NAME="beroep" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Company url</td>
<td colspan="3"><INPUT TYPE="text" NAME="werk" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Interest</td>
<td width="20%"><input type="checkbox" name="gesprek2" value="checkbox">
Appartment</td>
<td width="5%">Oppervlakte</td>
<td width="64%"><INPUT TYPE="text" NAME="oppervlak1" MAXLENGTH="40"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="checkbox" name="gesprek3" value="checkbox">
Villa</td>
<td>Oppervlakte</td>
<td><INPUT TYPE="text" NAME="oppervlak2" MAXLENGTH="40"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="checkbox" name="gesprek4" value="checkbox">
Office</td>
<td>Oppervlakte</td>
<td><INPUT TYPE="text" NAME="oppervlak3" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Use</td>
<td colspan="3"><select name="gebruik">
<option value="investering">Investing</option>
<option value="vakantie">Vacation and rental</option>
<option value="eigen">Own use</option>

</select></td>
</tr>
<tr>
<td>Finance</td>
<td colspan="3"><INPUT TYPE="text" NAME="financiering" MAXLENGTH="40"></td>
</tr>
<tr>
<td>How much</td>
<td colspan="3"><INPUT TYPE="text" NAME="geld" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Introduction gesprek</td>
<td colspan="3"><input type="checkbox" name="gesprek" value="checkbox"></td>
</tr>
<tr>
<td>News letter</td>
<td colspan="3"><input type="checkbox" name="nieuwsbrief" value="checkbox"></td>
</tr>
<tr>
<td>Terms of use</td>
<td colspan="3"><input type="checkbox" name="termsofuse" value="checkbox"></td>
</tr>
<tr>
<td>Password</td>
<td colspan="3"><INPUT TYPE="text" NAME="wachtwoord" MAXLENGTH="40"></td>
</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 name="submit" TYPE="submit" VALUE="toevoegen"></td>
</tr>
</table>
</FORM>
<br>
<br>
<br>
<br>

maar ik kom nog steeds op de bekende error uit:
Column count doesn't match value count at row 1

Ziet iemand de fout? K heb volgens mij alles verbeterd (afgezien van de beveiliging waar Frank over sprak, maar dat fix ik nog)
 
Frank

frank

19/10/2006 13:07:00
Quote Anchor link
even offtopic:
hoe kan het trouwens dat ik met Internet Explorer 7 en Maxthon (gebruiken allebei IE settings) de wijzigingen die ik aanbreng op mn site niet zie, maar met Firefox wel?
 
Frank -

Frank -

19/10/2006 14:29:00
Quote Anchor link
De hele SELECT-query, het uitvoeren daarvan en de melding kan zo richting prullenbak. Je hebt er niets aan omdat de gegevens verouderd zijn zodra je ze hebt opgehaald. Kan dus weg.

Dan de INSERT:
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
<?
$result
= mysql_query($sql_query); // hier GEEN foutafhandeling! Zie volgende regel:

if(!result && mysql_errno() == 1062) {  
  $text = $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 = $naam.' is toegevoegd';
  echo $text;
  die();
}

?>

Met de functie mysql_errno() haal je het foutnummer op, vervolgens vergelijk je deze met 1062 (zie handleiding) en geef je een fraaie melding.
 
Frank

frank

19/10/2006 14:33:00
Quote Anchor link
waar plaats ik de INSERT dan, want in mijn versie was die verdeeld over voor en na de 2 lange reeksen waarden (die hierboven in mn code)
 
Frank -

Frank -

19/10/2006 14:45:00
Quote Anchor link
Je maakt op een gegeven moment $sql_query aan (vraagje: waarom knip je deze op in 2 stukken? Volkomen overbodig en zinloos, maakt het onoverzichtelijk) en daarna komt mijn stukje code om de boel uit te voeren en te checken of het is gelukt.
 
Frank

frank

19/10/2006 16:10:00
Quote Anchor link
mijn php is nu als volgd:

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?




if(!empty($_POST)){  
$prospect_nr = mysql_real_escape_string($_POST['prospect_nr']);
$naam = mysql_real_escape_string($_POST['naam']);
$voornaam = mysql_real_escape_string($_POST['voornaam']);
$titel = mysql_real_escape_string($_POST['titel']);
$adres = mysql_real_escape_string($_POST['adres']);
$postcode = mysql_real_escape_string($_POST['postcode']);
$plaats = mysql_real_escape_string($_POST['plaats']);
$land = mysql_real_escape_string($_POST['land']);
$identiteit = mysql_real_escape_string($_POST['identiteit']);
$email = mysql_real_escape_string($_POST['email']);
$telefoon = mysql_real_escape_string($_POST['telefoon']);
$mobiel = mysql_real_escape_string($_POST['mobiel']);
$fax = mysql_real_escape_string($_POST['fax']);
$beroep = mysql_real_escape_string($_POST['beroep']);
$werk = mysql_real_escape_string($_POST['werk']);
$interesse1 = mysql_real_escape_string($_POST['interesse1']);
$interesse2 = mysql_real_escape_string($_POST['interesse2']);
$interesse3 = mysql_real_escape_string($_POST['interesse3']);
$oppervlak1 = mysql_real_escape_string($_POST['oppervlak1']);
$oppervlak2 = mysql_real_escape_string($_POST['oppervlak2']);
$oppervlak3 = mysql_real_escape_string($_POST['oppervlak3']);
$gebruik = mysql_real_escape_string($_POST['gebruik']);
$financiering = mysql_real_escape_string($_POST['financiering']);
$geld = mysql_real_escape_string($_POST['geld']);
$gesprek = mysql_real_escape_string($_POST['gesprek']);
$nieuwsbrief = mysql_real_escape_string($_POST['nieuwsbrief']);
$termsofuse = mysql_real_escape_string($_POST['termsofuse']);
$wachtwoord = mysql_real_escape_string($_POST['wachtwoord']);



}
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
) 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); // hier GEEN foutafhandeling! Zie volgende regel:

if(!result && mysql_errno() == 1062) {  
  $text = $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 = $naam.' is toegevoegd';
  echo $text;
  die();
}

?>


maar nu wordt mn formulier in zijn geheel niet meer weergegeven. Heb ik het stukje code van Frank niet goed geimplementeerd?
Gewijzigd op 01/01/1970 01:00:00 door frank
 
Frank -

Frank -

19/10/2006 16:22:00
Quote Anchor link
Dat heb je uitstekend gedaan, je hebt alleen het formulier vergeten... Die had er niet bijgezet omdat het niets toevoegd om dat hier nogmaals neer te zetten.
 
Hylke

Hylke

19/10/2006 16:25:00
Quote Anchor link
over die browsers, misschien zie je het wel als je de temporary internet files veranderd, ik heb het vaak met css, volgens mij cached ie die gewoon
 
Frank

frank

19/10/2006 16:39:00
Quote Anchor link
zou dit een goede manier zijn om het formulier erin te zetten?


Ik heb de bovenste helft even weggelaten wegens de ruimte die het in beslag neemt.
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
<?
$result
= mysql_query($sql_query); // hier GEEN foutafhandeling! Zie volgende regel:

if(!result && mysql_errno() == 1062) {  
  $text = $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 = $naam.' is toegevoegd';
  echo $text;
  die();
}
else {
?>




<b>Registreren</b><br>
<FORM NAME="toevoegen" METHOD="post" ACTION="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? 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>
<td>Title</td>
<td colspan="3"><INPUT TYPE="text" NAME="titel" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Address</td>
<td colspan="3"><INPUT TYPE="text" NAME="adres" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Postal code</td>
<td colspan="3"><INPUT TYPE="text" NAME="postcode" MAXLENGTH="40"></td>
</tr>
<tr>
<td>City</td>
<td colspan="3"><INPUT TYPE="text" NAME="plaats" MAXLENGTH="40"></td>
</tr>
<tr>
<td>ID</td>
<td colspan="3"><select name="identiteit">
<option value="paspoort">Passport</option>
<option value="rijbewijs">Driver licence</option>
<option value="euid">EU ID</option>

</select></td>
</tr>
<tr>
<td>Email</td>
<td colspan="3"><INPUT TYPE="text" NAME="email" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Telephone</td>
<td colspan="3"><INPUT TYPE="text" NAME="telefoon" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Mobile</td>
<td colspan="3"><INPUT TYPE="text" NAME="mobiel" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Fax</td>
<td colspan="3"><INPUT TYPE="text" NAME="fax" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Profession</td>
<td colspan="3"><INPUT TYPE="text" NAME="beroep" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Company url</td>
<td colspan="3"><INPUT TYPE="text" NAME="werk" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Interest</td>
<td width="20%"><input type="checkbox" name="gesprek2" value="checkbox">
Appartment</td>
<td width="5%">Oppervlakte</td>
<td width="64%"><INPUT TYPE="text" NAME="oppervlak1" MAXLENGTH="40"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="checkbox" name="gesprek3" value="checkbox">
Villa</td>
<td>Oppervlakte</td>
<td><INPUT TYPE="text" NAME="oppervlak2" MAXLENGTH="40"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="checkbox" name="gesprek4" value="checkbox">
Office</td>
<td>Oppervlakte</td>
<td><INPUT TYPE="text" NAME="oppervlak3" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Use</td>
<td colspan="3"><select name="gebruik">
<option value="investering">Investing</option>
<option value="vakantie">Vacation and rental</option>
<option value="eigen">Own use</option>

</select></td>
</tr>
<tr>
<td>Finance</td>
<td colspan="3"><INPUT TYPE="text" NAME="financiering" MAXLENGTH="40"></td>
</tr>
<tr>
<td>How much</td>
<td colspan="3"><INPUT TYPE="text" NAME="geld" MAXLENGTH="40"></td>
</tr>
<tr>
<td>Introduction gesprek</td>
<td colspan="3"><input type="checkbox" name="gesprek" value="checkbox"></td>
</tr>
<tr>
<td>News letter</td>
<td colspan="3"><input type="checkbox" name="nieuwsbrief" value="checkbox"></td>
</tr>
<tr>
<td>Terms of use</td>
<td colspan="3"><input type="checkbox" name="termsofuse" value="checkbox"></td>
</tr>
<tr>
<td>Password</td>
<td colspan="3"><INPUT TYPE="text" NAME="wachtwoord" MAXLENGTH="40"></td>
</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 name="submit" TYPE="submit" VALUE="toevoegen"></td>
</tr>
</table>
</FORM>
<br>
<br>
<br>
<br>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
}


?>
 
Jan Koehoorn

Jan Koehoorn

19/10/2006 17:00:00
Quote Anchor link
Nog een tip. Iets als dit:
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
<?php
if(!empty($_POST)){  
    $prospect_nr = mysql_real_escape_string($_POST['prospect_nr']);
    $naam = mysql_real_escape_string($_POST['naam']);
    $voornaam = mysql_real_escape_string($_POST['voornaam']);
    $titel = mysql_real_escape_string($_POST['titel']);
    $adres = mysql_real_escape_string($_POST['adres']);
    $postcode = mysql_real_escape_string($_POST['postcode']);
    $plaats = mysql_real_escape_string($_POST['plaats']);
    $land = mysql_real_escape_string($_POST['land']);
    $identiteit = mysql_real_escape_string($_POST['identiteit']);
    $email = mysql_real_escape_string($_POST['email']);
    $telefoon = mysql_real_escape_string($_POST['telefoon']);
    $mobiel = mysql_real_escape_string($_POST['mobiel']);
    $fax = mysql_real_escape_string($_POST['fax']);
    $beroep = mysql_real_escape_string($_POST['beroep']);
    $werk = mysql_real_escape_string($_POST['werk']);
    $interesse1 = mysql_real_escape_string($_POST['interesse1']);
    $interesse2 = mysql_real_escape_string($_POST['interesse2']);
    $interesse3 = mysql_real_escape_string($_POST['interesse3']);
    $oppervlak1 = mysql_real_escape_string($_POST['oppervlak1']);
    $oppervlak2 = mysql_real_escape_string($_POST['oppervlak2']);
    $oppervlak3 = mysql_real_escape_string($_POST['oppervlak3']);
    $gebruik = mysql_real_escape_string($_POST['gebruik']);
    $financiering = mysql_real_escape_string($_POST['financiering']);
    $geld = mysql_real_escape_string($_POST['geld']);
    $gesprek = mysql_real_escape_string($_POST['gesprek']);
    $nieuwsbrief = mysql_real_escape_string($_POST['nieuwsbrief']);
    $termsofuse = mysql_real_escape_string($_POST['termsofuse']);
    $wachtwoord = mysql_real_escape_string($_POST['wachtwoord']);
}

?>

kan veel gemakkelijker zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $values = array ();
        foreach ($_POST as $key => $value) {
            $values[$key] = mysql_real_escape_string ($value);
        }
    }

?>

Hierna heb je een array met $values['naam'], $values['voornaam'], enz.
 
Frank -

Frank -

19/10/2006 17:02:00
Quote Anchor link
Quote:
zou dit een goede manier zijn om het formulier erin te zetten?
Het is 1 van de vele mogelijkheden en er is niets mis mee.

Tip: Gebruik voor je html-tags nooit hoofdletters. Het is geen valide html en het wordt een bende wanneer je upper- en lowercase door elkaar gaat gooien.

En echo is geen functie, ( en ) horen daar dus niet bij.
 
Frank

frank

19/10/2006 17:05:00
Quote Anchor link
Jan Koehoorn schreef op 19.10.2006 17:00:
Nog een tip. Iets als dit:

kan veel gemakkelijker zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $values = array ();
        foreach ($_POST as $key => $value) {
            $values[$key] = mysql_real_escape_string ($value);
        }
    }

?>

Hierna heb je een array met $values['naam'], $values['voornaam'], enz.


Omvat dit meteen al mijn waardes of moet ik die er nog op de één of andere manier inzetten?
 
Frank -

Frank -

19/10/2006 17:11:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
print_r($values);
?>

Laat je direct zien wat er is gebeurd!
 

Pagina: 1 2 3 volgende »



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.