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 :

Comment afficher une fois la valeur extraite d'une BD


Sujet :

Langage PHP

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Bonjour,

    J'espere etre dans le bon forum car il y a aussi du MySQL, dans ma question.

    Je veux extraire toutes les réponses d'un utilisateur a une annonce.
    Je souhaiterais que le titre de l'annonce soit affichée une fois et que toutes les réponses soient affichés en dessous.

    Mes réponses sont stockées dans une table et mes annonces dans une autre.

    Donc je parcours ma table de réponse et j'affiche toues les réponses.

    Ce code fonctionne mais l'annonce est affichée pour chaque réponse
    Code PHP : 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    //je parcours mes réponse
    // OU LA REPONSE APPARTIENT A l?UTILISATEUR AUTHENTIFIE
    $sql_replies = "
    SELECT * FROM tb_replies
    INNER JOIN tb_annonces ON tb_replies.tb_annonces_id_annonce=tb_annonces.id_annonce
     
    WHERE tb_replies.tb_users_id_users LIKE '".$_SESSION['user_id']."' AND tb_replies.fd_active LIKE 1 AND tb_annonces.fd_active LIKE 1";
    $query_replies = mysql_query($sql_replies)or die(mysql_error());
     
    $nb_replies = mysql_num_rows($query_replies);
    // S IL Y A DES REPONSE, JE CONTINUE
    if($nb_replies > 0){
    // ET JE "BOUCLE"
    while($data_replies = mysql_fetch_assoc($query_replies)){ 
    // J AFFICHE ICI LE TITRE DE L ANNONCE			
    // MAIS JE SOUHAITE QU IL SOIT AFFICHE UNE FOIS S IL Y A PLUSIEURS REPONSES
    // JE SUIS PEUT ETRE TROP FATIGUE MAIS JE N'ARRIVE PAS TROUVER COMME FAIRE POUR QUE CA S AFFICHE QU UNE FOIS. J AI POURTANT REGARDER TOUTES LE FONCTION DIFFERENTE DES array
    //http://www.php.net/manual/fr/function.array-keys.php
    echo '<a href="index.php?annonce='.$data_replies['tb_annonces_id_annonce'].'" class="pColor">'.$data_replies['fd_title'].'</a> ';
     
    // ICI J AFFICHE LES REPONSES
    echo '<div class="annonce_message bg-blanc">';
    							if ($data_replies['tb_users_id_users'] == $_SESSION['user_id']){
    								echo '<span style="float:right; margin-right:5px;">';
    								echo '<a href="'.$root.'iframe/delete_reply.iframe.php?id='.$data_replies['id_reply'].'" class="delete_reply" title="'.$langue->msg_add_replies_delete_reply.'" alt="'.$langue->msg_add_replies_delete_reply.'"><img src="'.$root.'img/icon_delete.gif" /></a>';
    								echo '</span>';
    							}
    							echo stripslashes($data_replies['fd_reply']);
     
     
    							echo '</div>';
    						}
     
    					}else{
    						echo '<div class="annonce_message bg-blanc"><p>';
    						echo $langue->msg_add_replies_reply_no_replies;
    						echo '</p></div>';
    					}
     
    				?>

    J'ai aussi essayé avec DISTINTC et GROUP BY dans ma requetes MySQL

    je post ce message ici, car je pense pouvoir résoudre mon probleme avec un fonction array
    http://www.php.net/manual/fr/function.array-keys.php
    non?

    Milles mercis pour vos idees

    En fait, ne devrais pas plus me pencher vers
    LEFT JOIN ou RIGHT JOIN?

    Es-ce qu'un modérateur pourrait déplacer ce message dans :
    http://www.developpez.net/forums/f62...gbd/php-mysql/

    J'ai pourtant essayé RIGHT JOIN, mais sans succes
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il serait plus logique de requeter d'un côté le titre et d'une autres les éléments multiples car la tu vas recuperes x fois le titre pour ne l'utiliser qu'une fois.

    Sinon un truc tout simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $affiche_titre = TRUE;
    while($data_replies = mysql_fetch_assoc($query_replies)){
        if ($affiche_titre) { echo $data_replies['titre']; $affiche_titre = FALSE; }
        ......
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Salut Sabotage.

    Merci pour ta réponse. Oui je sais que sur ce coup, la logique me manque :o)

    Dans ta solution, je ne pense pas que ca va jouer, car il ne vas plus m'afficher les tritres des annonces suivantes, non?

    Pourrais-tu déplacer mon post? dans
    http://www.developpez.net/forums/f62...gbd/php-mysql/
    Je n'aurais pas du le mettre là.

    Milles mercis
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu ne parlais d'afficher qu'une annonce mais ce ne sont pas les solutions qui manquent :
    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
    $sql_replies = "
    SELECT * FROM tb_replies
    INNER JOIN tb_annonces ON tb_replies.tb_annonces_id_annonce=tb_annonces.id_annonce
    WHERE tb_replies.tb_users_id_users LIKE '".$_SESSION['user_id']."' AND tb_replies.fd_active LIKE 1 AND tb_annonces.fd_active LIKE 1
    ORDER BY fd_title";
    $query_replies = mysql_query($sql_replies)or die(mysql_error());
     
    $current_title = "";
    while($data_replies = mysql_fetch_assoc($query_replies)){
        if ($data_replies['fd_title'] != $current_title) {
               echo '<h1>' . $data_replies['fd_title'] . '</h1>';
               $current_title = $data_replies['fd_title'];
        }
    ....
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Oui excuse moi si j'ai pas été assez précis.

    Arch, je crois que je vais aller me coucher. Ca marche et comme je vois comme tu l'as fait, ca me semble tellement simple.

    Tout grand merci pour "tes lumières" et bonne nuit!!
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/02/2008, 21h12
  2. [MySQL] Afficher qu une fois la valeur trouvee dans un base
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 25/09/2006, 14h16
  3. Comment effacer toutes les variables de sessions en une fois
    Par dessinateurttuyen dans le forum Langage
    Réponses: 4
    Dernier message: 03/08/2006, 09h20
  4. Réponses: 4
    Dernier message: 16/06/2006, 03h29
  5. Réponses: 23
    Dernier message: 07/02/2006, 17h55

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