Column count doesn't match value count at row 1

Status
Niet open voor verdere reacties.

fonville

Gebruiker
Lid geworden
8 dec 2011
Berichten
93
ik krijg de volgende error
Code:
Column count doesn't match value count at row 1
ik kan de fout niet vinden in mijn script
PHP:
<? 
include("config.php");
session_start();
if(!isset($_SESSION['gebruikersnaam'])){

header("location:http://********/?p=error");
}
?>
<?
session_start();  
ob_start();  
include("config.inc.php");  
?>  
<script language="javascript">  
function SelectAll(){  
  count = document.form.elements.length;  
  for (i=0; i < count; i++) {  
if(document.form.elements[i].checked == 1) {  
  document.form.elements[i].checked = 0;  
}  
else {  
  document.form.elements[i].checked = 1;  
  }  
}  
}  
</script> 
<?
if(isset($_POST['bericht'])){


//error reporting 
error_reporting  (E_ALL); 

//als er wat is toegevoegd 

  $bericht = $_POST['bericht'];
  $van = $_GET['van'];
  $voor = $_GET['voor'];
  if($bericht == "") 
  { 
    echo "Vul aub alle velden in!"; 
  } 
  else 
  { 
  $datum = date("d-m-Y H:i:s", time());
    $toevoegen = mysql_query("INSERT INTO prikbord (id, voor, van, bericht, datum) VALUES ('".$voor."', '".$van."', '".$bericht.", ".$datum."') ") or die (mysql_error()); 

    echo "Bericht toegevoegd!"; 
    ?> 
    <br /> 
    <a href="#" onClick="window.close()">Sluit venster!</a> 
    <?php 
	$voor = $_GET['voor']; 
        $select = "SELECT * FROM leden WHERE gebruikersnaam = '$voor'";  
        $query = mysql_query($select) or die (mysql_error());  
    while ($list = mysql_fetch_object($query)) {  
        $snaam     = $_GET['voor'];  
        $semail    = $list->email;    
        $bericht   = "er is een bericht achtergelaten op je profiel. <br> <a href=\"http://*********/?p=users&user=$voor\">klik hier om het bericht te lezen</a> ";
        $onderwerp = 'bericht op je profiel';  

        
        $naam = str_replace(" ","%20",$snaam);  
        $email = str_replace(" ","%20",$semail);   

        $header  = "Content-Type: text/html; charset=iso-8859-1\n";  
        $header .= "MIME-Version: 1.0\r\n";  
        $header .= "From: ".$van_naam."<".$van_email.">";  

        mail("".$email."", "".$onderwerp."", "  
                <font face=\"Verdana\" size=\"1px\">  
        ".$bericht."  
        <p>  
        Groeten,<br />  
        ".$groet."<br />  

        </font></font>", $header);  
}  
   
  } 
}else{
$voor = $_GET['voor'];
echo"schrijf een bericht aan $voor";
echo'<form action="" method="post" >
     <br><table width="90%" border="0" cellspacing="0" cellpadding="3" align="center">
                     <tr>

                         <td>
                         <textarea name="bericht" rows="8" cols="50">Typ hier uw bericht!</textarea><br>
                         <input type="submit" value="Bericht plaatsen!">
                         </td>
                     </tr>
                 </tr>';
} 
?>
 
bekijk script met opmerkingen
PHP:
<?php 
include("config.php");
session_start();
if(!isset($_SESSION['gebruikersnaam'])){
    header("location:http://********/?p=error");//TODO die() voor veiligheid
}
session_start();//TODO is gestrt dus niet meer nodig hem te starten
ob_start();  //Waarom in cach plaatsen ??
include("config.inc.php");
?>  
<script language="javascript">  
    function SelectAll(){  
      count = document.form.elements.length;  
      for (i=0; i < count; i++) {  
        if(document.form.elements[i].checked == 1) {  
          document.form.elements[i].checked = 0;  
        }else {  
          document.form.elements[i].checked = 1;  
        }  
      }  
    }  
</script> 
<?php
    if(isset($_POST['bericht'])){
        //error reporting 
        error_reporting  (E_ALL); //TODO delete before upload
        //als er wat is toegevoegd 
        $bericht = $_POST['bericht'];
        $van = $_GET['van'];
        $voor = $_GET['voor'];
        if($bericht == ""){ 
            echo "Vul aub alle velden in!"; 
        }else{ 
            $datum = date("d-m-Y H:i:s", time());
            $toevoegen = mysql_query("INSERT INTO prikbord (id, voor, van, bericht, datum) VALUES ('".$voor."', '".$van."', '".$bericht.", ".$datum."') ") or die (mysql_error()); 
            echo "Bericht toegevoegd!"; 
            ?> 
            <br /> 
            <a href="#" onClick="window.close()">Sluit venster!</a> 
            <?php 
            $voor = $_GET['voor']; 
            $select = "SELECT * FROM leden WHERE gebruikersnaam = '$voor'";  
            $query = mysql_query($select) or die (mysql_error());  
            while ($list = mysql_fetch_object($query)) {  
                $snaam     = $_GET['voor'];  
                $semail    = $list->email;//TODO???    
                $bericht   = "er is een bericht achtergelaten op je profiel. <br> <a href=\"http://*********/?p=users&user=$voor\">klik hier om het bericht te lezen</a> ";
                $onderwerp = 'bericht op je profiel';       
                $naam = str_replace(" ","%20",$snaam);  
                $email = str_replace(" ","%20",$semail);   
                $header  = "Content-Type: text/html; charset=iso-8859-1\n";  
                $header .= "MIME-Version: 1.0\r\n";  
                $header .= "From: ".$van_naam."<".$van_email.">";//; not avaleble
                mail($email,$onderwerp,'<font face="Verdana" size="1px">'.$bericht."<p>Groeten,<br />".$groet."<br /></font>", $header);  
            }  
        } 
    }else{
        $voor = $_GET['voor'];
        echo"schrijf een bericht aan $voor";
        ?>
        <form action="" method="post" >
             <br/>
             <table width="90%" border="0" cellspacing="0" cellpadding="3" align="center">
                <tr>
                   <td>
                       <textarea name="bericht" rows="8" cols="50">Typ hier uw bericht!</textarea><br>
                       <input type="submit" value="Bericht plaatsen!">
                   </td>
                </tr>
            </table>
        <?php //</form>????
    } 
?>
 
De "Column count"-foutmelding komt vaak voort uit een INSERT-query.
Je zult dan in het gedeelte tussen INSERT INTO en VALUES meer of minder kolommen opgenomen hebben dan in het VALUES-gedeelte.

In dit geval heb je tussen INSERT INTO en VALUES 5 kolommen staan terwijl je bij de VALUES er maar 4 hebt (Daar neem je geen waarde op voor "id")

Waarschijnlijk heb je de kolom "id" op auto_increment staan en neem je hem om die reden niet op in het VALUES-gedeelte :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan