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 :

order by ? ou pas order by ?


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 36
    Points
    36
    Par défaut order by ? ou pas order by ?
    bonjour à 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
     
        <?
    	$sqllogin="SELECT login, numredacteur FROM redacteur WHERE 1";
    	$resultatlogin=mysql_query($sqllogin);
     
    		while($lignelogin=mysql_fetch_row($resultatlogin)) {
    				$art=$lignelogin[1]; 
    				$login=$lignelogin[0]; 
     
    	$sql="SELECT  count(numarticle) FROM article WHERE numredacteur='$art'";
    	$resultat=mysql_query($sql);
    	while($ligne=mysql_fetch_row($resultat)) 
    	{
    	$nbmaq=$ligne[0]; 
    	if ($nbmaq>0) echo "<a href=\"./index.php?page=pagearticle&nmembre=$login\">$login</a>&nbsp;".$nbmaq."<br>";
    	}
    	}
    	?>
    comment puis-je afficher les résultats en fonction de la variable $nbmaq ? l'ORDER BY prend en compte seulement les champs du SELECT ?

    merci pour votre réponse

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    un code sans commentaires, une question sans queue ni tête ...
    Difficile de répondre ...

    -> La clause ORDER BY

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,
    un code sans commentaires, une question sans queue ni tête ...
    Difficile de répondre ...

    -> La clause ORDER BY
    effectivement, j'aurais pu être plus précis ! le but est d'afficher les "top-posteurs" . j'ai rajouté des commentaires sur le code
    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
            <?
    	$sqllogin="SELECT login, numredacteur FROM redacteur WHERE 1"; // selection du membre
    	$resultatlogin=mysql_query($sqllogin);
     
    		while($lignelogin=mysql_fetch_row($resultatlogin)) {
    				$art=$lignelogin[1]; 
    				$login=$lignelogin[0]; 
     
    	$sql="SELECT  count(numarticle) FROM article WHERE numredacteur='$art'"; // comptage des article du membre
    	$resultat=mysql_query($sql);
    	while($ligne=mysql_fetch_row($resultat)) 
    	{
    	$nbmaq=$ligne[0]; 
    	if ($nbmaq>0)  // filtrage des membre sans articles
    	echo "<a href=\"./index.php?page=pagearticle&nmembre=$login\">$login</a>&nbsp;".$nbmaq."<br>"; // affichage de la liste des membres et de leur articles respectifs
    	}
    	}
    	?>

  4. #4
    Invité
    Invité(e)
    Par défaut
    1/ remplace <? par <?php

    2/ c'est quoi la question ? que veux-tu faire ?

    3/ "... WHERE 1"; // selection du membre" ??? c'est quoi, ca ???

    4/ les commentaires ne correspondent pas au code ...

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    1/ merci

    2/ je souhaite afficher une liste en commençant par le nbmaq le plus grand mais nbmaq n'est pas un champ du select mais une variable

    3/ je m'exprime mal....c'est la liste des inscrits sur le site

  6. #6
    Invité
    Invité(e)
    Par défaut
    Comme je suis brave, je vais te ré-écrire le code au "propre" ...
    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
    <?php
    	// requete : tous les redacteurs
    	$login_sql = "SELECT login, numredacteur FROM redacteur;";
    	$login_resu = mysql_query($login_sql);
    	// pour chaque redacteur
    	while($login_row = mysql_fetch_row($login_resu)) {
    		$art = $login_row['numredacteur']; 
    		$login = $login_row['login']; 
    		// nombre d'articles de ce membre
    		$nbrart_sql = "SELECT count(numarticle) AS nbmaq FROM article WHERE numredacteur = '".$art."';"; 
    		$nbrart_resu = mysql_query($nbrart_sql);
    		$nbrart_row = mysql_fetch_row($nbrart_resu); 
    		$nbmaq = $nbrart_row['nbmaq'];
    		// afichage du lien si le redacteur a des articles
    		if ($nbmaq>0) {
    ?>		<a href="./index.php?page=pagearticle&nmembre=<?php echo $login; ?>"><?php echo $login; ?></a>
    		&nbsp;<?php echo $nbmaq; ?> article<?php echo ($nbmaq>1)? 's':''; ?><br />
    <?php
    		} // fin if
    	} // fin while
    ?>
    Dernière modification par Invité ; 13/08/2011 à 17h55.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    tu est plus que brave là...

  8. #8
    Invité
    Invité(e)
    Par défaut
    Le code est plus "propre", mais ne répond pas à la question
    Citation Envoyé par spokito Voir le message
    afficher une liste en commençant par le nbmaq le plus grand
    Ce n'est pas si simple ! ...

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Le code est plus "propre", mais ne répond pas à la question

    Ce n'est pas si simple ! ...
    ben moi je tellement nul que je croyais que c'était super facile
    ton code n'affiche aucun resultat, doit y avoir un bug mais je vais rectifier, je comprends comment il faut que je l'organise

  10. #10
    Invité
    Invité(e)
    Par défaut
    A tester ...
    - pour pouvoir afficher par ordre croissant des nbmaq :
    - on crée un array $array_classt, qu'on ré-organisera ensuite.
    - element de l'array : login => nbmaq (login doit etre UNIQUE pour chaque membre)
    - on réoganise par ordre DEcroissant avec arsort()
    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
    30
    31
    32
    33
    34
    35
    <?php
    	// requete : tous les redacteurs
    	$login_sql = "SELECT login, numredacteur FROM redacteur;";
    	$login_resu = mysql_query($login_sql);
    	// pour chaque redacteur
    	while($login_row = mysql_fetch_row($login_resu)) {
    		$art = $login_row['numredacteur']; 
    		$login = $login_row['login']; 
    		// nombre d'articles de ce membre
    		$nbrart_sql = "SELECT count(numarticle) AS nbmaq FROM article WHERE numredacteur = '".$art."';"; 
    		$nbrart_resu = mysql_query($nbrart_sql);
    		$nbrart_row = mysql_fetch_row($nbrart_resu); 
    		$nbmaq = $nbrart_row['nbmaq'];
    		// ------------------------
    		// pour pouvoir afficher par ordre croissant des nbmaq :
    		// on crée un array, qu'on ré-organisera ensuite.
    		// element de l'array : login => nbmaq (login doit etre UNIQUE pour chaque membre)
    		if ($nbmaq>0) {
    			$array_classt[$login] = $nbmaq;
    		} // fin if
    	} // fin while
    	// ------------------------
    	if($array_classt) { // si l'array existe (on a des resultats)
    		// ré-organisation de l'array en fonction du nbmaq DEcroissant :
    		arsort($array_classt);
    		// affichage par ordre DEcroissant du nombre d'articles
    		foreach($array_classt as $key => $val) {
    ?>
    		<span style="float:left; width:100px;">(<?php echo $val; ?> article<?php echo ($val>1)? 's':''; ?>)&nbsp;</span>
    		<a href="./index.php?page=pagearticle&nmembre=<?php echo $key; ?>"><?php echo $key; ?></a>
    		<br />
    <?php
    		} // fin foreach
    	} // fin if
    ?>
    Dernière modification par Invité ; 13/08/2011 à 19h24.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    merci, c'est super sympa .
    je te met le code d'erreur mais ne te sent pas obligé car ça m'a l'air un peu "prise de tete" ce truc là. je vais couper pour ce soir. je te souhaite une excellente soirée et te remercie beaucoup pour le temps passé

    Warning: arsort() expects parameter 1 to be array, null given in C:\xampplite\htdocs\test\posteurs.php on line 46

    Warning: Invalid argument supplied for foreach() in C:\xampplite\htdocs\test\posteurs.php on line 48

  12. #12
    Invité
    Invité(e)
    Par défaut
    L'erreur survient si l'array n'existe pas.

    ps : J'ai corrigé mon code ci-dessus.

  13. #13
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2008
    Messages : 106
    Points : 152
    Points
    152
    Par défaut
    C'est surement possible de faire ça en une seule requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT redacteur.numredacteur, COUNT(numarticle) nbmaq
     FROM redacteur
     INNER JOIN article
        ON article.numredacteur = redacteur.numredacteur
     GROUP BY redacteur.numredacteur
     HAVING nbmaq > 0
    A corriger / adapter évidemment.

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    bonjour à tous,
    je vous avoue que je ne m'attendais pas quelque chose de si pointu mais dans le but de faire avancer la science on va essayer de trouver la solution. ça pourra servir à d'autres.

    Citation Envoyé par lucas74 Voir le message
    C'est surement possible de faire ça en une seule requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT redacteur.numredacteur, COUNT(numarticle) nbmaq
     FROM redacteur
     INNER JOIN article
        ON article.numredacteur = redacteur.numredacteur
     GROUP BY redacteur.numredacteur
     HAVING nbmaq > 0
    A corriger / adapter évidemment.
    merci lucas,
    ton code est bien plus simple que le mien et arrive au même résultat mais il ne classe pas les resultats pas nbmaq.

    j' ai fait une page avec les 3 codes en ligne. celui de jreaux62 est surement la voix à suivre mais pour l'instant il coince. je précise que l'hebergeur tourne avec php 5 . 2 . 5
    http://www.desavionsetdesmaquettes.c...?page=posteurs
    j'ai mis error_reporting(E_ALL); pour visualiser les bugs

  15. #15
    Invité
    Invité(e)
    Par défaut
    Bonjour, le "travailleur du dimanche" !

    As-tu testé ma solution ? (j'ai modifié le code ! voir ci-dessus)
    Vérifie que la 1ere requete renvoie bien des résultats

    Pour la requete de lucas74, essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT redacteur.numredacteur, COUNT(numarticle) nbmaq
     FROM redacteur
     INNER JOIN article
        ON article.numredacteur = redacteur.numredacteur
     GROUP BY redacteur.numredacteur
     HAVING nbmaq > 0
    ORDER BY nbmaq DESC
    Même si ma solution fonctionne, la sienne est plus "propre" et directe.
    Dernière modification par Invité ; 14/08/2011 à 08h31.

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    salut ben alors ...on va pas à la pêche le dimanche ?

    je en train de faire quelques essais mais avec ton code il n'affiche même pas les variable quand je lui demande. je suis en train de faire des tests.
    je te racaonte + tard

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    tiens c'est en ligne avec le order by dans le code de lucas...je vais me faire café ++

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    dans ton code, les variables $art et $login sont vides. j'ai mis un "echo" pour les tester dès leur génération et y'a rien dedans

  19. #19
    Invité
    Invité(e)
    Par défaut
    Peux-tu montrer TES codes ?

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    avec grand plaisir, c'est la page en ligne
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    <?php
    var_dump($_FILES);
    var_dump($_POST);
    error_reporting(E_ALL);
    ?>
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td valign="top" class="style3b">mon code<br /><br />
        <?php
    	$sqllogin="SELECT login, numredacteur FROM redacteur"; //liste des inscrits sur le site
    	$resultatlogin=mysql_query($sqllogin);
     
    		while($lignelogin=mysql_fetch_row($resultatlogin)) {
    				$art=$lignelogin[1];  // definition de la variable 
    				$login=$lignelogin[0]; 
     
    	$sql="SELECT  count(numarticle) FROM article WHERE numredacteur='$art'"; // comptage des article du membre
    	$resultat=mysql_query($sql);
    	while($ligne=mysql_fetch_row($resultat)) 
    	{
    	$nbmaq=$ligne[0]; 
    	if ($nbmaq>0)  // filtrage des membre sans articles
    	echo "<a href=\"./index.php?page=pagearticle&nmembre=$login\">$login</a>&nbsp;".$nbmaq."<br>"; // affichage de la liste des membres et de leur articles respectifs
    	}
    	}
    	?>
     
       </td>
        <td valign="top" class="style3b">code lucas74<br /><br />
     
         <?php
    	$sqllogin=" SELECT redacteur.numredacteur, login, COUNT(numarticle) nbmaq
     	FROM redacteur
     	INNER JOIN article
        ON article.numredacteur = redacteur.numredacteur
     	GROUP BY redacteur.numredacteur
     	HAVING nbmaq ORDER BY nbmaq DESC> 0"; //liste des inscrits sur le site
    	$resultatlogin=mysql_query($sqllogin);
     
    		while($lignelogin=mysql_fetch_row($resultatlogin)) {
    				$art=$lignelogin[2];  // definition de la variable 
    				$login=$lignelogin[1]; 
     
     
    	echo "<a href=\"./index.php?page=pagearticle&nmembre=$login\">$login</a>&nbsp;".$art."<br>"; // affichage de la liste des membres et de leur articles respectifs
    	}
     
    	?>
        </td>
        <td valign="top" class="style3b">code jreaux62<br /><br /><?php
    	// requete : tous les redacteurs
    	$login_sql = "SELECT login, numredacteur FROM redacteur;";
    	$login_resu = mysql_query($login_sql);
    	// pour chaque redacteur
    	while($login_row = mysql_fetch_row($login_resu)) {
    		$art = $login_row['numredacteur'];
    		$login = $login_row['login']; 
    		// nombre d'articles de ce membre
    		$nbrart_sql = "SELECT count(numarticle) AS nbmaq FROM article WHERE numredacteur = '".$art."';"; 
    		$nbrart_resu = mysql_query($nbrart_sql);
    		$nbrart_row = mysql_fetch_row($nbrart_resu); 
    		$nbmaq = $nbrart_row['nbmaq'];
    		// ------------------------
    		// pour pouvoir afficher par ordre croissant des nbmaq :
    		// on crée un array, qu'on ré-organisera ensuite.
    		// element de l'array : login => nbmaq (login doit etre UNIQUE pour chaque membre)
    		if ($nbmaq>0) {
    			$array_classt[$login] = $nbmaq; 
    		} // fin if
    	} // fin while
    	// ------------------------
    	if($array_classt) { // si l'array existe (on a des resultats)
    		// ré-organisation de l'array en fonction du nbmaq DEcroissant :
    		arsort($array_classt);
    		// affichage par ordre DEcroissant du nombre d'articles
    		foreach($array_classt as $key => $val) {
    ?>
    		<a href="./index.php?page=pagearticle&nmembre=<?php echo $key; ?>"><?php echo $key; ?></a>
    		&nbsp;(<?php echo $art; ?> article<?php echo ($art>1)? 's':''; ?>)<br />
    <?php
    		} // fin foreach 
    	} // fin if
    ?> </td>
      </tr>
      <br>
    </table>
    je dois m'absenter une petite demi-heure
    ++

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] ORDER BY fonctionne pas
    Par dominos dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 12/11/2013, 08h54
  2. order by field pas effectif
    Par socaw dans le forum SGBD
    Réponses: 1
    Dernier message: 07/10/2010, 15h27
  3. [ORDER BY] faire un order by pour 2 tables en relation
    Par Sayrus dans le forum Langage SQL
    Réponses: 8
    Dernier message: 15/06/2007, 15h52
  4. [ORDER BY] Passage du order by en paramètre du PS
    Par wperezrobles dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 30/06/2006, 12h18
  5. Z-Order (existe, existe pas) ?!?!
    Par Franck.H dans le forum SDL
    Réponses: 7
    Dernier message: 08/06/2006, 15h50

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