bonjour à tous,

je viens de bricoler un petit tableau, qui n'est certes pas très design, mais fonctionne très bien.
Il récupère les infos sur une base de donnée puis me les affiches.
je souhaiterai savoir comment je peux faire pour qu'il me classe les infos mais au lieux qu'il parte de la colonne 1 il me classe la colonne 2. Pas forcement de manières dynamique, je clique, il change le classement. Si j'ai un paramètre à changer dans la pages, ça ne me dérange pas. Merci d'avance.

<?php
    session_start();
    require("auth.php");
if(Auth::isLogged()){
    }
else{
    header('Location:index.php');
    }
?>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    </head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>page privee</title>

    <body>
    page privee
<?php

// information pour la connection à la DB
$host = ' ******';
$user = ' *******';
$pass = ' *******';
$db = ' ***********';
// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$select = 'SELECT username,user_email,user_type FROM phpbb_users';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
$select2 = 'SELECT user_id,group_id FROM phpbb_user_group';
$result2 = mysql_query($select2,$link) or die ('Erreur : '.mysql_error() );
$total2 = mysql_num_rows($result2);
// si on a récupéré un résultat on l'affiche.
if($total) {
    // debut du tableau
        echo '<table bgcolor="#FFFFFF">'."\n";
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes
        echo '<tr>';
        echo '<td bgcolor="#669999"><b><u>ID</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>mail</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>type</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>id groupe</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>groupe</u></b></td>';
        echo '</tr>'."\n";
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
    while(($row = mysql_fetch_array($result))&&($row2 = mysql_fetch_array($result2))) {
        if(($row2"group_id"])!=6){
        echo '<tr>';
        echo '<td bgcolor="#CCCCCC">'.$row"username"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row"user_email"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row"user_type"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row2"user_id"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row2"group_id"].'</td>';
        echo '</tr>'."\n";
        }
        else{
        }
    }
    echo '</table>'."\n";

    // fin du tableau.
}

else echo 'Pas d\'enregistrements dans cette table...';
// on libère le résultat
mysql_free_result($result);

?>

    <a href="logout.php">Se déconnecter</a>
    </body>
</html>

9 réponses


erfou
Réponse acceptée

en php:
<a href="?col=name&order=ASC">name</a>
print_r($_GET)

ou sinon il existe des scripts javascript qui t'eviteraient le rechargement de la page

NB: je t'invite a modifier les login et mdp de ta bdd, maintenant qu'on les connait

eric

salut,

tu peux rajouter une clause ORDER BY dans ta requete.

sinon, j'ai pas coprisle but des deux requetes $select et $select2 . est ce que requete avec jointure ne repondrait pas a ton besoin?

eric

flo3376
Auteur

c'est un infâme bricolage, car je joue sur 2 tables de ma base, est comme mes connaissance en php sont proche du zéro absolue j'ai essayer ça, et ça a marché.

Requete avec jointure, propablement faut que je me documente dessus.

Pour ton ORDER BY peut tu me guider un peu?

Merci d'avance

Tu fais un ORDER BY ASC OU DESC , cela classera ton tableau par valeur descendante ou ascendante (pour faire mieux tu peux integrer ces valeurs dans une variable $classement par exemple qui contiendrait par un petit if et else ces différentes possibilités ^^. Voilà si ça peut te guider

flo3376
Auteur

un exemple de commande m'aiderai ou s'il y avait un tuto

je te conseil de voir ici ORDER BY lis la partie ORDER BY et comme indiqué par Erfou utilises les jointures il y'a des tutos sur grafikart

exemple : SELECT id,name FROM table ORDER BY name ASC;

eric

flo3376
Auteur

merci des infos
une fois appliqué ça me donne ça, je pense que l'on peut optimiser mais bon, c'est pas ma priorité

<?php
    session_start();
    require("auth.php");
if(Auth::isLogged()){
    }
else{
    header('Location:index.php');
    }
?>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    </head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>page privee</title>

    <body>
    page privee
<?php

// information pour la connection à la DB
$host = ' ******';
$user = ' *******';
$pass = ' *******';
$db = ' *********';
// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$select = 'SELECT phpbb_users.user_id,username,user_email,user_type,user_posts,user_lastpage,phpbb_user_group.user_id,phpbb_user_group.group_id
            FROM phpbb_users
            LEFT JOIN phpbb_user_group ON phpbb_users.user_id=phpbb_user_group.user_id
            ORDER BY user_posts ASC';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);

// si on a récupéré un résultat on l'affiche.
if($total) {
    // debut du tableau
        echo '<table bgcolor="#FFFFFF">'."\n";
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes
        echo '<tr>';
        echo '<td bgcolor="#669999"><b><u>ID</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Pseudo</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Mail</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>nombre de post</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>derniére action</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>numéro dans groupe</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>indicatif des groupes</u></b></td>';
        echo '</tr>'."\n";
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
    while(($row = mysql_fetch_array($result))) {
        if(($row"user_id"])>53){
            echo '<tr>';
            if(($row"user_posts"])==0){
                echo '<td bgcolor="#EE5353">'.$row"user_id"].'</td>';
                echo '<td bgcolor="#EE5353">'.$row"username"].'</td>';
                echo '<td bgcolor="#EE5353">'.$row"user_email"].'</td>';
                echo '<td bgcolor="#EE5353">'.$row"user_posts"].'</td>';
                echo '<td bgcolor="#EE5353">'.$row"user_lastpage"].'</td>';
                echo '<td bgcolor="#EE5353">'.$row"user_id"].'</td>';
                echo '<td bgcolor="#EE5353">'.$row"group_id"].'</td>';
                }
            else if(($row"user_posts"])<5){
                echo '<td bgcolor="#E7A83C">'.$row"user_id"].'</td>';
                echo '<td bgcolor="#E7A83C">'.$row"username"].'</td>';
                echo '<td bgcolor="#E7A83C">'.$row"user_email"].'</td>';
                echo '<td bgcolor="#E7A83C">'.$row"user_posts"].'</td>';
                echo '<td bgcolor="#E7A83C">'.$row"user_lastpage"].'</td>';
                echo '<td bgcolor="#E7A83C">'.$row"user_id"].'</td>';
                echo '<td bgcolor="#E7A83C">'.$row"group_id"].'</td>';
                }
            else if(($row"user_posts"])>59){
                echo '<td bgcolor="#6FF15B">'.$row"user_id"].'</td>';
                echo '<td bgcolor="#6FF15B">'.$row"username"].'</td>';
                echo '<td bgcolor="#6FF15B">'.$row"user_email"].'</td>';
                echo '<td bgcolor="#6FF15B">'.$row"user_posts"].'</td>';
                echo '<td bgcolor="#6FF15B">'.$row"user_lastpage"].'</td>';
                echo '<td bgcolor="#6FF15B">'.$row"user_id"].'</td>';
                echo '<td bgcolor="#6FF15B">'.$row"group_id"].'</td>';
                }
            else{
                echo '<td bgcolor="#CCCCCC">'.$row"user_id"].'</td>';
                echo '<td bgcolor="#CCCCCC">'.$row"username"].'</td>';
                echo '<td bgcolor="#CCCCCC">'.$row"user_email"].'</td>';
                echo '<td bgcolor="#CCCCCC">'.$row"user_posts"].'</td>';
                echo '<td bgcolor="#CCCCCC">'.$row"user_lastpage"].'</td>';
                echo '<td bgcolor="#CCCCCC">'.$row"user_id"].'</td>';
                echo '<td bgcolor="#CCCCCC">'.$row"group_id"].'</td>';
                }

        echo '</tr>'."\n";
        }
        else{
        }
    }
    echo '</table>'."\n";

    // fin du tableau.
}

else echo 'Pas d\'enregistrements dans cette table...';
// on libère le résultat
mysql_free_result($result);

?>

    <a href="logout.php">Se déconnecter</a>
    </body>
</html>

Et maintenant, je sais je pousse le bouchon loin est 'il possible que si je clique sur une colonne, ça me change mon type de classement, je pense qu'en titre de colonne je vais avoir un <a ref...., mais après je sèche.

un indice, un indice, un indice!!!!!

mais grand merci pour tous ça déjà

flo3376
Auteur

je me permet de déposer un petit mémo, ça pourrait peut être aider quelqu'un pour le left join, je sais c'est con mais....
<u>je veux réunir la table</u> phpbb_group <u> avec la table</u> phpbb_user_group <u>qui contient</u> group_id <u>car</u> phpbb_group <u>contien aussi</u> group_id
<u>LEFT JOIN</u> phpbb_groups <u>ON</u> phpbb_user_group <u>.</u> group_id <u>=</u> phpbb_groups <u>.</u> group_id