Page 1 sur 1

erreur! normal vu mon niveau :((

Posté : 16 août 2005, 20:40
par Invité
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:

Posté : 16 août 2005, 20:41
par epilogg
en fait, je m'étais inscrit mais j'avais oublié de me logger :oops: :D

Posté : 16 août 2005, 20:48
par Xenon_54
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.

Posté : 16 août 2005, 22:31
par epilogg
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

Posté : 16 août 2005, 22:39
par epilogg
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 ?

Posté : 16 août 2005, 22:42
par Xenon_54
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.

Posté : 17 août 2005, 00:16
par Invité
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)