IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[PHP-JS] boucle for + explode


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 19
    Points
    19
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Syntaxiquement oui ca semble correct !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 19
    Points
    19
    Par défaut
    woaw pour une fois ^^

    Merci, je te dirais demain si c'est ok, une autre taches a finir avant ^

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    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 ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 19
    Points
    19
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $cat = explode("-", $session->cat);
    for($i=0; $i<count($cat);$i++ ){echo "AND Id_parent=$cat[$i] ";}
    la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bonjour
    tu peux utiliser la concaténation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $cat = explode("-", $session->cat);
    foreach ($cat as $catid){
      echo " AND Id_parent=$catid ";
    }

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 19
    Points
    19
    Par défaut
    bonjour,

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


    la voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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))

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu reagrdes le résulat par rapport à la requete et non au retour du mysql_query
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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))

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 19
    Points
    19
    Par défaut
    et bien je n'ai plus d'erreur il est vraie mais rien se s'affiche dans ma boucle while ^^

    j'affiche via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo stripslashes($donnees['Id_page']);
    la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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?

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu es sûr d'avoir des résultats ? (question débile, mais on ne sait jamais...)

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 19
    Points
    19
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  12. #12
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 19
    Points
    19
    Par défaut
    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

  14. #14
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Juste au passage, au lieu d'utiliser une foultitude de OR, un IN serait bien mieux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = 'SELECT * FROM pages WHERE Id_parent IN(0, ' . (str_replace('-', ',' $session->cat)) . ') ORDER BY Id_parent, Id_page ASC LIMIT '.$premiereEntree.', '.$messagesParPage;

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Points : 19
    Points
    19
    Par défaut
    ok merci, je vais voir pour implémenté ceci ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] boucle for dans php
    Par AI_LINUX dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 19/12/2011, 12h25
  2. boucle for php
    Par rezguiinfo dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 06/01/2010, 18h25
  3. [PHP 5.3] Comment sortir d'une boucle for en PHP ?
    Par beegees dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2009, 20h36
  4. boucle FOR php
    Par ginger4957 dans le forum Langage
    Réponses: 1
    Dernier message: 15/09/2009, 14h12
  5. inclure du html dans une boucle for en php?
    Par stef06 dans le forum Langage
    Réponses: 4
    Dernier message: 31/07/2006, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo