Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/03/2011, 18h55   #1
Membre à l'essai
 
Inscription : septembre 2009
Messages : 129
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 129
Points : 20
Points : 20
Par défaut requette preparé n'affichant que la premiere lettre des categories

bonsoir a tous,

me mettant a la requette preparer j'ai decidé de modiffié toute mes pages mai la je rencontre un probleme minim que je n'arrive pas a resoudre malgres differentes lectures de forum et manuel sur la requette préparer donc le probleme est le suivant :

avant de commencer je precise que ce code fonctionne tres bien avec une requette simple mais dans le cas d'une requette preparé il fonctionne aussi mis a par l'afichage des noms des categories sa ne m'affiche que la premiere lettre des noms.

requette :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$sth = $dbh->prepare('SELECT NomForum, DescriptifForum, LogoForum, NomCategorie,IdForCat,IdCategorie
					 FROM categorie
					 LEFT JOIN forum ON IdForCat=IdCategorie GROUP BY IdForum');
 
 
 
 
$sth->bindValue(':NomCategorie', PDO::PARAM_STR);
$sth->bindValue(':NomForum',  PDO::PARAM_STR);
$sth->execute();                      
 
while($row = $sth->fetch(PDO::FETCH_ASSOC)){
$categorie = $row['NomCategorie'];
$tableau[$categorie][] = $row;
}
et la l'affichage :

Code :
1
2
3
4
5
6
7
8
9
10
foreach($tableau as $NomCategorie=>$valeur){
 
echo $NomCategorie['NomCategorie'];
 
foreach($valeur as $souscategorie){
 
echo $souscategorie['NomForum'];
 
}
}

pouriez vous me dir si il y a une erreur dans ce code pour une requette preparé?


je vous remerci d'avance
keusty78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 19h19   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 102
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 102
Points : 8 465
Points : 8 465
fais un SUBSTR sur la première colonne, et utilise PDO::FETCH_GROUP, t'aura même pas besoin de faire de foreach
par contre ton bindvalue n'est pas bon, ca prendre 3 paramètres regarde la doc
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 19h42   #3
Membre à l'essai
 
Inscription : septembre 2009
Messages : 129
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 129
Points : 20
Points : 20
Citation:
Envoyé par stealth35 Voir le message
fais un SUBSTR sur la première colonne, et utilise PDO::FETCH_GROUP, t'aura même pas besoin de faire de foreach
par contre ton bindvalue n'est pas bon, ca prendre 3 paramètres regarde la doc

merci pour ta reponse je vai tester et pour ce qui est des trois parametre je vien d'y jeter un oeuil parcontre aucune idee de ce que je doi mettre pasque dans leur exemple il mette une variable :

Code :
1
2
3
4
5
6
7
8
9
10
11
<?php
/* Exécute une requête préparée en associant des variables PHP */
$calories = 150;
$couleur = 'rouge';
$sth = $dbh->prepare('SELECT nom, couleur, calories
    FROM fruit
    WHERE calories < :calories AND couleur = :couleur');
$sth->bindValue(':calories', $calories, PDO::PARAM_INT);
$sth->bindValue(':couleur', $couleur, PDO::PARAM_STR);
$sth->execute();
?>
hors moi je n'utilise pas de variable alor la je ne sai pas dutout ce que je dois mettre
keusty78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 20h12   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 102
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 102
Points : 8 465
Points : 8 465
si t'as pas de valeur a mettre ca ne sert a rien de faire une requete preparée, utilise direct PDO->query
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 20h52   #5
Membre à l'essai
 
Inscription : septembre 2009
Messages : 129
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 129
Points : 20
Points : 20
Citation:
Envoyé par stealth35 Voir le message
si t'as pas de valeur a mettre ca ne sert a rien de faire une requete preparée, utilise direct PDO->query
ok stealth35 merci du conseil je vais tester tous ca
keusty78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 22h06   #6
Membre à l'essai
 
Inscription : septembre 2009
Messages : 129
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 129
Points : 20
Points : 20
apres multiple teste le probleme ne change pas meme avec un PDO->query
je comprend pas le probleme

mai ce que je trouve bizar c'est que quand je fait une requette simple de base sa marche nikel

le probleme viendrai t-il de PDO->query ? ou de la boucle foreach?
je suis coincé.
keusty78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 22h07   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 102
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 102
Points : 8 465
Points : 8 465
montre ton code
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 18h16   #8
Membre à l'essai
 
Inscription : septembre 2009
Messages : 129
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 129
Points : 20
Points : 20
Citation:
Envoyé par stealth35 Voir le message
montre ton code
le voi ci j'ai juste changer "prepar" par query je c'est pas si c'est exactement ce que t'a voulu me dir par "met directement un query" je suis perdu entre tous ces nouveau truk pdo,mysqli... c'est confus dans ma tete lol

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$sth = $dbh->quey('SELECT NomForum, DescriptifForum, LogoForum, NomCategorie,IdForCat,IdCategorie
					 FROM categorie
					 LEFT JOIN forum ON IdForCat=IdCategorie GROUP BY IdForum');
 
 
 
 
$sth->bindValue(':NomCategorie', PDO::PARAM_STR);
$sth->bindValue(':NomForum',  PDO::PARAM_STR);
$sth->execute();                      
 
while($row = $sth->fetch(PDO::FETCH_ASSOC)){
$categorie = $row['NomCategorie'];
$tableau[$categorie][] = $row;
}
 
//ci dessous l'affichage
 
foreach($tableau as $NomCategorie=>$valeur){
 
echo $NomCategorie['NomCategorie'];
 
foreach($valeur as $souscategorie){
 
echo $souscategorie['NomForum'];
 
}
}
keusty78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 19h04   #9
Membre à l'essai
 
Inscription : septembre 2009
Messages : 129
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 129
Points : 20
Points : 20
meme en modiffiant en mysqli j'ai le meme probleme!!!


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$resultat = $connexion->query('SELECT NomForum, DescriptifForum, LogoForum, NomCategorie,IdForCat,IdCategorie
					 FROM categorie
					 LEFT JOIN forum ON IdCategorie=IdForCat GROUP BY IdForum');
 
$connexion->close();
 
while($ligne = $resultat->fetch_assoc()){
$categorie =$ligne['NomCategorie'];
$tableau[$categorie][] = $ligne;
}
 
foreach($tableau as $NomCategorie=>$valeur){ 
echo $NomCategorie['NomCategorie'];
 
foreach($valeur as $souscategorie){
echo $souscategorie['NomForum'];
 
 }
}
keusty78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 19h58   #10
Membre à l'essai
 
Inscription : septembre 2009
Messages : 129
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 129
Points : 20
Points : 20
finalement j'ai viré le foreach qui me posais probleme et j'ai opter pour les condition dans une boucle while sa a regler le probleme je sais pas si c'est mieux mai en tout ca sa fonctionne lol

Code :
1
2
3
4
while($ligne = $resultat->fetch_array()){ 
	if ($categorie != $ligne['NomCategorie']) {
		$categorie = $ligne['NomCategorie'];
		$forum = "";....
keusty78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h08.


 
 
 
 
Partenaires

Hébergement Web