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 :

Comment faire un tableau triable par un utilisateur ?


Sujet :

PHP & Base de données

  1. #1
    Membre averti Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Points : 305
    Points
    305
    Par défaut Comment faire un tableau triable par un utilisateur ?
    Hi all !

    Je voudrais savoir quels étaient les moyens pour qu'un utilisateur puisse trié un tableau à son souhait ?

    J'ai pensé à la solution où je crée une requête MySQL avec un Order By, mais je dispose de 9 colonne soit 18 requêtes et 18 réaffichage du tableau en hml, ça fait un peu lourd sachant que g 2 tableau du mm nombre de colonne .

    Où est ce faisable de créer que les 9 requête et d'afficher le tableau selon le résultat de la requête mais sans avoir à faire 18 condition et affichage de tableau ?

    Merci pour vos réponses

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2006
    Messages : 124
    Points : 130
    Points
    130
    Par défaut
    si j'ai bien compris ton pb, ça doit être faisable avec une requête dynamique

    tu construit donc 1 requête en fonction des critères choisis par l'utilisateur

  3. #3
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Salut,

    Une solution comme une autre.

    Tu passes en parametre le nom du champs au niveau du formulaire. Lorsque tu executes ta requete il sera primordial de vérifier que ce champs existe bien.
    Pour faire cela tu peux utiliser la requetes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SHOW COLUMNS FROM table LIKE 'unchamps'
    Si tu le trouves, tu peux le mettre dans le order by, autrement tu n'aura qu'à mettre un champs par défaut.

    bbye

  4. #4
    Membre actif Avatar de frol
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 288
    Points : 296
    Points
    296
    Par défaut
    moi j'ai fais plus simple enfin peu long a la création mais ça va

    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
    $limite = $_GET['limite']; 
        if (!isset($limite)) $limite = 0;
        if (isset($_GET['titre'])) $_POST['titre']=$_GET['titre'];
        if (isset($_GET['type'])) $_POST['type']=$_GET['type'];
        if (isset($_GET['value'])) $_POST['value']=$_GET['value'];
        if (isset($_GET['order'])) $_POST['order']=$_GET['order'];    
        if (!$_POST['order']) $_POST['order']=$_POST['type'];        
        if (isset($_GET['desc'])) $_POST['desc']=$_GET['desc'];     
        if ($_GET['fl']) $var_sql = $_POST['type']." like '".$_GET['fl']."%' and ";
     
     
        function desc($POSTtype,$POSTdesc,$type){
            if($POSTtype == $type) {
                if($POSTdesc == 'desc') return '';
                elseif($POSTdesc != 'desc') return 'desc';
            }
        }
    //    on fait les liens
        $lien_titre = "index.php?action=104&fl=".$_GET['fl']."&type=".$_POST[type]."&value=".$_POST[value]."&order=titre&desc=".desc($_POST[order],$_POST[desc],'titre');
        $lien_artiste = "index.php?action=104&fl=".$_GET['fl']."&type=".$_POST[type]."&value=".$_POST[value]."&order=artiste&desc=".desc($_POST[order],$_POST[desc],'artiste');        
        $lien_style = "index.php?action=104&fl=".$_GET['fl']."&type=".$_POST[type]."&value=".$_POST[value]."&order=style&desc=".desc($_POST[order],$_POST[desc],'style');        
        $lien_type = "index.php?action=104&fl=".$_GET['fl']."&type=".$_POST[type]."&value=".$_POST[value]."&order=type&desc=".desc($_POST[order],$_POST[desc],'type');
        $arrow[$_POST['order']] ="<img src=\"images/ordre".$_POST['desc'].".png\" />";
     
     
        $mess = new req();
        $mess->connect($host_bdd,$login_bdd,$mdp_bdd,$database_bdd);
        $mess->query_lim("tablatures WHERE $var_sql ".$_POST['type']." like '%".$_POST['value']."%' order by ".$_POST['order']." ".$_POST['desc'],$limite,20);
        echo "<table width='500px'><tr><td><a href=\"$lien_titre\">".$arrow['titre']."Titre</a></td><td><a href=\"$lien_artiste\">".$arrow['artiste']."Artiste</a></td><td><a href=\"$lien_style\">".$arrow['style']."Style</a></td><td><a href=\"$lien_type\">".$arrow['type']."Type</a></td></tr>";
        while( $result = $mess->fetch_array() ){    
            echo "<tr><td><a href=\"index.php?action=100&id=".$result['id']."\">".$result['titre']."</a></td><td><a href=\"index.php?action=104&type=artiste&value=".$result['artiste']."\">".$result['artiste']."</a></td><td><a href=\"index.php?action=104&type=style&value=".$result['style']."\">".$result['style']."</a></td><td><a href=\"index.php?action=104&type=type&value=".$result['type']."\">".$result['type']."</a></td></tr>";
            $result_min=1;
        }
        echo '</tr></table>';
        if (!$result_min) echo"Pas de r&eacute;sultat";
        echo "<br>";
        $mess->liens("index.php?action=104&&type=$type&&value=$value&&");
    et ça donne ceci

  5. #5
    Membre averti Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Points : 305
    Points
    305
    Par défaut
    ok je testerais, merci

    Je met pas de résolu car je reviendrais surement

  6. #6
    Membre averti Avatar de Joe Le Mort
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 392
    Points : 388
    Points
    388
    Par défaut
    j'ai qqchose de bcp plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	$q = "SELECT * FROM fourniture ";
    	if (isset($_GET['sort'])){		
    		$q .= " ORDER BY ".$_GET['sort']." ".$_GET['order']."";
    	}
    	if ($_GET['order']== "desc"){
    		$order = "ASC";
    	}else{
    	$order = "desc";
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a href="stat_produit.php
    ?user=<?php echo $produit;?>&sort=designation&order=<?php echo $order;?>">Designation </a>
    sort=designation (designation est le champs dans la table)


  7. #7
    Membre averti Avatar de Joe Le Mort
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 392
    Points : 388
    Points
    388
    Par défaut
    Citation Envoyé par mLk92
    ok je testerais, merci

    Je met pas de résolu car je reviendrais surement
    évite de prendre l'usine a gaz de frol, que je ne conseille pas, pour des raisons de sécurité

  8. #8
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Citation Envoyé par Joe Le Mort
    évite de prendre l'usine a gaz de frol, que je ne conseille pas, pour des raisons de sécurité
    Le problème c'est que ton script n'est pas beaucoup mieu.... Il faudrait prendre le temps de vérifier que le champs désiré existe bien dans la table aupravant, comme je l'explique au dessus.

    Enfin moi je dit sa, je dit rien..

  9. #9
    Membre averti Avatar de Joe Le Mort
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 392
    Points : 388
    Points
    388
    Par défaut
    Citation Envoyé par ePoX
    Le problème c'est que ton script n'est pas beaucoup mieu.... Il faudrait prendre le temps de vérifier que le champs désiré existe bien dans la table aupravant, comme je l'explique au dessus.
    ouais forcément, c'est un code vite fait...
    Mais pour l'ex, c'est simple

  10. #10
    Membre actif Avatar de frol
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 288
    Points : 296
    Points
    296
    Par défaut
    Ben question sécurité je vois pas trop ce qu'on pourrait daire d'autre
    Si on modifie les variables Get on peut juste modifier l'ordre du tableau ou avoir une belle erreur

    Bon j'avoue il est pas très beau ce code mais bon c'est parce qu'il doit pouvoir accepté d'autre choses que le tri du tableau

Discussions similaires

  1. Comment faire un tableau tout simple dans un état
    Par robertetgorgette dans le forum Access
    Réponses: 1
    Dernier message: 25/07/2006, 15h20
  2. Comment faire passer un menu par dessus une autre frame
    Par barthelv dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/11/2005, 11h03
  3. VB6: Comment faire un tableau de tableaux ?
    Par AsmCode dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 10/11/2005, 22h57
  4. [CR] comment faire un tableau croisé
    Par yoyothebest dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 29/08/2004, 18h32
  5. Comment faire générer du rtf par mon application?
    Par nickylarson dans le forum C++Builder
    Réponses: 3
    Dernier message: 13/08/2003, 09h35

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