Forum d'entraide PHPFrance

Venez poser vos questions PHP, MySQL, HTML, CSS, Javascript, Gestion de serveurs à la communauté PHPfrance

Vers le contenu

» Masquer les résultats de la recherche

Recherche dynamique PHPfrance

  1. Effectuez une recherche, les résultats s'afficheront dynamiquement ici.

Simplifier mes requetes

Questions sur le SQL et les bases de données (MySQL, PostgreSQL, etc..).

Simplifier mes requetes

Messagepar sam12 03 Fév 2012, 04:40

Bonjour à tous,

J'ai un peu de mal avec une requête soit je suis mal réveillé soit mon coté brêle en sql ressurgit :D
Mon joli code de goret:

Syntaxe: [ Télécharger ] [ Masquer ]
Code php
<?php
                        $sql5 = "SELECT DISTINCT articles.membre, avatars.img_avatar FROM avatars, articles WHERE articles.membre = avatars.membre";
                        $req5 = mysql_query($sql5) or die('Erreur SQL !');
                                               
                        while($champs_bdd5 = mysql_fetch_assoc($req5))
                        {
                                $avatar= $champs_bdd5['img_avatar'];
                                $pseudo5= $champs_bdd5['membre'];
                                                                       
                                $sql6 = "SELECT membre FROM articles where membre='$pseudo5'";
                                $req6 = mysql_query($sql6) or die('Erreur SQL !');
                                $numart = mysql_num_rows($req6);
                ?>
                                                       
                        <li>
                            <img src="<?php echo $avatar; ?>" />
                            <p>
                                <?php echo $pseudo5; ?> a proposé <?php echo $numart; ?> articles
                            </p>
                            <div class="separateur"></div>
                        </li>
                       <?php
                 }
                                                        ?>


Le problème avec ce code est qu'il prend les membres dans l'ordre et je ne vois pas comment trier par le nombre d'articles dès la 1ere requête.

Désolé pour ce code :mrgreen:
Merci à tous ;)
Développeur web freelance.
Recherche une agence web sur Lyon (ou ses environs).
sam12
J'ai codé une fonction !
 
Messages: 167
Inscription: 17 Juil 2011, 03:29
Localisation: Lyon

Publicité

Re: Simplifier mes requetes

Messagepar ouckileou 03 Fév 2012, 07:16

Oui clairement quand tu as une requête dans une boucle généralement c'est mal, ça va exploser tes perfs et tu as un autre moyen de le faire. Donc si tu veux obtenir uneliste de membres et leur nombe de posts, jepense que tu peux faire ça:

SELECT articles.membre AS membre, avatars.img_avatar AS avatar, COUNT(*) as nb_posts
FROM articles
INNER JOIN avatars ON articles.membre = avatars.membre
GROUP BY articles.membres, avatars.img_avatar;


J'en ai profité pour sortir ta jointure du WHERE, qui ne devrait être utilisé que pour le filtrage. Les jointures INNER/OUTER JOIN sont plus lisibles, là ça passe car la requête est courte mais quand ça devient compliqué c'est appréciable.
ouckileou
Modérateur PHPfrance
Modérateur PHPfrance
 
Messages: 6299
Inscription: 21 Fév 2005, 01:46
Localisation: Washington, DC

Re: Simplifier mes requetes

Messagepar sam12 03 Fév 2012, 08:03

Merci pour ta réponse rapide ;)
Alors j'ai essayé mais ce n'est pas encore ça. Je pense que le problème se situe sur le group by:
avec articles.membre, avatars.img_avatar j'obtiens: 2,1,4
avec articles.membre: 2,1,4
et avec avatars.img_avatar: 4,1,2

N'y a-t-il pas moyen de faire un "order by nb_posts desc" ou quelque chose d’équivalent?
Développeur web freelance.
Recherche une agence web sur Lyon (ou ses environs).
sam12
J'ai codé une fonction !
 
Messages: 167
Inscription: 17 Juil 2011, 03:29
Localisation: Lyon

Re: Simplifier mes requetes

Messagepar ouckileou 03 Fév 2012, 17:26

sam12 a écrit:N'y a-t-il pas moyen de faire un "order by nb_posts desc" ou quelque chose d’équivalent?


Tu as essaye ?
ouckileou
Modérateur PHPfrance
Modérateur PHPfrance
 
Messages: 6299
Inscription: 21 Fév 2005, 01:46
Localisation: Washington, DC

Re: Simplifier mes requetes

Messagepar sam12 03 Fév 2012, 18:23

La boulette :oops:
J'avais une "Unknown column", j'ai du mettre nb_post à la place de nb_posts :roll:

Merci pour ton aide ;)
Développeur web freelance.
Recherche une agence web sur Lyon (ou ses environs).
sam12
J'ai codé une fonction !
 
Messages: 167
Inscription: 17 Juil 2011, 03:29
Localisation: Lyon


Retourner vers SQL & Bases de données

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

  • Publicité