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 :

Pb sur boucle while [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 153
    Points
    153
    Par défaut Pb sur boucle while
    Bonjour,

    J'ai un soucis que je n'arrive pas à comprendre.
    Je dialogue avec une BdD sous PhpMyadmin en local.
    J'ai une table nommée solutions_mainteneur avec plusieurs champs, notamment un id_ios.

    L'idée est que l'utilisateur puisse ajouter une solution s'il le désire, solution correspondante au défaut de numéro id_ios.
    Ainsi dans le temps, la table va se remplir et il y aura plusieurs solutions ajoutées pour chaque ios(défaut).

    Ainsi dans mon code, pour afficher ces solutions, j'ai la requete suivante dans un premier temps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $requete = $bdd->prepare('SELECT * FROM solutions_mainteneur WHERE id_ios=?');
    $tmp = $_SESSION['curr_ios']+1;
    $requete->execute(array($tmp)) or
    die(print_r($requete->errorInfo()));
    $donnees = $requete->fetch();
    Ensuite je voulais les mettre en forme grâce à un tableau en php
    <table>
    Mon problème est le suivant. Pour le moment j'ai rentré manuellement sous PhPMyAdmin une solution pour un défaut donné.

    Ainsi lorsque j'effectue le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <tr>
    <td><?php echo $donnees['date_ajout']; ?></td>
    <td><?php echo $donnees['Nom_mainteneur']; ?></td>
    <td><?php echo $donnees['mail']; ?></td>
    <td><?php echo $donnees['prob_descriptif']; ?></td>
    <td><?php echo $donnees['Solution_trouvee']; ?></td>
    </tr>
    Cela fonctionne bien est l'affichage se fait.

    Seulement dans le cas ou il y aurait plusieurs solutions (ce qui le sera forcément) j'ai codé :

    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
     
    if ($donnees == true) 
     
    {
     
    while ($donnees = $requete->fetch())
    {					
    ?>
    <tr>
    <td><?php echo $donnees['date_ajout']; ?></td>
    <td><?php echo $donnees['Nom_mainteneur']; ?></td>
    <td><?php echo $donnees['mail']; ?></td>
    <td><?php echo $donnees['prob_descriptif']; ?></td>
    <td><?php echo $donnees['Solution_trouvee']; ?></td>
    </tr>											
     
    <?php
    }
    ?>
    Et là dans ce cas je n'ai rien qui s'affiche, même plus la solution déjà rentrée...

    Avez-vous une idée ?? C'est pas la bonne méthode une boucle while ?

    Désolé pour la longueur du post, j'espère avoir été clair.

  2. #2
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Salut,

    Pour moi, le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($donnees == true) 
     
    {
    est de trop.

    Si tu n'as pas de résultat, ne t'en fais pas, ça ne rentrera pas dans ta boucle.
    Il faut jsute t'assurer que ta requête est bon, ce qui semble être le cas
    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 153
    Points
    153
    Par défaut
    En fait j'utilise un if ici parce que dans le cas où il n'y a aucune solution de rentrée pour le défaut, j'affiche "pas de solutions"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    else
    {
    ?>
    <td colspan="5"> Aucunes solutions dans la base pour cet IOS </td>
     
    </table>						
    </p>
     
    <?php
    }
    Tu veux dire que le if sans le while amène pas de problème mais que le while dans ce if là amène un bug ?

  4. #4
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Citation Envoyé par Tanoak_LaCapuche Voir le message
    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
     
     
    while ($donnees = $requete->fetch())
    {					
    ?>
    <tr>
    <td><?php echo $donnees['date_ajout']; ?></td>
    <td><?php echo $donnees['Nom_mainteneur']; ?></td>
    <td><?php echo $donnees['mail']; ?></td>
    <td><?php echo $donnees['prob_descriptif']; ?></td>
    <td><?php echo $donnees['Solution_trouvee']; ?></td>
    </tr>											
     
    <?php
    }
    ?>
    Pourquoi tu fermes ta balise php après while et tu la rouvres après ton tableau?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(empty($donnees)){
    echo "pas de solution";
    }
    else{
    ...
    }
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 153
    Points
    153
    Par défaut
    Bonne question.

    Pour pas mélanger le php et l'html ?

  6. #6
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Citation Envoyé par Tanoak_LaCapuche Voir le message
    En fait j'utilise un if ici parce que dans le cas où il n'y a aucune solution de rentrée pour le défaut, j'affiche "pas de solutions"
    Dans ce cas, tu as la fonction rowCount();

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if($requete->rowCount() > 0)
    {
    while(...)
    {
    ...
    }
    }
    else
    {
    echo 'Pas de solution';
    }

    Citation Envoyé par Tanoak_LaCapuche Voir le message
    Tu veux dire que le if sans le while amène pas de problème mais que le while dans ce if là amène un bug ?
    Le if $donnee == true amène un problème dans le sens ou $donnee n'est pas initialisé avant. Le $donnee est initialisé dans la boucle avec ton $donnee = $requete->fetch()
    Avant ça, il n'a aucune valeur.
    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  7. #7
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 153
    Points
    153
    Par défaut
    Parfait ça marche nickel !

    Merci beaucoup.

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

Discussions similaires

  1. [MySQL] Problème sur boucle WHILE
    Par t671 dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 19/09/2012, 22h37
  2. erreur 91 sur boucle WHILE WEND avec recordset
    Par forzaxelah dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/02/2012, 21h54
  3. Condition sur boucle While
    Par Florian V dans le forum LabVIEW
    Réponses: 8
    Dernier message: 26/02/2010, 18h18
  4. [MySQL] Problème sur Boucle While après un LEFT JOIN
    Par matperino dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 28/05/2007, 17h43
  5. Réponses: 3
    Dernier message: 11/06/2006, 12h09

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