Une erreur php sur une requete sql

Résolu/Fermé
DiabloAndSab Messages postés 80 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 19 février 2009 - 19 mars 2008 à 17:39
DiabloAndSab Messages postés 80 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 19 février 2009 - 21 mars 2008 à 14:08
Bonjour à tous,

Ca 4 heures que je suis dessus et ca n'a servi à rien j'ai tout essayé pour empecher cette erreur mais
je n'y arrive pas donc si quelqu'un à une idée.
J'ai cherché si c'était les guillemets ou les points et apparement y a pas de probleme sachant que
ma requete depend d'une autre requete donc je sais pas si c'est ca le probleme.

syntax error, unexpected T_CONSTANT_ENCAPS line 90

Voila le script:

...
$requete2="select distinct( Nom), Prenom, Naissance, Adresse, CP, Ville, Pays,
Sexe, AnneeNaiss, Categorie, Club from insc_mdc_nouv order by Nom";
//echo $requete;
$bool2=mysql_query($requete2,$connexion);
$ligne=mysql_fetch_array($bool2);
if ($ligne)
{ while($ligne)
{
$nom=$ligne["Nom"];
$prenom=$ligne["Prenom"];
$naissance=$ligne["Naissance"];
$adresse=$ligne["Adresse"];
$CP=$ligne["CP"];
$ville=$ligne["Ville"];
$pays=$ligne["Pays"];
$sexe=$ligne["Sexe"];
$anneeNaiss=$ligne["AnneeNaiss"];
$categorie=$ligne["Categorie"];
$club=$ligne["Club"];
echo $ligne["Nom"]." ".$ligne["Prenom"]." ".$ligne["Naissance"]." ".$ligne["Adresse"]." ".$ligne["CP"]." ".$ligne["Ville"]." ".$ligne["Pays"]." ".$ligne["Sexe"]." ".$ligne["AnneeNaiss"]." ".$ligne["Categorie"]." ".$ligne["Club"];
$ligne=mysql_fetch_array($bool2);
$requete3="INSERT INTO insc_mdc_connu VALUES (NULL, '0', '".$nom."', '".$prenom."', '".$naissance."',
'".$adresse."', '".$CP."', '".$ville."', '".$pays."', '".$sexe."', '".$anneeNaiss."', '".$categorie."',
'".$club."', NULL , NULL , '0', '0', '0', '0', '0', '0', '', NULL , '', '0', '0', '0', '0', '0', '0', '0', '0', NULL , '0');";
echo $requete3;
$requete5="Select * from insc_mdc_connu where Nom='".$ligne["Nom"]."' and Prenom='".$ligne["Prenom"]."' and Naissance='".$ligne["Naissance"]."';";
$result = mysql_query($requete5, $connexion);
//echo $requete5; */
$Num= mysql_num_rows($result);
if($Num==0)
{
//$bool2=mysql_query($requete3,$connexion);
echo 'c bon';
}
}
}
...

Merci d'avance à celui ou celle qui m'aidera à trouver cette erreur.

7 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
19 mars 2008 à 17:42
salut,

c'est quelle ligne la 90 ?
0
DiabloAndSab Messages postés 80 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 19 février 2009 2
20 mars 2008 à 08:36
C la requete3

c'est à dire celle là:
$requete3="INSERT INTO insc_mdc_connu VALUES (NULL, '0', '".$nom."', '".$prenom."', '".$naissance."', 
'".$adresse."', '".$CP."', '".$ville."', '".$pays."', '".$sexe."', '".$anneeNaiss."', '".$categorie."', 
'".$club."', NULL , NULL , '0', '0', '0', '0', '0', '0', '', NULL , '', '0', '0', '0', '0', '0', '0', '0', '0'NULL , '0');";

Merci d'avance pour vos reponses.
0
DiabloAndSab Messages postés 80 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 19 février 2009 2
20 mars 2008 à 09:05
C'est bon j'ai trouvé:
Apparemment c'est le while qui plante donc si à la place on met un for ca fonctionne très bien

$num= mysql_num_rows($bool2);
			if ($ligne)
			{	$i=1;
				$numPartTrans=0;
				for($i;$i<$num;$i++)
				{	


Merci quand même pour l'aide Dalida.
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
20 mars 2008 à 10:20
salut,

oula, je n'avais pas lu le source en attendant l'info, j'aurais pu.

ton script est très bizarrement construit !

veux-tu des conseils pour y mettre un peu d'ordre ?
par exemple, si ton 'while()' ne fonctionne pas, c'est qu'il est mal utilisé.
0
DiabloAndSab Messages postés 80 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 19 février 2009 2
20 mars 2008 à 10:59
Oué je veux bien que tu m'expluqe pour le while.

Merci
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
20 mars 2008 à 12:19
en premier, regarde ton script. je n'ai conservé que ce qui sert à la requête 2.
'mysql_fetch_assoc()' retourne "vrai" quand il réussit à lire la ligne courante dans la réponse de la bdd.

le 'while()' effectue la boucle "tant que" la valeur qu'il teste est vraie.
donc tant que le résultat de ta bdd retourne une ligne, la boucle s'exécute.
<?php
$requete2="select distinct( Nom), Prenom, Naissance, Adresse, CP, Ville, Pays,
Sexe, AnneeNaiss, Categorie, Club from insc_mdc_nouv order by Nom";
$bool2=mysql_query($requete2,$connexion);
while( $ligne=mysql_fetch_array($bool2) )
{
	$nom=$ligne["Nom"];
	$prenom=$ligne["Prenom"];
	$naissance=$ligne["Naissance"];
	$adresse=$ligne["Adresse"];
	$CP=$ligne["CP"];
	$ville=$ligne["Ville"];
	$pays=$ligne["Pays"];
	$sexe=$ligne["Sexe"];
	$anneeNaiss=$ligne["AnneeNaiss"];
	$categorie=$ligne["Categorie"];
	$club=$ligne["Club"];
	echo $ligne["Nom"]." ".$ligne["Prenom"]." ".$ligne["Naissance"]." ".$ligne["Adresse"]." ".$ligne["CP"]." ".$ligne["Ville"]." ".$ligne["Pays"]." ".$ligne["Sexe"]." ".$ligne["AnneeNaiss"]." ".$ligne["Categorie"]." ".$ligne["Club"];
	//$ligne=mysql_fetch_array($bool2); /* là tu ne devrais pas toucher à la ligne en cours */
	
	/*  à priori, $requete3 ne sert pas */
	/*$requete3="INSERT INTO insc_mdc_connu VALUES (NULL, '0', '".$nom."', '".$prenom."', '".$naissance."',
	'".$adresse."', '".$CP."', '".$ville."', '".$pays."', '".$sexe."', '".$anneeNaiss."', '".$categorie."',
	'".$club."', NULL , NULL , '0', '0', '0', '0', '0', '0', '', NULL , '', '0', '0', '0', '0', '0', '0', '0', '0', NULL , '0');";
	echo $requete3; */
	
	/* là tu travailles avec la ligne suivante, est-ce bien ce que tu veux ??? */
	/*$requete5="Select * from insc_mdc_connu where Nom='".$ligne["Nom"]."' and Prenom='".$ligne["Prenom"]."' and Naissance='".$ligne["Naissance"]."';";
	$result = mysql_query($requete5, $connexion);
	//echo $requete5; 
	$Num= mysql_num_rows($result);
	if($Num==0)
	{
	//$bool2=mysql_query($requete3,$connexion);
	echo 'c bon';
	}*/
}
?>

pour que ton code soit plus lisible mieux vaut utiliser des variables avec des noms explicites. en général on prend des noms en anglais qui sont les mêmes que ceux utilisés dans le manuel PHP, comme ça tu repères plus vite ce qu'il faut utiliser avec d'autres fonctions.

en plus de cela, je formate ta requête SQL (instructions en majuscules, champs entre accents aigus) et j'utilise 'mysql_fetch_object()' au lieu de 'mysql_fetch_array()' qui renvoie un objet au lieu d'un tableau. cela permet d'appeler la valeur de la ligne par '$row->Champ' plutôt que '$row["Champ"]' ce qui est beaucoup plus simple à taper.
cela donne :
<?php
$sql = 'SELECT DISTINCT( `Nom` ), `Prenom`, `Naissance`, `Adresse`, `CP`, `Ville`, `Pays`, `Sexe`, `AnneeNaiss`, `Categorie`, `Club` FROM `insc_mdc_nouv` ORDER BY `Nom`;';
$result = mysql_query( $sql , $connexion );
while( $row = mysql_fetch_object( $result ) )
{
	echo $row->Nom." ".$row->Prenom." ".$row->Naissance." ".$row->Adresse." ".$row->CP." ".$row->Ville." ".$row->Pays." ".$row->Sexe." ".$row->AnneeNaiss." ".$row->Categorie." ".$row->Club;
}
?>

plus claire non ?
il y a peut être des fautes de syntaxes, j'ai tout tapé à la volé et je ne peux pas tester !
-;o)
maintenant, il n'y a plus qu'à remettre ce que tu voulais faire avec '$requete5' en suivant la même méthode.
0
DiabloAndSab Messages postés 80 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 19 février 2009 2
20 mars 2008 à 15:42
Merci Dalida pour l'explication c'est sympa par contre ca bug un peu et j'ai dejà une solution qui fonctionne
et il me reste encore plusieurs chose à faire. Je te remercie pour ton aide.

Par contre si tu sais comment transformer une page qui recoit un résultat de requete sql sous forme de tableau
en pdf; je suis tout ouïe. J'ai dejà post ce sujet mais ya pas grand monde qui m'a repondu.
http://www.commentcamarche.net/forum/affich 5508161 mettre une page internet en pdf
Voilà et encore merci!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
20 mars 2008 à 15:43
salut,

pour le PDF, mieux vaut utiliser une bibliothèque.

regarde , je te conseille FPDF.
0
DiabloAndSab Messages postés 80 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 19 février 2009 2
20 mars 2008 à 16:15
Ok merci je te tiens au courant
0
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 143
20 mars 2008 à 16:27
Salut DiabloAndSeb,

J'ai relu en diagonale ta requête 3 même si c'est résolu, si tu as copié collé il y a une erreur à la fin :

$requete3="INSERT INTO insc_mdc_connu VALUES (NULL, '0', '".$nom."', '".$prenom."', '".$naissance."',
'".$adresse."', '".$CP."', '".$ville."', '".$pays."', '".$sexe."', '".$anneeNaiss."', '".$categorie."',
'".$club."', NULL , NULL , '0', '0', '0', '0', '0', '0', '', NULL , '', '0', '0', '0', '0', '0', '0', '0', '0'NULL , '0');";

Il semble qu'une petite virgule manque mais comme le dit Dalida, c'est bien le bordel ^^
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
20 mars 2008 à 16:34
salut,

comme le dit Dalida, c'est bien le bordel
tu dépasses mes propos !!!

mais peut être pas ma pensée…
-;o)
0
DiabloAndSab Messages postés 80 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 19 février 2009 2
21 mars 2008 à 14:06
Dsl pour la virgule petit bug j'ai verifié.
Et c'est Diablo and Sab mon pseudo, mais bon vous pouvez dire Diablo
Merci pour ta réponse.
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
20 mars 2008 à 16:41
C'est effectivement plus que le foutoir.

J'ai réécrit ton INSERT en ordonnant le code, en passant à la ligne régulièrement et en séparant chaque élément syntaxique par un espace.

Ceci permet très rapidement d'arriver à ce qui suit et devrait fonctionner sans pb :
$requete3 = "INSERT INTO insc_mdc_connu"
	. " VALUES (NULL, '0', '" . $nom 
	. "', '" . $prenom
	. "', '" . $naissance
	. "','" . $adresse 
	. "', '" . $CP 
	. "', '" . $ville
	. "', '" . $pays
	. "', '" . $sexe
	. "', '" . $anneeNaiss
	. "', '" . $categorie
	. "','" . $club
	. "', NULL , NULL , '0', '0', '0', '0', '0', '0',"
	. "'', NULL , '', '0', '0', '0', '0', '0', '0', '0',"
	. "'0', NULL , '0')";


Une recommandation : écris toujours ton code de manière ordonnée, crois-moi tu y gagneras énormément de temps.
0
DiabloAndSab Messages postés 80 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 19 février 2009 2
21 mars 2008 à 14:08
Ok merci croy pour ton aide.
Mais en fete ce que j'ai envoyé et ma mise en forme
final c'est à dire que je mets tous sur une ou deux lignes
pour faciliter la lecture du script. Par contre je suis désolé
d'avoir mis cette mise en forme.
Merci pour ton aide
0