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 :

Problème boucle if else [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de urbalk
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 135
    Par défaut Problème boucle if else
    Bonjour,

    je rencontre quelques pb pour faire fonctionner une boucle if else.

    dans un 'forum' les posteurs peuvent laisser une image ou non.
    si ils laissent une image, un champ dans une table est alimenter de cette manniere: .../img/monimage.jpg si ils ne rentre pas d'image le champs reste vide.

    lors de l'affichage des messages, je voudrais savoir si le champs est alimenter ou non.
    1/ le champs est alimenté j'affiche mon image.
    2/ le champs est vide, je souhaite afficher une image par défaut.
    ma boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $affiche = mysql_query('SELECT lienimage FROM message '); //je regarde si mon champ est vide ou plein
    if (($affiche['lienimage']) == 0)// il est plein j'affiche mon image enregistrer par le posteur
    {echo '<img src="'.$data['lienimage'].'" />';}//lien vers l image du posteur
    else
    {echo '<img src="affiches/mask.jpg" />';}// il est vide !!! c'est la que ca ne marche pas
    ?>
    mais ma boucle ne fonctionne pas si je modifie la valeur 1 ou 0 elle m'affiche ou l'image postée ou l'image mask !!!

    merci.

  2. #2
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par défaut
    il faut que tu parcours les résultats de ta requete non??

    mysql_query utilisé seul ne change rien pour l'affichage de donnés

    il faut faire un mysql_fetch_array($affiche) ou si 1 seul résultats possible faire un mysql_fetch_assoc($affiche);

  3. #3
    Membre confirmé Avatar de urbalk
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 135
    Par défaut
    Bonjour,

    j'ai donc modifier ma requete de la facon suivante mais je ne comprends pas et n'arrive pas a faire ce que je veux.
    pour info:
    les champs ou le posteur a inseré une image ont pour forme .../img/monimage.jpg
    les autre je leurs aient rentré la valeur 1

    ma boucle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $affiche = mysql_fetch_array('SELECT lienimage FROM message ');// je parcours ma colonne lienimage de ma table message OK
    if (($affiche['lienimage']) == 1)// mon champs a pour valeur 1
    {echo '<img src="affiches/mask.jpg" />';}// si mon champ a pour valeur 1 j'affiche mon image par defaut.
    else // autrement 
    {echo '<img src="'.$data['lienimage'].'" />';}// j'affiche l'image insérée par le posteur
    ?>
    je vois pas et comprend pas mon erreur. je suis aller sur les liens que tu m'a donner, ils m'ont permis de solutionner un autre petit pb mais pas celui-la !
    merci de ton aide.

  4. #4
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par défaut
    bonjour
    tu as une petite erreur avec l'utilisation du mysql_fetch_array
    lui il veut avoir un fichier int de résultat, ce fichier est obtenu de la requete
    donc, en reprennant ton code un peu
    Le mysql_fetch_array est utilisé si ta requete retourne plus d'un enregistrement, il te faut donc parcourir l'array de retour avec un while
    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
    <?php
    $req = mysql_query('SELECT lienimage FROM message ')
    if(mysql_num_rows($req) > 0){
      //La requete retourne au moins 1 résultat
      // je parcours ma colonne lienimage de ma table message OK
      while($affiche = mysql_fetch_array($req)){
         if ($affiche['lienimage'] == 1)// mon champs a pour valeur 1
          {echo '<img src="affiches/mask.jpg" />';}// si mon champ a pour valeur 1 j'affiche mon image par defaut.
         else // autrement 
          {echo '<img src="'.$affiche ['lienimage'].'" />';}// j'affiche l'image insérée par le posteur
       } //Ferme le while
    }
    else{
     echo ' Il n\'y a pas de retour de la bdd';
    }
    ?>
    Par contre, si ta requete te retourne 1 seul enregistrement, c'est bien aussi d'utiliser myslq_fetch_assoc (Sauf que d'après ta requete ca doit en retourner plusieurs

    exemple d'utilisation avec mysql_fetch_assoc
    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
    <?php
    $req = mysql_query('SELECT lienimage FROM message ')
    if(mysql_num_rows($req) > 0){
      //La requete retourne au moins 1 résultat
      // je parcours ma colonne lienimage de ma table message OK
      $affiche = mysql_fetch_assoc($req);
      if ($affiche['lienimage'] == 1)// mon champs a pour valeur 1
          {echo '<img src="affiches/mask.jpg" />';}// si mon champ a pour valeur 1 j'affiche mon image par defaut.
         else // autrement 
          {echo '<img src="'.$affiche['lienimage'].'" />';}// j'affiche l'image insérée par le posteur
    }
    else{
     echo ' Il n\'y a pas de retour de la bdd';
    }
    ?>
    Dans le code que je t'ai laissé plus haut, c'était avec un peu plus de validation
    ton code pourrais fonctionner, mais tu ne parcourerais pas l'array de retour, tu aurait seulement 1 valeur de retour, soit la premiere
    aussi, tu avais une petite erruer dans ton else...tu utilise la variable $data alors que plus haut ton résultat le utilieses $affiche

  5. #5
    Membre confirmé Avatar de urbalk
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 135
    Par défaut
    bon, on avance !

    ta requete me renvoie bien ce qu 'il y a dans les champs.
    par contre, mon script ce comporte comme un 'forum' et avec cette boucle, tout m'est retourner dans un seul post (les images sont les unes à la suite des autres et non dans leur post correspondant) les autres ne s'affichent pas ...

    oups
    merci de ton aide.

  6. #6
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par défaut
    Citation Envoyé par urbalk
    tout m'est retourner dans un seul post (les images sont les unes à la suite des autres et non dans leur post correspondant) les autres ne s'affichent pas ...
    Oui et c'est normal car on lit l'array dans le while et fait afficher le tout
    Si tu veux une image par post, ben en fait l'image associé, dans ta table tu as une clé étrangère? dans le sens, tu peux savoir l'image appartient a quel post?
    si c'est le cas, spécifie ta requete avec la clause where sur cette clé
    à ce moment tu poura utiliser mysql_fetch_assoc car tu aura seulement 1 valeur de retour possible

    sinon, dans le while, tu peux monter l'affichage des post, à ce moment tu ne fais pas directement un echo de l'image, mais bien un echo du code du post et de l'image qui est lié

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

Discussions similaires

  1. [Débutant] Problème boucle for
    Par toniooooo dans le forum Langage
    Réponses: 10
    Dernier message: 18/04/2006, 14h42
  2. Problèmes avec des else if
    Par Kr00pS dans le forum C
    Réponses: 2
    Dernier message: 15/04/2006, 11h04
  3. [XSL] problème boucle
    Par VolaiL dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/04/2006, 16h55
  4. Problème boucle while et evenement
    Par tse_tilky_moje_imja dans le forum Général Python
    Réponses: 2
    Dernier message: 30/03/2006, 18h11
  5. [FLASH 8] Problème Boucle For
    Par Begood dans le forum Flash
    Réponses: 6
    Dernier message: 21/03/2006, 11h36

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