Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
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/08/2007, 15h53   #1
Invité régulier
 
Inscription : juillet 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 57
Points : 7
Points : 7
Par défaut [PHP-JS] boucle for + explode

Bonjour à tous,

voilà je suis sur un questionnement dans le but d'un développement proche...

j'aimerais faire ceci :

Tant que i$ est plus petit que le nombre total de champs sortant de mon explode
Alors on affiche formation[$i]
(si bel et bien formation[$i] est un champs de ma sortie d'explode )

Voici ce que j'ai imaginé :
Code :
1
2
3
4
5
 
$formationD = explode("-", $donnees['formationD']);
	for($i=0; $i<count($formationD);$i++ ){
	echo "AND id=\' ".$formationD[$i]."\' ";
	}
Est ce que l'un d'entre vous peut me dire si cela semble correct?

merci
acppca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 16h01   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Syntaxiquement oui ca semble correct !
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 16h03   #3
Invité régulier
 
Inscription : juillet 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 57
Points : 7
Points : 7
woaw pour une fois ^^

Merci, je te dirais demain si c'est ok, une autre taches a finir avant ^
acppca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 17h22   #4
Membre expérimenté
 
Inscription : septembre 2006
Messages : 685
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 685
Points : 564
Points : 564
Syntaxiquement c'est correct, oui, mais en ce qui concerne la méthode, pour ma part, ce ne l'est pas, car je suppose que c'est une partie de la construction d'une requête qu'effectue ta boucle ?
Xunil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 10h16   #5
Invité régulier
 
Inscription : juillet 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 57
Points : 7
Points : 7
Bonjour,
désolé pour le retard...

Oui exactement pour ceci et justement je bloque à l'inclure dans une requêtes.

voici la boucle au final :
Code :
1
2
3
 
$cat = explode("-", $session->cat);
for($i=0; $i<count($cat);$i++ ){echo "AND Id_parent=$cat[$i] ";}
la requete :
Code :
1
2
 
$retour = mysql_query('SELECT * FROM pages WHERE Id_parent = '.$PID.' ORDER BY Id_parent, Id_page ASC LIMIT '.$premiereEntree.', '.$messagesParPage.'');
si tu as une idée pour l'inclure ou faire ceci autrement je suis prenneur, merci en tout cas
acppca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 10h35   #6
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Bonjour
tu peux utiliser la concaténation
Code :
1
2
3
4
5
6
7
8
$requete = 'SELECT * FROM pages WHERE Id_parent = '.$PID.' ' ;
$cat = explode("-", $session->cat);
for($i=0; $i<count($cat);$i++ ){
  $requete .= " AND Id_parent=$cat[$i] ";
} 
 
$requete .= ' ORDER BY Id_parent, Id_page ASC LIMIT '.$premiereEntree.', '.$messagesParPage.'';
mysql_query ($requete) or die ('erreur sur '.$requete.' : '.mysql_error());
Pour ta boucle, tu aurais également pu utiliser foreach
Code :
1
2
3
4
$cat = explode("-", $session->cat);
foreach ($cat as $catid){
  echo " AND Id_parent=$catid ";
}
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 10h45   #7
Invité régulier
 
Inscription : juillet 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 57
Points : 7
Points : 7
bonjour,

merci beaucoup je n'y avais pas pensé mais j'ai une erreur je vois pas trop... ou


la voici :
Code :
1
2
3
4
5
6
 
 
$cat = explode("-", $session->cat);
foreach ($cat as $catid){
  echo " AND Id_parent=$catid ";
}
le code appliqué à la lettre :
Code :
1
2
3
4
5
6
7
$requete = 'SELECT * FROM pages WHERE Id_parent = '.$PID.' ' ;
$cat = explode("-", $session->cat);
for($i=0; $i<count($cat);$i++ ){
  $requete .= " AND Id_parent=$cat[$i] ";
} 
$requete .= ' ORDER BY Id_parent, Id_page ASC LIMIT '.$premiereEntree.', '.$messagesParPage.''; mysql_query ($requete) or die ('erreur sur '.$requete.' : '.mysql_error());
while ($donnees = mysql_fetch_array($requete))
acppca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 10h50   #8
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Tu reagrdes le résulat par rapport à la requete et non au retour du mysql_query
Code :
1
2
3
4
5
6
7
8
$requete = 'SELECT * FROM pages WHERE Id_parent = '.$PID.' ' ;
$cat = explode("-", $session->cat);
for($i=0; $i<count($cat);$i++ ){
  $requete .= " AND Id_parent=$cat[$i] ";
} 
$requete .= ' ORDER BY Id_parent, Id_page ASC LIMIT '.$premiereEntree.', '.$messagesParPage.''; 
$retour = mysql_query ($requete) or die ('erreur sur '.$requete.' : '.mysql_error());
while ($donnees = mysql_fetch_array($retour))
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 11h13   #9
Invité régulier
 
Inscription : juillet 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 57
Points : 7
Points : 7
et bien je n'ai plus d'erreur il est vraie mais rien se s'affiche dans ma boucle while ^^

j'affiche via
Code :
echo stripslashes($donnees['Id_page']);
la boucle :
Code :
1
2
3
4
5
6
7
8
9
10
$requete = 'SELECT * FROM pages WHERE Id_parent = 0 ' ;
$cat = explode("-", $session->cat);
for($i=0; $i<count($cat);$i++ ){
  $requete .= " AND Id_parent=$cat[$i] ";
} 
$requete .= ' ORDER BY Id_parent, Id_page ASC LIMIT '.$premiereEntree.', '.$messagesParPage.''; 
$retour = mysql_query ($requete) or die ('erreur sur2 '.$requete.' : '.mysql_error());
while ($donnees = mysql_fetch_array($retour))
 {
?>
c'est assez étonnant que rien de s'affiche non?
acppca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 11h30   #10
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Tu es sûr d'avoir des résultats ? (question débile, mais on ne sait jamais...)
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 11h32   #11
Invité régulier
 
Inscription : juillet 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 57
Points : 7
Points : 7
et bien dans ma base de donnée

j'ai bel et bien des documents qui répondent a id_parent =2 , 4 et 5

mais même lorsque je test directement la requete, rien ne s'affiche :
Code :
SELECT * FROM pages WHERE Id_parent = 0 AND Id_parent=4 AND Id_parent=5 AND Id_parent=6 ORDER BY Id_parent, Id_page ASC LIMIT 0, 10
et aucune erreur ...

si je ne mets qu'un seul id_parent, il me l'affiche correctement...

je vois pas trop
acppca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 11h42   #12
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Citation:
Envoyé par acppca
et bien dans ma base de donnée

j'ai bel et bien des documents qui répondent a id_parent =2 , 4 et 5

mais même lorsque je test directement la requete, rien ne s'affiche :
Code :
SELECT * FROM pages WHERE Id_parent = 0 AND Id_parent=4 AND Id_parent=5 AND Id_parent=6 ORDER BY Id_parent, Id_page ASC LIMIT 0, 10
et aucune erreur ...

si je ne mets qu'un seul id_parent, il me l'affiche correctement...

je vois pas trop
Tu as des éléments de ta base qui ont l'id_parent à 2 ET 4 ET 5 ? ça ne srait pas plutot à 2 ou 4 ou 5 ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 11h45   #13
Invité régulier
 
Inscription : juillet 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 57
Points : 7
Points : 7
j'aurais vraiment mieux fait de ne pas me réveillier ce matins, c'est bel et bien des or et non des and qu'il faut...

désolé du dérangement ^^
il y a des jours comme ça (trop souvent d'ailleurs ^^) ou je ferais mieux de pas bosser ^^

merci
acppca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 14h41   #14
Membre expérimenté
 
Inscription : septembre 2006
Messages : 685
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 685
Points : 564
Points : 564
Juste au passage, au lieu d'utiliser une foultitude de OR, un IN serait bien mieux.

Code :
$requete = 'SELECT * FROM pages WHERE Id_parent IN(0, ' . (str_replace('-', ',' $session->cat)) . ') ORDER BY Id_parent, Id_page ASC LIMIT '.$premiereEntree.', '.$messagesParPage;
Xunil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 14h43   #15
Invité régulier
 
Inscription : juillet 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 57
Points : 7
Points : 7
ok merci, je vais voir pour implémenté ceci ^^
acppca 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 04h41.


 
 
 
 
Partenaires

Hébergement Web