erreur! normal vu mon niveau :((

Invité
Invité n'ayant pas de compte PHPfrance

16 août 2005, 20:40

salut tout le monde :D et merci de m'accueillir!
je suis débutant en php/mysql, je viens juste de comprendre comment fonctionnait à peu près la base de données sous phpmyadmin, c'est pour dire!
en fait, un pote m'avait filé les fichiers pour un formulaire que je lui avais demandé et depuis je l'ai réutilisé, j'ai donc du le modifier un peu.
Niveau, on va dire, articulation des différents fichiers et de la base de données, pas de probleme ca a l'air de fonctionner.
le but étant de recueillir des réponses à des questions (réponses sous forme text area) dans une table de données et ca a l'air de fonctionner mais quand je veux soumettre mes réponses à la base sql, le navigateur me dit qu'il y a une erreur ligne 178, ligne qui correspond en fait à une balise </html> normale.
je comprends pas d'ou vient l'erreur, j'ai pas de balises en doublons, je suppose donc que c'est plus compliqué que je le pensais! je vous mets le code :
<html>
<body>
<?php

require("conf.php3");

// on se connecte à MySQL 
/*$db = mysql_connect("$sql_serveur","$sql_user","$sql_passwd") or die ("Connection impossible. Desoler Veuillez réessayer plutard.");

// on sélectionne la base 
mysql_select_db('questionnaire',$db); 


// on crée la requête SQL 
/*$sql = 'SELECT nom,prenom,statut,date FROM famille_tbl'; 

// on envoie la requête 
//$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

// on fait une boucle qui va faire un tour pour chaque enregistrement 
while($data = mysql_fetch_assoc($req)) 
    { 
    // on affiche les informations de l'enregistrement en cours 
    echo '<b>'.$data['nom'].' '.$data['prenom'].'</b> ('.$data['statut'].')'; 
    echo ' <i>date de naissance : '.$data['date'].'</i><br>'; 
    } 

// on ferme la connexion à mysql */

$erreur=0;


if(!empty($_POST["ques1"])){
	$ques1 = $_POST['ques1'];
	$reponses[]=$ques1;
}else

{
	$reponses[]='';
	
}
if(!empty($_POST["ques2"])){
	$ques2 = $_POST['ques2'];
	$reponses[]=$ques2;
}else
{
	$reponses[]='';
	
}
if(!empty($_POST["ques3"])){
	$ques3 = $_POST['ques3'];
	$reponses[]=$ques3;
}else
{
	$reponses[]='';
	
}
if(!empty($_POST["ques4"])){
	$ques4 = $_POST['ques4'];
	$reponses[]=$ques4;
}else
{
	$reponses[]='';
	
}
if(!empty($_POST["ques5"])){
	$ques5 = $_POST['ques5'];
	$reponses[]=$ques5;
}else
{
	$reponses[]='';
	
}
if(!empty($_POST["ques6"])){
	$ques6 = $_POST['ques6'];
	$reponses[]=$ques6;
}else
{
	$reponses[]='';
	
}
if(!empty($_POST["ques7"])){
	$ques7 = $_POST['ques7'];
	$reponses[]=$ques7;
}else
{
	$reponses[]='';
	
}
if(!empty($_POST["ques8"])){
	$ques8 = $_POST['ques8'];
	$reponses[]=$ques8;
}else
{
	$reponses[]='';
	
}
if(!empty($_POST["ques9"])){
	$ques9 = $_POST['ques9'];
	$reponses[]=$ques9;
}else
{
	$reponses[]='';

}
if(!empty($_POST["ques10"])){
	$ques10 = $_POST['ques10'];
	$reponses[]=$ques10;
}else
{
	$reponses[]='';
	
}
if(!empty($_POST["ques11"])){
	$ques11 = $_POST['ques11'];
	$reponses[]=$ques11;
}else
{
	$reponses[]='';
	
}
if(!empty($_POST["ques12"])){
	$ques12 = $_POST['ques12'];
	$reponses[]=$ques12;
}else
{
	$reponses[]='';
	
}
if(!empty($_POST["ques13"])){
	$ques13 = $_POST['ques13'];
	$reponses[]=$ques13;
}else
{
	$reponses[]='';
	
}
if(!empty($_POST["ques14"])){
	$ques14 = $_POST['ques14'];
	$reponses[]=$ques14;
}else
{
	$reponses[]='';
	


if($erreur==0){

	/*for($i=0;$i<14;$i++)
	{
		echo $reponses[$i].'<br>';
	}*/

	
	// on se connecte à MySQL 
	$db = mysql_connect("$sql_serveur","$sql_user","$sql_passwd") or die ("Connection impossible. Desolé Veuillez réessayer plutard.". mysql_error());
	
	//requete pour inscrire le resultat du formulaire dans la bdd
	$requete = "INSERT INTO reponses (question1, question2, question3, question4, question5, question6, question7, question8, question9, question10, question11, question12, question13, question14)
				VALUES ('$reponses[0]', '$reponses[1]', '$reponses[2]', '$reponses[3]', '$reponses[4]', '$reponses[5]', '$reponses[6]', '$reponses[7]', '$reponses[8]', '$reponses[9]', '$reponses[10]', '$reponses[11]', '$reponses[12]', '$reponses[13]', '$reponses[14]')";

	// on sélectionne la base 
	$db_selected=mysql_select_db('questionnaire',$db) or die ('Impossible de sélectionner la base de données : '.mysql_error()); 
	
	// Execution de cette requete dans la base reponses
	$execution = mysql_query($requete) or die ('Erreur SQL !<br>'.$requete.'<br>'.mysql_error().'<b>Desoler</b>');


	mysql_close();
	
	echo '<b>Merci</b> d\'avoir soumis votre événement.<br> Vos réponses ont bien été enregitrées.';

}

?> 


</body>
</html> [b]<<<< ligne 178 en question [/b]
comme vous pouvez le voir, j'ai toujours utilisé la meme maniere pour chaque question histoire de pas prendre trop de risques, vu mon niveau :oops: j'espère pouvoir compter sur vos conseils avisés. merci beaucoup :wink: :cry:

Eléphant du PHP | 90 Messages

16 août 2005, 20:41

en fait, je m'étais inscrit mais j'avais oublié de me logger :oops: :D

Mammouth du PHP | 1885 Messages

16 août 2005, 20:48

Bonjour,

Il manque un } après ce bloc:
if(!empty($_POST["ques14"])){
    $ques14 = $_POST['ques14'];
    $reponses[]=$ques14;
}else
{
    $reponses[]=''; 
Tes 14 questions pourraient également se résumer ainsi:
for ($i=1;$i<=14;$i++) {
    $reponses[$i] = !empty($_POST['ques'.$i]) ? $_POST['ques'.$i] : '';
}
Les index du tableau $reponses sont maintenant ceus correspondant au numéro de la question. À toi de voir.

De plus, il est recommandé d'assurer un peu plus de sécurité en utilisant la fonction mysql_escape_string() lors de l'insertion des données.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphant du PHP | 90 Messages

16 août 2005, 22:31

oki je tente ton truc, ca me parait plus logique la déjà, par contre, juste comme ca, il m'a répondu ca le navig quand j'ai rajouté l'accolade, j'avais pas vu la suite du message :

Erreur SQL !
INSERT INTO reponses (question1, question2, question3, question4, question5, question6, question7, question8, question9, question10, question11, question12, question13, question14) VALUES ('ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'oko', 'ok', 'ok', '')
Column count doesn't match value count at row 1Desoler

je tente avec ta méthode mais je sais pas si ca a avoir cette erreur

Eléphant du PHP | 90 Messages

16 août 2005, 22:39

hello! nickel ta méthode!! pour sécuriser, je rajoute juste ta ligne ou tu préconises d'autres petits trucs à savoir... par contre, il me redit la meme chose le navig à savoir :
Erreur SQL !
INSERT INTO reponses (question1, question2, question3, question4, question5, question6, question7, question8, question9, question10, question11, question12, question13, question14) VALUES ('', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok', 'ok')
Column count doesn't match value count at row 1Desoler

ca vient peut etre plus de la base de données ?

Mammouth du PHP | 1885 Messages

16 août 2005, 22:42

Bonjour,

Tu as plus de valeurs que de colonnes. (14 contre 15)
N'oublie pas que l'index 0 n'existe pas avec cette méthode.
D'ailleurs, il semblerait que tu aies eu ce problème dès le début si je regarde bien la requête initiale.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Invité
Invité n'ayant pas de compte PHPfrance

17 août 2005, 00:16

merci !!! je m'étais absenté, je reviens, essaie de comprendre ce que tu me dis et boom par miracle et chance je tombe sur la ligne ou effectivement y avait un $reponse en trop! merci !! (résolu)