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

PHP & Base de données Discussion :

La requête fonctionne, mais la boucle ne s'affiche pas [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 34
    Points : 25
    Points
    25
    Par défaut La requête fonctionne, mais la boucle ne s'affiche pas
    Bonsoir à toutes et à tous,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    29
    <?php 
     
    $liendb = mysql_connect('localhost', 'XXX', 'XXX');
    mysql_select_db ('doty');
     
    $sql = ("SELECT * FROM `documents` WHERE id_categorie='".$_REQUEST['id_categorie']."' AND annee='".$_REQUEST['annee']."' ");
    $resultat = mysql_query ($sql);
    $infos = mysql_fetch_array ($resultat);
     
    $categorie = $infos['categorie'];
    $annee = $infos['annee'];
     
    echo "<h1>$categorie</h1>";
    echo "<p>Vous avez séléctionné les "; print(strtolower($categorie)); echo " de l'année $annee.</p>";
     
    while ($infos = mysql_fetch_array ($resultat))
    		{
    			$nom = $infos['nom'];
    			$type = $infos['type'];
    			$jour = $infos['jour'];
    			$mois = $infos['mois'];
    			$annee = $infos['annee'];
     
    			echo "<p>$jour/$mois/$annee : <a href=\"http://localhost:8888/acanthe/acan/fr/finances/documents/$annee/$type/$nom.pdf\">$nom</a></p>";
    		}
     
    mysql_close($liendb);
     
    ?>
    Depuis un URL, je récupère (sélectionne) une année et une catégorie.
    Ces deux variables me permettent d'exécuter une requête SQL.

    Les deux lignes suivantes fonctionnent très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "<h1>$categorie</h1>";
    echo "<p>Vous avez séléctionné les "; print(strtolower($categorie)); echo " de l'année $annee.</p>";
    Par contre la boucle while ne s'éxécute pas, et aucun code n'est généré dans ma page.

    Pourtant j'ai repris la même structure de boucle que j'utilise pour d'autre requête et qui fonctionne très bien.

    Le but de la requête, est de chercher tous les documents d'une catégorie X d'une année Y et de sortir les noms dans un lien.

    En espérant que vous pourrez m'aider.

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Bonjour,

    remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_REQUEST['id_categorie']
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_GET['id_categorie']
    Ou $_POST si c'est la méthode.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 34
    Points : 25
    Points
    25
    Par défaut
    Bonsoir,

    Merci de ta réponse rapide

    Avec $_GET j'ai le même résultat qu'avec $_REQUEST.
    Avec $_POST cela ne fonctionne pas.

    La requête fonctionne bien.
    Les deux premiers echo également.

    Par contre c'est la boucle while qui pose problème

  4. #4
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $resultat = mysql_query ($sql) or die(mysql_error());
    Si il y a une erreur sql elle sera affichée

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 34
    Points : 25
    Points
    25
    Par défaut
    J'avais déjà essayé, et j'ai retenté - sait-on jamais - et aucune erreur n'est retournée

    Je commence à m'inquiéter...

  6. #6
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Je crois que comme tu fais ton fetch auparavant, il faut que tu refasses mysql_query()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ... 
    $infos = mysql_fetch_array ($resultat);
     
    $categorie = $infos['categorie'];
    $annee = $infos['annee'];
     
    echo "<h1>$categorie</h1>";
    echo "<p>Vous avez séléctionné les "; print(strtolower($categorie)); echo " de l'année $annee.</p>";
     
    $resultat = mysql_query ($sql) or die(mysql_error());
    while ($infos = mysql_fetch_array ($resultat))
    {

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Doubs (Franche Comté)

    Informations forums :
    Inscription : Août 2007
    Messages : 21
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Daddy91 Voir le message
    J'avais déjà essayé, et j'ai retenté - sait-on jamais - et aucune erreur n'est retournée

    Je commence à m'inquiéter...
    Dans tous les cas, affiche-nous la requête telle qu'elle est passée au serveur pour vérifier que ce n'est pas plutôt une question mysql.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 34
    Points : 25
    Points
    25
    Par défaut
    Comment puis-je dire que tu es un Dieu ?

    Je te remercie tu viens de me retirer une grosse épine du pied !

    Merci beaucoup.

    A bientôt.

  9. #9
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Dans ce cas là, il serait préférable de faire 2 requetes : la première en ne récupérant que les champs categorie et annee puis la seconde avec *

    Ce serait plus économique .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sql1 = ("SELECT categorie, annee FROM `documents` WHERE id_categorie='".$_REQUEST['id_categorie']."' AND annee='".$_REQUEST['annee']."' ");
     
    $sql2 = ("SELECT * FROM `documents` WHERE id_categorie='".$_REQUEST['id_categorie']."' AND annee='".$_REQUEST['annee']."' ");

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 34
    Points : 25
    Points
    25
    Par défaut
    Je viens d'appliquer tes conseils.
    Tout continue de fonctionner.

    Et si en plus ça économise !

    Nickel

    Merci beaucoup.

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

Discussions similaires

  1. La Requête Fonctionne mais pas son contraire @_@
    Par ecnailof dans le forum Requêtes
    Réponses: 23
    Dernier message: 07/07/2011, 15h26
  2. [SimpleXML] Boucle "for" n'affiche pas le résultat que je veux
    Par sasaas dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 20/02/2008, 15h05
  3. une redirection mais le message ne s'affiche pas
    Par mademoizel dans le forum ASP
    Réponses: 8
    Dernier message: 22/03/2007, 16h23
  4. Requête fonctionne mais resultats incomplets
    Par lo_runisland dans le forum Langage SQL
    Réponses: 10
    Dernier message: 29/09/2006, 12h58
  5. Réponses: 7
    Dernier message: 20/04/2004, 15h55

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