Hallo phpén

nou ik probeer zelf een systeem te maken dat "solicitatie systeem" inhoud

via een formulier moet je gegevens in een database kunnen zetten

dit is toevoegen.php:

<?php 
mysql_connect('localhost','maarten_sol','sol'); 
mysql_select_db('maarten_sol') or die (mysql_error()); 

if(isset($_POST['verzenden'])) 
  { 
    $shabbonaam        =    addslashes($_POST['habbonaam']); 
    $sskypenaam      =    addslashes($_POST['skypenaam']); 
    $iLeeftijd        =    addslashes($_POST['leeftijd']); 
    $inum      =    addslashes($_POST['num']); 
 $serv      =    addslashes($_POST['serv']); 
 $ssche      =    addslashes($_POST['sche']); 
 $ssoft      =    addslashes($_POST['soft']); 
$smuzlist      =    addslashes($_POST['muzlist']); 
$smuzdr      =    addslashes($_POST['muzdr']); 
$side      =    addslashes($_POST['ide']); 
$swhy      =    addslashes($_POST['why']); 


    mysql_query("INSERT INTO formulier (habbonaam, skypenaam, leeftijd, num, erv, sche, soft, muzlist, muzdr, ide, why) VALUES ('".$shabbonaam."', '".$sskypenaam."', '".$iLeeftijd."', '".$inum."' ,'".$sserv."' ,'".$sserv."' ,'".$ssche."' ,'".$ssoft."' ,'".$smuzlist."' ,'".$smuzdr."' ,'".$side."' ,'".$swhy."') or die (mysql_error());  

    echo 'Je gegevens zijn succesvol in de database geplaatst'; 
  } 
else 
  { 
?> 
<form action=" <?=$_SERVER['PHP_SELF']?> " method="POST">
habbonaam <input type="text" name="habbonaam"><br /> 
skypenaam <input type="text" name="skypenaam"><br /> 
leeftijd <input type="text" name="leeftijd"><br /> 
heb je ervaring ? <input type="text" name="erv"><br /> 
nummers(liedjes) op je computer <input type="text" name="num"><br /> 
software die je gebruikt om te draaien: <input type="text" name="soft"><br /> 
Naar wat voor muziek luister je graag? <input type="text" name="muzlist"><br /> 
Wat voor soort muziek draai jij voor de luisteraars? <input type="text" name="muzdr"><br /> 
Heb je al idee&#65533;n om je progamma aantrekkelijk te maken? <input type="text" name="ide"><br /> 
waarom moet jij een dj worden bij hithabbo ?<input type="text" name="why"><br /> 
<input type="submit" name="verzenden" value="verzenden"> 
</form> 
<? 
  } 
?>



dat zou hem moeten sturen naar deze rijen:


en hij geeft dit aan:
Column count doesn't match value count at row 1

ik heb de database nagekeken en alle rijen zijn er

[size=xsmall]Toevoeging op 07/02/2011 08:02:37:[/size]

ik zie al dat de text rood is maar wat is daar aan te doen ?
- 'or die' is geen foutafhandeling. Als er iets mis gaat (verbinden met de database kan ook mis gaan), dan hoeft dat niet direct te betekenen dat de hele pagina niet meer geladen kan worden. Je kunt nu nog steeds de html netjes afmaken.
- Controleren of een formulier gepost is doe je met if($_SERVER['REQUEST_METHOD'] == 'POST'), soms wordt de submit knop niet meegestuurd, ook is het zo dat je nu alles mooi kan groeperen op post afhandeling.
- [php]addslashes[/php] nooit of te nimmer gebruiken, zij verneuken per definitie je data. Gebruik [php]mysql_real_escape_string[/php].
- Foutafhandeling van de query ontbreekt.
- Donwload een editor zoals [google]notepad++[/google] en kijk naar de kleurtjes. Komt alles overeen? Zijn er een even aantal ' en " ? Zie ook [php]sprintf[/php] voorbeeld op [php]mysql_real_escape_string[/php].
nou dit is van een TUT

dus..

de normale code (zonder aanpassingen zoals:

num, erv, sche, soft, muzlist, muzdr, ide, why

)
deed hij het wel (maar niet alle rijen in database aleen habbonaam skypenaam en leeftijd)
maar als ik ze zelfstandig toevoeg krijgen we die eror's

dus kun je me vertellen hoe ik handmatig invoeg-rijen kan toevoegen ?
Alle rijen in je INSERT-query moeten overeenkomen de de omschreven velden in die query.
dus...


dit deel:

 mysql_query("INSERT INTO formulier (habbonaam, skypenaam, leeftijd, num, erv, sche, soft, muzlist, muzdr, ide, why) VALUES ('".$shabbonaam."', '".$sskypenaam."', '".$iLeeftijd."', '".$inum."' ,'".$sserv."' ,'".$sserv."' ,'".$ssche."' ,'".$ssoft."' ,'".$smuzlist."' ,'".$smuzdr."' ,'".$side."' ,'".$swhy."') or die (mysql_error()); 

en dit deel:

if(isset($_POST['verzenden'])) 
  { 
    $shabbonaam        =    addslashes($_POST['habbonaam']); 
    $sskypenaam      =    addslashes($_POST['skypenaam']); 
    $iLeeftijd        =    addslashes($_POST['leeftijd']); 
    $inum      =    addslashes($_POST['num']); 
 $serv      =    addslashes($_POST['serv']); 
 $ssche      =    addslashes($_POST['sche']); 
 $ssoft      =    addslashes($_POST['soft']); 
$smuzlist      =    addslashes($_POST['muzlist']); 
$smuzdr      =    addslashes($_POST['muzdr']); 
$side      =    addslashes($_POST['ide']); 
$swhy      =    addslashes($_POST['why']); 


of kun je het voordoen plz ?

want volgens mij komen die wel overeen
Zie dus ook mijn post.
Maarten heijden op 07/02/2011 07:57:34

if(isset($_POST['verzenden']))


Niet doen!
Een submit knop dient om te submitten, niet om controleren of er iets gepost is.
Die waarde wordt vaak niet meegestuurd naar de server.

Weten of er een post request is, doe je met

if ($_SERVER['REQUEST_METHOD'] == 'POST')

Wil je specifiek weten welk formulier is opgestuurd, zet dan een extra hidden input met die informatie.



En addslashes() is nergens voor nodig. gebruik gewoon mysql_real_escape_string().
Dit zou je prima in je mysql_query kunnen verwerken dan dat je alle variabelen op lijn 7 t/m 17 over kopieert.
Vraag, is mijn post zo onduidelijk ofzo?

Reageren