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 :

Tri de tableau dynamique [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut Tri de tableau dynamique
    Bonjour,

    J'ai actuellement fini toutes les fonctionnalités propice à la gestion de la base de donnée depuis un site sauf que maintenant je dois faire un système de tri mais je ne sais pas comment m'y prendre, j'aimerais tout d'abord permettre un tri par ordre chronologique d'ajout d'utilisateur, puis ensuite trier par chaque select pour pouvoir trouver par exemple un utilisateur qui habite sur Paris, qui bosse dans le domaine du Commercial etc .. Pour permettre des recherches plus rapide, quelqu'un aurait une idée ?? Je vous met à disposition le code de ma page contenant le tableau :

    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
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    <?php
    session_start(); // AU TOUT DEBUT du fichier
    // ----------------------
    // Connexion BDD
    include('include_db.php');
    // ----------------------
    if (empty($_SESSION['Prenom'])) {
        header('Location: index.php');
    }
    // ----------------------
    // REQUETE : Construction
    $sql_requete = "SELECT * FROM BDD";
    $sql_params = array();
    // ----------------------
    // Traitement : Recherche ?
    if (!empty($_POST['Search'])) {
        $search = str_replace(' ', '', $_POST['Search']);
        if (is_numeric($search)) { // nombres
            $sql_requete .= " WHERE Telephone LIKE ? OR CodePostale LIKE ?";
            $sql_params = array('%'. $search . '%' , '%' . $search . '%');
        } else { // chaine
            $sql_requete .= " WHERE Prenom LIKE ? OR Nom LIKE ? OR Ville LIKE ? OR Email LIKE ? OR Adresse LIKE ?";
            $sql_params = array( '%' . $search . '%' , '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%');
        }
    }
    // ----------------------
    // Supprimer des utilisateurs
    if (!empty($_POST["delete"])) {
        $ids = implode(",", (array)$_POST["delete"]);
        $final = $db->prepare("DELETE  FROM `BDD` WHERE Id IN ($ids)");
        $final->execute();
    }
    // ----------------------
    // Requête : TOUT
    $requete_total = $db->prepare($sql_requete);
    $requete_total->execute($sql_params);
    $elem_total = $requete_total->rowCount();
    // ----------------------
    // Pagination
    $elem_page = 10;
    $page_total = ceil($elem_total/ $elem_page);
    if (!empty($_GET['page']) && $_GET['page'] > 0) {
        $pageCourante = intval($_GET['page']);
    } else {
        $pageCourante = 1;
    }
    if ($pageCourante>$page_total) {
        $pageCourante = $page_total;
    }
    $depart_page = ($pageCourante-1) * $elem_page;
    // ----------------------
    // Requête : pour cette page
    $sql_requete_page = $sql_requete . " LIMIT ".$depart_page." , ".$elem_page." ";
    $requete_page = $db->prepare($sql_requete_page);
    $requete_page->execute($sql_params);
    // ----------------------
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    	<title>PA - Liste des utilisateurs</title>
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
      <link rel="stylesheet" href="css/list.css">
      <meta name="viewport" content="width=device-width, initial-scale=1">
    	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
    	<link rel="icon" href="https://www.proactiveacademy.fr/wp-content/uploads/2018/01/cropped-favicon-32x32.png" sizes="32x32" />
      <link rel="stylesheet" href="//use.fontawesome.com/releases/v5.0.7/css/all.css">
    </head>
    <body class="d-flex flex-column justify-content-center">
      <div id="page-content">
        <nav class="navbar navbar-expand-md bg-dark navbar-dark">
          <a class="navbar-brand"><img src="http://www.proactiveacademy.fr/wp-content/uploads/2018/01/p-proactive-1.png" class="img-fluid" alt="Responsive image"></a>
          <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
            <span class="navbar-toggler-icon"></span>
          </button>
          <div class="collapse navbar-collapse" id="collapsibleNavbar">
            <ul class="navbar-nav mx-auto">
              <li class="nav-item">
                <a class="nav-link" href="add.php"><i class="fas fa-user-plus"></i></a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="add_csv.php"><i class="fas fa-users"></i></a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="logout.php"><i class="fas fa-sign-out-alt"></i></a>
              </li>
            </ul>
          </div>
                  <span class="navbar-text right-align" style="text-align: right;">Bienvenue, <?php echo $_SESSION['Prenom']?></span>
        </nav>
    	</header>
      <?php
      if (!empty($_POST["delete"])) {
          echo "<div class=\"alert alert-success \"><center><strong>Parfait !</strong><class=\"alert-link\"> Les ou les utilisateurs ont bien été supprimés</a>.</center></div>";
      }
        ?>
    	<main class="flex-fill justify-content-center align-items-center">
            <div class="main"></br></br>
                <div class="container-fluid"><br/><br/>
                  <div class="options">
                    <div class="form-group has-search">
                      <span class="fa fa-search form-control-feedback"></span>
                    <form method="post" action="list.php">
                    <div class="searchbar"><input type="text" class="form-control" value="Rechercher un utilisateur" name="Search" onclick="this.value='';"></div></form>
                    <form method="post" action="list.php">
                      <input type="submit" class="btn btn-danger" style="width: 130px;" value="Supprimer" name="supprimer">
                    </div>
                  </div>
                <div class="row h-1">
                    <div class="col-sm-13 mx-auto">
                  <table class="table table-striped table-responsive table-hover" id="myTable">
                  <thead class="thead-dark" style="width:10%;">
                    <tr>
                        <th style="width:2%;" id="Choix"></th>
                        <th id="Nom" class="selection" data-tri="1" data-type="num">NOM</th>
                        <th id="Prenom">PRÉNOM</th>
                        <th id="Sexe">SEXE</th>
                        <th id="Telephone" >TELEPHONE</th>
                        <th id="E-mail">EMAIL</th>
                        <th id="Code-Postale" scope="col">CODE POSTALE</th>
                        <th id="Adresse" scope="col">ADRESSE</th>
                        <th id="Ville" scope="col">VILLE</th>
                        <th id="QPV" scope="col">QPV</th>
                        <th id="DernierDiplome" scope="col">DERNIER DIPLÔME</th>
                        <th id="Formationvise" scope="col">FORMATION VISEE</th>
                        <th id="Specialitee" scope="col">SPECIALITEE</th>
                        <th id="Niveau" scope="col">NIVEAU DE FORMATION VISE</th>
                        <th id="Metier" scope="col">METIER</th>
                        <th id="Contratvise" scope="col">CONTRAT VISE</th>
                        <th id="Rythme" scope="col">RYTHME D'ALTERNANCE</th>
                        <th id="Structure" scope="col">STRUCTURE</th>
                        <th id="CV" style="width:6%" scope="col">UPLOAD</th>
                        <th style="width:7%;" id="Edit" scope="col">MODIFICATION</th>
                        <th id="CV" style="width:5%" scope="col">CV</th>
     
                    </tr>
                  </thead>
                  <tbody>
    <?php		while ($donne = $requete_page->fetch()) { ?>
    				<tr>
    					<td class="w-25"><input type="checkbox" name="delete[]" value="<?php echo $donne['Id']; ?>" /></td>
    					<td class="w-25"><?php echo $donne['Nom']; ?></td>
    					<td class="w-25"><?php echo $donne['Prenom']; ?></td>
    					<td><?php echo $donne['Sexe']; ?></td>
    					<td><?php echo $donne['Telephone']; ?></td>
    					<td><?php echo $donne['Email']; ?></td>
    					<td><?php echo $donne['CodePostale']; ?></td>
              <td><?php echo $donne['Adresse']; ?></td>
              <td><?php echo $donne['Ville']; ?></td>
    					<td><?php echo $donne['QPV']; ?></td>
              <td><?php echo $donne['Dernierdiplome']; ?></td>
              <td><?php echo $donne['Formationvise']; ?></td>
              <td><?php echo $donne['Specialitee']; ?></td>
              <td><?php echo $donne['Niveau']; ?></td>
              <td><?php echo $donne['Metier']; ?></td>
              <td><?php echo $donne['Contratvise']; ?></td>
              <td><?php echo $donne['Rythme']; ?></td>
              <td><?php echo $donne['Structure']; ?></td>
              <td class="w-25"><a class="btnEdit btn btn-primary btn-sm" href="upload.php?id=<?php echo $donne['Id']; ?>">Upload</a></td>
    					<td><a class="btnEdit btn btn-primary btn-sm" href="edit.php?id=<?php echo $donne['Id']; ?>">Editer</a></td>
              <td><a class="btnEdit btn btn-primary btn-sm" href="cv/<?php echo $donne['Id']; echo ".docx";?>">DL</a></td>
    				</tr>
            <?php		} ?>
                          </tbody>
                          </table>
                          &nbsp;
     
                    <ul class="pagination justify-content-center">
                      <li class="page-item">
            <?php		for ($i=1; $i<=$page_total; $i++) { ?>
            			 <li class="page-item"><a class="page-link" href="list.php?page=<?php echo $i; ?>"><?php echo "$i"; ?></a>
            <?php		}?>
            </li>
            </ul>
    			  </div>
          </div>
          </div>
            </div>
          </div>
          </form>
        </div>
    	</main>
      <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
    </body>
    <div class="footer">
          <div class="footer-copyright text-center py-3"><hr class="my-4" style="margin: auto;width: 40%;"></br><p class="text-muted">© <?php echo date("Y"); ?> Codé par Ethan</small></p></div>
    </div>
    </div>
    </html>
    En vous remerciant,

  2. #2
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Tu peux faire faire le tri par la base,

    et donc ajouter une variable PHP

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //par défaut
    $order='user_id desc';
    if(! empty($_GET['autre_colonne']) && ! empty($_GET['sort_order'])){
       $order=$_GET['autre_colonne'].' '.$_GET['sort_order'];
    }
    $sql_requete.=' order by '.$order;
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    D'accord, je ne comprends pas trop le fonctionnement à propos de "autre_colonne" est-ce que ce serait possible d'avoir un exemple par exemple pour trier par date d'ajout ou alphabétiquement les Nom des utilisateurs juste histoire de comprendre un peu le code ?

    Je te remercie grandement,
    Après peut-être qu'il faut une date d'ajout et du coup une colonne en plus pour trier par date d'ajout ?

  4. #4
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    OK.
    Bien entendu, tu présentes à l'utilisateur un formulaire en méthode GET pour choisir leur ordre.
    ce qui ensuite, te donnera une URI du type : "blabla.php?tri=nom&sort=asc"

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //par défaut
    $order='user_id desc';
    if(! empty($_GET['tri']) && ! empty($_GET['sort'])){
       $order=$_GET['tri'].' '.$_GET['sort'];
    }
    $sql_requete.=' order by '.$order;
    //ta requête finira par " order by nom asc" au lieu de " order by user_id desc"

    C'est une méthode (en php)...
    Si tu as besoin d'un order by multiple "order by nom, prenom, naissance desc"... il faut laisser les gens saisir tout ça dans le formulaire et adapter ton code.

    il y a aussi des méthodes javascript... qui sont peut-être plus indiquées.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    Désolé de la réponse tardive, je bossais sur d'autre point du site..
    Bah enfête je pensais à avoir plusieurs select avec les valeurs possibles & prédéfinies et que je récupère la valeur de chaque select afin de chercher les utilisateurs possédant ces critères..

    Mais avec ton bout de code je ne vois pas du tout comment je pourrais faire ça, actuellement j'ai finis le petit form en haut de mon tableau afin de pouvoir sélectionner quelques critères juste pour tester :

    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
        <div class="card">
        <div class="card-header text-center">
          EN COURS DE DEV : TRI MULTI-CRITERE
        </div>
        <div class="card-body">
          <form method="GET" action="list.php">
          <div class="row">
            <div class="col">
          <select name="QPV" style="width:15%;">
              <option class="hidden"  selected disabled>QPV</option>
              <option>Oui</option>
              <option>Non</option>
              <option>300m</option>
          </select>
        </div>
      <div class="col">
      <select name="Sexe" style="width:15%;margin-top:1%;">
          <option class="hidden" selected disabled>Sexe</option>
          <option>Homme</option>
          <option>Femme</option>
      </select>
    </div>
    <div class="col">
      <select name="Dernierdiplome" style="width:43%;margin-top:1%;">
          <option class="hidden" selected disabled>Dernier diplôme validé</option>
          <option>BAC</option>
          <option>BTS</option>
          <option>LICENCE</option>
          <option>MASTER</option>
          <option>MBA</option>
      </select>
    </div>
    </div>
    </form>
        </div>
      </div>
    Sachant que la page complète donne ça :

    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
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    <?php
    session_start(); // AU TOUT DEBUT du fichier
    // ----------------------
    // Connexion BDD
    include('include_db.php');
    // ----------------------
    if (empty($_SESSION['Prenom'])) {
        header('Location: index.php');
    }
    // ----------------------
    // REQUETE : Construction
    $sql_requete = "SELECT * FROM BDD";
    $sql_params = array();
    // ----------------------
    // Traitement : Recherche ?
    if (!empty($_POST['Search'])) {
        $search = str_replace(' ', '', $_POST['Search']);
        if (is_numeric($search)) { // nombres
            $sql_requete .= " WHERE Telephone LIKE ? OR CodePostale LIKE ?";
            $sql_params = array('%'. $search . '%' , '%' . $search . '%');
        } else { // chaine
            $sql_requete .= " WHERE Prenom LIKE ? OR Nom LIKE ? OR Ville LIKE ? OR Email LIKE ? OR Adresse LIKE ? OR QPV LIKE ? OR Sourcing LIKE ? OR Dernierdiplome LIKE ? OR Formationvise LIKE ? OR Specialitee LIKE ? OR Niveau LIKE ? OR Metier LIKE ? OR Contratvise LIKE ? OR Rythme LIKE ? OR Structure LIKE ?";
            $sql_params = array( '%' . $search . '%' , '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%');
        }
    }
    // Tri multi-critères
    // ----------------------
    // Supprimer des utilisateurs
    if (!empty($_POST["delete"])) {
        $ids = implode(",", (array)$_POST["delete"]);
        $final = $db->prepare("DELETE  FROM `BDD` WHERE Id IN ($ids)");
        $final->execute();
    }
    // ----------------------
    // Requête : TOUT
    $requete_total = $db->prepare($sql_requete);
    $requete_total->execute($sql_params);
    $elem_total = $requete_total->rowCount();
    // ----------------------
    // Pagination
    $elem_page = 10;
    $page_total = ceil($elem_total/ $elem_page);
    if (!empty($_GET['page']) && $_GET['page'] > 0) {
        $pageCourante = intval($_GET['page']);
    } else {
        $pageCourante = 1;
    }
    if ($pageCourante>$page_total) {
        $pageCourante = $page_total;
    }
    $depart_page = ($pageCourante-1) * $elem_page;
    // ----------------------
    // Requête : pour cette page
    $sql_requete_page = $sql_requete . " LIMIT ".$depart_page." , ".$elem_page." ";
    $requete_page = $db->prepare($sql_requete_page);
    $requete_page->execute($sql_params);
    // ----------------------
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    	<title>PA - Liste des utilisateurs</title>
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
      <link rel="stylesheet" href="css/simple_list.css">
      <meta name="viewport" content="width=device-width, initial-scale=1">
    	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
    	<link rel="icon" href="https://www.proactiveacademy.fr/wp-content/uploads/2018/01/cropped-favicon-32x32.png" sizes="32x32" />
      <link rel="stylesheet" href="//use.fontawesome.com/releases/v5.0.7/css/all.css">
    </head>
    <body class="d-flex flex-column justify-content-center">
      <div id="page-content">
        <nav class="navbar navbar-expand-md bg-dark navbar-dark">
          <a class="navbar-brand"><img src="http://www.proactiveacademy.fr/wp-content/uploads/2018/01/p-proactive-1.png" class="img-fluid" alt="Responsive image"></a>
          <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
            <span class="navbar-toggler-icon"></span>
          </button>
          <div class="collapse navbar-collapse" id="collapsibleNavbar">
            <ul class="navbar-nav mx-auto">
              <li class="nav-item">
                <?php
                $sql = $db->prepare('SELECT * FROM BDD ORDER BY Id DESC LIMIT 50');
                $sql -> execute(array()); //Exécution de la requete
     
                while ($ligneencours = $sql -> fetch(PDO::FETCH_ASSOC)) { //Tant qu'il y a un enregistrement dans la table on l'associe à une ligne du tableau
                    // Les lignes de variables du tableau
                    $export[] = array($ligneencours["Id"], $ligneencours["id_cv"], $ligneencours["Nom"], $ligneencours["Prenom"], $ligneencours["Telephone"], $ligneencours["Email"], $ligneencours["QPV"], $ligneencours["Sexe"], $ligneencours["Ville"], $ligneencours["CodePostale"], $ligneencours["Adresse"], $ligneencours["Diplomevise"], $ligneencours["Contratvise"], $ligneencours["Dernierdiplome"], $ligneencours["Niveaudeformation"], $ligneencours["Secteuractivité"], $ligneencours["Formationvise"], $ligneencours["Specialitee"], $ligneencours["Niveau"], $ligneencours["Metier"], $ligneencours["Rythme"], $ligneencours["Structure"], $ligneencours["Sourcing"], $ligneencours["Entreprise"], $ligneencours["Commentaires"]);
                }
     
                // Nom du fichier et delimiteur entre chaque entrées
                $chemin = 'inscrits.csv';
                $delimiteur = ';'; // Pour une tabulation, $delimiteur = "t";
     
                // Création du fichier csv
                // fopen : Ouvre un fichier
                /*
                w+ : Ouvre en lecture et écriture ;
                Place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0.
                Si le fichier n'existe pas, on tente de le créer.
                */
                $fichier_csv = fopen($chemin, 'w+');
     
                /*
                Si votre fichier a vocation a être importé dans Excel,
                vous devez impérativement utiliser la ligne ci-dessous pour corriger
                les problèmes d'affichage des caractères internationaux (les accents par exemple)
                */
                fprintf($fichier_csv, chr(0xEF).chr(0xBB).chr(0xBF));
     
                // On affiche une fois l'entête sans boucle
                $entetes = array('Id', 'Nom_CV', 'Nom', 'Prénom', 'Telephone', 'Email', 'QPV', 'Sexe', 'Ville', 'Code Postal', 'Adresse', 'Diplome visé', 'Contrat visé', 'Dernier Diplôme', 'Niveau de formation', 'Secteur Activité', 'Formation visé', 'Specialitée', 'Niveau', 'Métier', 'Rythme', 'Structure', 'Sourcing', 'Entreprise', 'Commentaires');
                fputcsv($fichier_csv, $entetes, $delimiteur);
     
                // Boucle foreach sur chaque ligne du tableau
                // Boucle pour se déplacer dans les tableaux
                foreach ($export as $ligneaexporter) {
                    // chaque ligne en cours de lecture est insérée dans le fichier
                    // les valeurs présentes dans chaque ligne seront séparées par $delimiteur
                    fputcsv($fichier_csv, $ligneaexporter, $delimiteur);
                }
     
                // fermeture du fichier csv
                fclose($fichier_csv);
                ?>
                <a class="nav-link" href="inscrits.csv"><i class="fas fa-download"></i></a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="add.php"><i class="fas fa-user-plus"></i></a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="add_csv.php"><i class="fas fa-users"></i></a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="logout.php"><i class="fas fa-sign-out-alt"></i></a>
              </li>
            </ul>
          </div>
                  <span class="navbar-text right-align" style="text-align: right;">Bienvenue, <?php echo $_SESSION['Prenom']?></span>
        </nav>
    	</header>
      <?php
      if (!empty($_POST["delete"])) {
          echo "<div class=\"alert alert-success \"><center><strong>Parfait !</strong><class=\"alert-link\"> Les ou les utilisateurs ont bien été supprimés.</center></div>";
      }
        ?>
    	<main class="flex-fill justify-content-center align-items-center">
        <div class="card">
        <div class="card-header text-center">
          EN COURS DE DEV : TRI MULTI-CRITERE
        </div>
        <div class="card-body">
          <form method="GET" action="list.php">
          <div class="row">
            <div class="col">
          <select name="QPV" style="width:15%;">
              <option class="hidden"  selected disabled>QPV</option>
              <option>Oui</option>
              <option>Non</option>
              <option>300m</option>
          </select>
        </div>
      <div class="col">
      <select name="Sexe" style="width:15%;margin-top:1%;">
          <option class="hidden" selected disabled>Sexe</option>
          <option>Homme</option>
          <option>Femme</option>
      </select>
    </div>
    <div class="col">
      <select name="Dernierdiplome" style="width:43%;margin-top:1%;">
          <option class="hidden" selected disabled>Dernier diplôme validé</option>
          <option>BAC</option>
          <option>BTS</option>
          <option>LICENCE</option>
          <option>MASTER</option>
          <option>MBA</option>
      </select>
    </div>
    </div>
    </form>
        </div>
      </div>
    <br/>
            <div class="main">
                <div class="container-fluid"><br/><br/>
                  <div class="options">
                    <div class="form-group has-search">
                      <span class="fa fa-search form-control-feedback"></span>
                    <form method="post" action="list.php">
                    <div class="searchbar"><input type="text" class="form-control" value="Rechercher un utilisateur" name="Search" onclick="this.value='';"></div></form>
                    <form method="post" action="list.php">
                      <input type="submit" class="btn btn-danger" style="width: 130px;" value="Supprimer" name="supprimer" onclick="return confirm('Êtes-vous sûr de vouloir supprimer ces utilisateurs ?')"/>
                    </div>
                  </div>
                <div class="row h-1">
                    <div class="col-sm-13 mx-auto">
                        <div class="table-wrap fixed-header">
                  <table class="table table-striped table-responsive table-hover tablesorter" id="myTable">
                  <thead class="thead-dark" style="width:10%;">
                    <tr>
                        <th style="width:2%;" id="Choix"><input type="checkbox" onclick="cocherTout(this.checked);" /></th>
                        <th id="Nom" class="selection" data-tri="1" data-type="num">NOM</th>
                        <th id="Prenom">PRÉNOM</th>
                        <th id="Sexe">SEXE</th>
                        <th id="Telephone" >TELEPHONE</th>
                        <th id="E-mail">EMAIL</th>
                        <th id="Code-Postale" scope="col">CODE POSTALE</th>
                        <th id="Adresse" scope="col">ADRESSE</th>
                        <th id="Ville" scope="col">VILLE</th>
                        <th id="QPV" scope="col">QPV</th>
                        <th id="DernierDiplome" scope="col">DERNIER DIPLÔME</th>
                        <th id="Formationvise" scope="col">FORMATION VISEE</th>
                        <th id="Specialitee" scope="col">SPECIALITEE</th>
                        <th id="Niveau" scope="col">NIVEAU DE FORMATION VISE</th>
                        <th id="Metier" scope="col">METIER</th>
                        <th id="Contratvise" scope="col">CONTRAT VISE</th>
                        <th id="Rythme" scope="col">RYTHME D'ALTERNANCE</th>
                        <th id="Structure" scope="col">STRUCTURE</th>
                        <th id="Entreprise" scope="col">ENTREPRISE</th>
                        <th id="Commentaires" scope="col">COMMENTAIRES</th>
                        <th id="Upload" style="width:6%" scope="col">UPLOAD</th>
                        <th style="width:7%;" id="Edit" scope="col">MODIFICATION</th>
                        <th id="CV" style="width:5%;" scope="col"></th>
                    </tr>
                  </thead>
                  <tbody>
    <?php		while ($donne = $requete_page->fetch()) { ?>
    				<tr>
    					<td class="w-25"><input type="checkbox" name="delete[]" value="<?php echo $donne['Id']; ?>" /></td>
    					<td class="w-25"><?php echo $donne['Nom']; ?></td>
    					<td class="w-25"><?php echo $donne['Prenom']; ?></td>
    					<td><?php echo $donne['Sexe']; ?></td>
    					<td><?php echo $donne['Telephone']; ?></td>
    					<td><?php echo $donne['Email']; ?></td>
    					<td><?php echo $donne['CodePostale']; ?></td>
              <td><?php echo $donne['Adresse']; ?></td>
              <td><?php echo $donne['Ville']; ?></td>
    					<td><?php echo $donne['QPV']; ?></td>
              <td><?php echo $donne['Dernierdiplome']; ?></td>
              <td><?php echo $donne['Formationvise']; ?></td>
              <td><?php echo $donne['Specialitee']; ?></td>
              <td><?php echo $donne['Niveau']; ?></td>
              <td><?php echo $donne['Metier']; ?></td>
              <td><?php echo $donne['Contratvise']; ?></td>
              <td><?php echo $donne['Rythme']; ?></td>
              <td><?php echo $donne['Structure']; ?></td>
              <td><?php echo $donne['Entreprise']; ?></td>
              <td contenteditable="true"><?php echo $donne['Commentaires']; ?></td>
              <td class="w-25"><a class="btnEdit btn btn-primary btn-sm" href="upload.php?id=<?php echo $donne['Id']; ?>">Upload</a></td>
    					<td><a class="btnEdit btn btn-primary btn-sm" href="edit.php?id=<?php echo $donne['Id']; ?>">Editer</a></td>
              <td><a class="btnEdit btn btn-primary btn-sm" href="<?php echo $donne['id_cv'];?>">CV</a></td>
    				</tr>
            <?php		} ?>
                          </tbody>
                        </table>
                      </div>
                          &nbsp;
     
                    <ul class="pagination justify-content-center">
                      <li class="page-item">
            <?php		for ($i=1; $i<=$page_total; $i++) { ?>
            			 <li class="page-item"><a class="page-link" href="list.php?page=<?php echo $i; ?>"><?php echo "$i"; ?></a>
            <?php		}?>
            </li>
            </ul>
    			  </div>
          </div>
          </div>
            </div>
          </div>
          </form>
        </div>
    	</main>
      <script>
      $(document).ready(function () {
    $('#myTable').DataTable();
    $('.dataTables_length').addClass('bs-select');
    });</script>
      <script>
      function cocherTout(etat)
      {
        var cases = document.getElementsByTagName('input');   // on recupere tous les INPUT
         for(var i=1; i<cases.length; i++)     // on les parcourt
           if(cases[i].type == 'checkbox')     // si on a une checkbox...
               {cases[i].checked = etat;}
                   // ... on la coche ou non
     
      }
    </script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
      <script src="http://code.jquery.com/jquery-latest.min.js"></script>
     
    </body>
    <div class="footer">
          <div class="footer-copyright text-center py-3"><hr class="my-4" style="margin: auto;width: 40%;"></br><p class="text-muted">© <?php echo date("Y"); ?> Codé par Ethan Selleron</small></p></div>
    </div>
    </div>
    </html>
    Jreaux m'a fortement aidé dans la conception de mon petit site, et il m'a aidé à mettre en place la pagination et je pense qu'il faut ducoup s'adapter à ce critère de ?page= en parallèle non ?

    De plus j'ai tenté avec ton code mais apparament il n'a pas l'air de faire grand chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /  $order='Id desc';
      if (!empty($_GET['QPV']) && !empty($_GET['Sexe'])) {
          $order=$_GET['QPV'].' '.$_GET['Sexe'];
      }
      $sql_requete.=' order by '.$order;
      $tri = $db->prepare($sql_requete);
      $tri->execute();
    Edit : Le tableau est bien trié par date d'ajout (desc) donc on doit pas être loin !
    Maintenant il me faut récupérer les valeurs de chaque select :/

    Edit 2 :
    Désormais je récupère bien les valeurs mais j'ai du placer un submit dans le form et j'ai bien toutes les infos dans l'url pour le sexe ainsi que pour le select QPV sauf que le tableau ne se trie pas malheureusement.. Il devient vide..
    Et est-ce possible d'actualiser la page quand un select prend une valeur afin d'éviter de devoir placer un bouton pour GET ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- Ça n'a aucun intérêt d'afficher les critères dans la barre d'adresse.
    Utilise plutôt la method="post" (et donc $_POST).

    2- Il existe aussi datatables (jQuery)

  7. #7
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Tu sembles confondre tri et ordre !

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT metier, nom, prenom, age
    FROM contact
    WHERE metier="jardinier" /*tri*/
    ORDER BY nom, prenom, age; /*ordre*/

    Un select (je reste sur la simple idée d'ordre) se construit ainsi :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            <div class="col">
              <select name="ordre_sexe" id="ordre_sexe" style="width:15%;margin-top:1%;" onchange="submit()">
                  <option value="">Ordre par genre</option>
                  <option value="asc">Ascendant</option>
                  <option value="desc">Descendant</option>
              </select>
            </div>

    La partie onchange="submit()" permet en javascript que le select soit dynamique sans bouton submit.

    Jreaux a raison : mieux vaut laisser javascript, ici Jquery, gérer tout ça...
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,

    1- Ça n'a aucun intérêt d'afficher les critères dans la barre d'adresse.
    Utilise plutôt la method="post" (et donc $_POST).

    2- Il existe aussi datatables (jQuery)
    Bonjour jreaux,

    J'ai effectivement essayer cette interface sauf que ça modifie tout mon css ça rend mon tableau étriqué et ça supprime le overflow:scroll ..
    Pour la méthode post, c'est modifier.

    Avec jquery :

    Nom : Capture d’écran 2019-09-18 à 17.02.29.png
Affichages : 3890
Taille : 334,9 Ko

    Sans jquery :

    Nom : Capture d’écran 2019-09-18 à 17.04.15.png
Affichages : 3576
Taille : 288,2 Ko

    De plus le show entries ne fonctionne pas vu que je me charge déjà de ce paramètre plus haut dans mon code ..

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    Tu sembles confondre tri et ordre !
    ...
    Jreaux a raison : mieux vaut laisser javascript, ici Jquery, gérer tout ça...
    Parfait je te remercie, je vais tester du coup normalement je suis censé pouvoir effectuer le tri multi-critères à partir de ton code SQL non ?
    Il faudrait qu'à la place de ton "jardinier" je place une variable qui récupère le post de chaque select c'est bien ça ?

    Et super pour le onchange je tente ça !

  10. #10
    Invité
    Invité(e)
    Par défaut
    1- Datatables peut être utilisé en complément du "module de recherche/tri PHP".

    Car Datatables traite LA TOTALITÉ des résultats de la requête, mais ajoute la pagination* et les flèches de tri.

    S'il y a beaucoup (trop) de lignes de résultats, ça peut mettre du temps à s'afficher.
    Il est alors préférable d'en réduire le nombre avec le "module de recherche/tri PHP".

    * Contrairement à un "système de pagination PHP", où la requête ne récupère QUE les lignes à afficher.

    2- Quant au fait que ça modifie le tableau (CSS), ça peut être dû simplement à l'ordre de déclaration des fichiers CSS.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    Jreaux,

    J'ai vu ça malheureusement peu importe ou je place le css ou le script, le tableau ne prend pas en compte mon CSS et de toute manière il permet de trier par ordre alphabétique / croissant / décroissant etc..
    Mais ne permet pas le système de tri croisé, je me trompe ?

    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
    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
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    <?php
    session_start(); // AU TOUT DEBUT du fichier
    // ----------------------
    // Connexion BDD
    include('include_db.php');
    // ----------------------
    if (empty($_SESSION['Prenom'])) {
        header('Location: index.php');
    }
    // ----------------------
    // REQUETE : Construction
    $sql_requete = "SELECT * FROM BDD";
    $sql_params = array();
    // ----------------------
    // Traitement : Recherche ?
    if (!empty($_POST['Search'])) {
        $search = str_replace(' ', '', $_POST['Search']);
        if (is_numeric($search)) { // nombres
            $sql_requete .= " WHERE Telephone LIKE ? OR CodePostale LIKE ?";
            $sql_params = array('%'. $search . '%' , '%' . $search . '%');
        } else { // chaine
            $sql_requete .= " WHERE Prenom LIKE ? OR Nom LIKE ? OR Ville LIKE ? OR Email LIKE ? OR Adresse LIKE ? OR QPV LIKE ? OR Sourcing LIKE ? OR Dernierdiplome LIKE ? OR Formationvise LIKE ? OR Specialitee LIKE ? OR Niveau LIKE ? OR Metier LIKE ? OR Contratvise LIKE ? OR Rythme LIKE ? OR Structure LIKE ?";
            $sql_params = array( '%' . $search . '%' , '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%', '%' . $search . '%');
        }
    }
    // Tri multi-critères
      $order='Id desc';
      if (!empty($_GET['QPV']) && !empty($_GET['Sexe'])) {
          $order=$_GET['QPV'].' '.$_GET['Sexe'];
      }
      $sql_requete.=' order by '.$order;
      $tri = $db->prepare($sql_requete);
      $tri->execute();
    // ----------------------
    // Supprimer des utilisateurs
    if (!empty($_POST["delete"])) {
        $ids = implode(",", (array)$_POST["delete"]);
        $final = $db->prepare("DELETE  FROM `BDD` WHERE Id IN ($ids)");
        $final->execute();
    }
    // ----------------------
    // Requête : TOUT
    $requete_total = $db->prepare($sql_requete);
    $requete_total->execute($sql_params);
    $elem_total = $requete_total->rowCount();
    // ----------------------
    // Pagination
    $elem_page = 10;
    $page_total = ceil($elem_total/ $elem_page);
    if (!empty($_GET['page']) && $_GET['page'] > 0) {
        $pageCourante = intval($_GET['page']);
    } else {
        $pageCourante = 1;
    }
    if ($pageCourante>$page_total) {
        $pageCourante = $page_total;
    }
    $depart_page = ($pageCourante-1) * $elem_page;
    // ----------------------
    // Requête : pour cette page
    $sql_requete_page = $sql_requete . " LIMIT ".$depart_page." , ".$elem_page." ";
    $requete_page = $db->prepare($sql_requete_page);
    $requete_page->execute($sql_params);
    // ----------------------
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    	<title>PA - Liste des utilisateurs</title>
      <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.css">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
      <link rel="stylesheet" href="css/simple_list.css">
      <meta name="viewport" content="width=device-width, initial-scale=1">
    	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
    	<link rel="icon" href="https://www.proactiveacademy.fr/wp-content/uploads/2018/01/cropped-favicon-32x32.png" sizes="32x32" />
      <link rel="stylesheet" href="//use.fontawesome.com/releases/v5.0.7/css/all.css">
    </head>
    <body class="d-flex flex-column justify-content-center">
      <div id="page-content">
        <nav class="navbar navbar-expand-md bg-dark navbar-dark">
          <a class="navbar-brand"><img src="http://www.proactiveacademy.fr/wp-content/uploads/2018/01/p-proactive-1.png" class="img-fluid" alt="Responsive image"></a>
          <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
            <span class="navbar-toggler-icon"></span>
          </button>
          <div class="collapse navbar-collapse" id="collapsibleNavbar">
            <ul class="navbar-nav mx-auto">
              <li class="nav-item">
                <?php
                $sql = $db->prepare('SELECT * FROM BDD ORDER BY Id DESC LIMIT 50');
                $sql -> execute(array()); //Exécution de la requete
     
                while ($ligneencours = $sql -> fetch(PDO::FETCH_ASSOC)) { //Tant qu'il y a un enregistrement dans la table on l'associe à une ligne du tableau
                    // Les lignes de variables du tableau
                    $export[] = array($ligneencours["Id"], $ligneencours["id_cv"], $ligneencours["Nom"], $ligneencours["Prenom"], $ligneencours["Telephone"], $ligneencours["Email"], $ligneencours["QPV"], $ligneencours["Sexe"], $ligneencours["Ville"], $ligneencours["CodePostale"], $ligneencours["Adresse"], $ligneencours["Diplomevise"], $ligneencours["Contratvise"], $ligneencours["Dernierdiplome"], $ligneencours["Niveaudeformation"], $ligneencours["Secteuractivité"], $ligneencours["Formationvise"], $ligneencours["Specialitee"], $ligneencours["Niveau"], $ligneencours["Metier"], $ligneencours["Rythme"], $ligneencours["Structure"], $ligneencours["Sourcing"], $ligneencours["Entreprise"], $ligneencours["Commentaires"]);
                }
     
                // Nom du fichier et delimiteur entre chaque entrées
                $chemin = 'inscrits.csv';
                $delimiteur = ';'; // Pour une tabulation, $delimiteur = "t";
     
                // Création du fichier csv
                // fopen : Ouvre un fichier
                /*
                w+ : Ouvre en lecture et écriture ;
                Place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0.
                Si le fichier n'existe pas, on tente de le créer.
                */
                $fichier_csv = fopen($chemin, 'w+');
     
                /*
                Si votre fichier a vocation a être importé dans Excel,
                vous devez impérativement utiliser la ligne ci-dessous pour corriger
                les problèmes d'affichage des caractères internationaux (les accents par exemple)
                */
                fprintf($fichier_csv, chr(0xEF).chr(0xBB).chr(0xBF));
     
                // On affiche une fois l'entête sans boucle
                $entetes = array('Id', 'Nom_CV', 'Nom', 'Prénom', 'Telephone', 'Email', 'QPV', 'Sexe', 'Ville', 'Code Postal', 'Adresse', 'Diplome visé', 'Contrat visé', 'Dernier Diplôme', 'Niveau de formation', 'Secteur Activité', 'Formation visé', 'Specialitée', 'Niveau', 'Métier', 'Rythme', 'Structure', 'Sourcing', 'Entreprise', 'Commentaires');
                fputcsv($fichier_csv, $entetes, $delimiteur);
     
                // Boucle foreach sur chaque ligne du tableau
                // Boucle pour se déplacer dans les tableaux
                foreach ($export as $ligneaexporter) {
                    // chaque ligne en cours de lecture est insérée dans le fichier
                    // les valeurs présentes dans chaque ligne seront séparées par $delimiteur
                    fputcsv($fichier_csv, $ligneaexporter, $delimiteur);
                }
     
                // fermeture du fichier csv
                fclose($fichier_csv);
                ?>
                <a class="nav-link" href="inscrits.csv"><i class="fas fa-download"></i></a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="add.php"><i class="fas fa-user-plus"></i></a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="add_csv.php"><i class="fas fa-users"></i></a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="logout.php"><i class="fas fa-sign-out-alt"></i></a>
              </li>
            </ul>
          </div>
                  <span class="navbar-text right-align" style="text-align: right;">Bienvenue, <?php echo $_SESSION['Prenom']?></span>
        </nav>
    	</header>
      <?php
      if (!empty($_POST["delete"])) {
          echo "<div class=\"alert alert-success \"><center><strong>Parfait !</strong><class=\"alert-link\"> Les ou les utilisateurs ont bien été supprimés.</center></div>";
      }
        ?>
    	<main class="flex-fill justify-content-center align-items-center">
        <div class="card">
        <div class="card-header text-center">
          EN COURS DE DEV : TRI MULTI-CRITERE
        </div>
        <div class="card-body">
          <form method="post" action="list.php">
          <div class="row">
            <div class="col">
          <select name="QPV" style="width:15%;">
              <option class="hidden"  selected disabled>QPV</option>
              <option>Oui</option>
              <option>Non</option>
              <option>300m</option>
          </select>
        </div>
      <div class="col">
      <select name="Sexe" style="width:15%;margin-top:1%;">
          <option class="hidden" selected disabled>Sexe</option>
          <option>Homme</option>
          <option>Femme</option>
      </select>
    </div>
    <div class="col">
      <select name="Dernierdiplome" style="width:43%;margin-top:1%;">
          <option class="hidden" selected disabled>Dernier diplôme validé</option>
          <option>BAC</option>
          <option>BTS</option>
          <option>LICENCE</option>
          <option>MASTER</option>
          <option>MBA</option>
      </select>
    </div>
    </div>
    <input type="submit"></input>
    </form>
        </div>
      </div>
    <br/>
            <div class="main">
                <div class="container-fluid"><br/><br/>
                  <div class="options">
                    <div class="form-group has-search">
                      <span class="fa fa-search form-control-feedback"></span>
                    <form method="post" action="list.php">
                    <div class="searchbar"><input type="text" class="form-control" value="Rechercher un utilisateur" name="Search" onclick="this.value='';"></div></form>
                    <form method="post" action="list.php">
                      <input type="submit" class="btn btn-danger" style="width: 130px;" value="Supprimer" name="supprimer" onclick="return confirm('Êtes-vous sûr de vouloir supprimer ces utilisateurs ?')"/>
                    </div>
                  </div>
                <div class="row h-1">
                    <div class="col-sm-13 mx-auto">
                        <div class="table-wrap fixed-header">
                  <table class="table table-striped table-responsive table-hover tablesorter" id="myTable">
                  <thead class="thead-dark" style="width:10%;">
                    <tr>
                        <th style="width:2%;" id="Choix"><input type="checkbox" onclick="cocherTout(this.checked);" /></th>
                        <th id="Nom" class="selection" data-tri="1" data-type="num">NOM</th>
                        <th id="Prenom">PRÉNOM</th>
                        <th id="Sexe">SEXE</th>
                        <th id="Telephone" >TELEPHONE</th>
                        <th id="E-mail">EMAIL</th>
                        <th id="Code-Postale" scope="col">CODE POSTALE</th>
                        <th id="Adresse" scope="col">ADRESSE</th>
                        <th id="Ville" scope="col">VILLE</th>
                        <th id="QPV" scope="col">QPV</th>
                        <th id="DernierDiplome" scope="col">DERNIER DIPLÔME</th>
                        <th id="Formationvise" scope="col">FORMATION VISEE</th>
                        <th id="Specialitee" scope="col">SPECIALITEE</th>
                        <th id="Niveau" scope="col">NIVEAU DE FORMATION VISE</th>
                        <th id="Metier" scope="col">METIER</th>
                        <th id="Contratvise" scope="col">CONTRAT VISE</th>
                        <th id="Rythme" scope="col">RYTHME D'ALTERNANCE</th>
                        <th id="Structure" scope="col">STRUCTURE</th>
                        <th id="Entreprise" scope="col">ENTREPRISE</th>
                        <th id="Commentaires" scope="col">COMMENTAIRES</th>
                        <th id="Upload" style="width:6%" scope="col">UPLOAD</th>
                        <th style="width:7%;" id="Edit" scope="col">MODIFICATION</th>
                        <th id="CV" style="width:5%;" scope="col"></th>
                    </tr>
                  </thead>
                  <tbody>
    <?php		while ($donne = $requete_page->fetch()) { ?>
    				<tr>
    					<td class="w-25"><input type="checkbox" name="delete[]" value="<?php echo $donne['Id']; ?>" /></td>
    					<td class="w-25"><?php echo $donne['Nom']; ?></td>
    					<td class="w-25"><?php echo $donne['Prenom']; ?></td>
    					<td><?php echo $donne['Sexe']; ?></td>
    					<td><?php echo $donne['Telephone']; ?></td>
    					<td><?php echo $donne['Email']; ?></td>
    					<td><?php echo $donne['CodePostale']; ?></td>
              <td><?php echo $donne['Adresse']; ?></td>
              <td><?php echo $donne['Ville']; ?></td>
    					<td><?php echo $donne['QPV']; ?></td>
              <td><?php echo $donne['Dernierdiplome']; ?></td>
              <td><?php echo $donne['Formationvise']; ?></td>
              <td><?php echo $donne['Specialitee']; ?></td>
              <td><?php echo $donne['Niveau']; ?></td>
              <td><?php echo $donne['Metier']; ?></td>
              <td><?php echo $donne['Contratvise']; ?></td>
              <td><?php echo $donne['Rythme']; ?></td>
              <td><?php echo $donne['Structure']; ?></td>
              <td><?php echo $donne['Entreprise']; ?></td>
              <td contenteditable="true"><?php echo $donne['Commentaires']; ?></td>
              <td class="w-25"><a class="btnEdit btn btn-primary btn-sm" href="upload.php?id=<?php echo $donne['Id']; ?>">Upload</a></td>
    					<td><a class="btnEdit btn btn-primary btn-sm" href="edit.php?id=<?php echo $donne['Id']; ?>">Editer</a></td>
              <td><a class="btnEdit btn btn-primary btn-sm" href="<?php echo $donne['id_cv'];?>">CV</a></td>
    				</tr>
            <?php		} ?>
                          </tbody>
                        </table>
                      </div>
                          &nbsp;
     
                    <ul class="pagination justify-content-center">
                      <li class="page-item">
            <?php		for ($i=1; $i<=$page_total; $i++) { ?>
            			 <li class="page-item"><a class="page-link" href="list.php?page=<?php echo $i; ?>"><?php echo "$i"; ?></a>
            <?php		}?>
            </li>
            </ul>
    			  </div>
          </div>
          </div>
            </div>
          </div>
          </form>
        </div>
    	</main>
      <script>
      $(document).ready(function () {
    $('#myTable').DataTable();
    $('.dataTables_length').addClass('bs-select');
    });</script>
      <script>
      function cocherTout(etat)
      {
        var cases = document.getElementsByTagName('input');   // on recupere tous les INPUT
         for(var i=1; i<cases.length; i++)     // on les parcourt
           if(cases[i].type == 'checkbox')     // si on a une checkbox...
               {cases[i].checked = etat;}
                   // ... on la coche ou non
     
      }
    </script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
      <script src="http://code.jquery.com/jquery-latest.min.js"></script>
      <script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>
    </body>
    <div class="footer">
          <div class="footer-copyright text-center py-3"><hr class="my-4" style="margin: auto;width: 40%;"></br><p class="text-muted">© <?php echo date("Y"); ?> Codé par Ethan</small></p></div>
    </div>
    </div>
    </html>
    Merci beaucoup

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    A toi de bien définir tes besoins.

    Perso, je n'utilise pas Datatables
    mais bien une pagination en PHP (?page=...) associée à un module de recherche/tri.

    Ça suffit à MON besoin.
    (À la différence que j'utilise Ajax pour éviter le rechargement de page, mais on verras ça plus tard)

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    Sympa de me proposer ce plug-in alors !
    Déjà rien que l'aspect n'est pas top même si il a l'air de bien remplir son travail niveau ordre, même les "Entries" ne marchent pas à part si j'ai oublier quelque chose.. Ou peut-être que c'est dû au module de recherche & de pagination..

    Oui excuse moi en gros j'ai crée 3 select pour tester (mais pourquoi pas en rajouter plus après), et j'aimerais en gros que quand exemple dans le select Sexe je met Homme, ça m'affiche directement toutes les personnes qui sont pour valeur "Homme" dans la colonne Sexe de la BDD..

    Et en gros je vais mettre 7/8 select par exemple pour la Ville, les derniers diplômes validés etc et que tout soit reliés afin d'optimiser les recherches par exemple si je recherche une Femme qui a comme dernier diplôme validé un BAC, j'aimerais que ça prenne ces 2 select en compte..

    Ah oui donc ça pourrait être pas mal effectivement de supprimer le rafraichissement de la page afin de pas remonter en haut de la page à chaque fois, je regarderais de mon côté, ça doit pas être si difficile que ça si?

  14. #14
    Invité
    Invité(e)
    Par défaut
    1- Rien ne t'oblige à charger TOUT le CSS de Datatables.

    2- D'autre part, et c'est la différence essentielle, Datatables travaille "coté client".
    Comme tous les résultats de la requête sont traités, changement de page (pagination) et tri se font quasi-instantanément.
    Et il n'y a pas de rechargement de page.

    Contrairement au traitement PHP (même via Ajax), qui demande un traitement "coté serveur".

    3- J'ai mis plusieurs mois, voire années, pour passer du système "classique" PHP (avec rechargement) au système Ajax (sans rechargement), au gré de mon apprentissage des langages (JS, puis jQuery,...).
    Je ne vais donc pas te l'expliquer en 5 minutes.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    J'imagine oui mais il faudrait que je télécharge le dossier css et que je modifie etc, autant juste rajouter le système de tri ou à la limite un select qui trie par asc et par desc ça sera plus rapide..

    A la limite ça ne me dérange pas du tout en sois le rechargement de la page, on va éviter de s'y pencher si ça t'a pris autant de temps alors que t'as beaucoup plus d'expérience ahah, aurais-tu une idée du coup pour le tri par select ?

    Je te remercie grandement

  16. #16
    Invité
    Invité(e)
    Par défaut
    "le tri par select", c'est juste un traitement "classique" en PHP du formulaire.
    Je ne vois pas où est le problème.

    De plus, on ne va pas toujours écrire TOUT le code à ta place !

  17. #17
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    Donc il faudrait que je récupère les valeurs $_POST de mes select et que je les places dans des variables ensuite je reprends le code de Dendrite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $Sexe = $_POST['Sexe'];
     
    $tri = $db->prepare("SELECT Sexe FROM BDD WHERE Metier=$Sexe");
    $tri->execute();
    par exemple ?

    Mais comment relier avec les autres select ?

  18. #18
    Invité
    Invité(e)
    Par défaut
    1- Ce sont des questions de débutant qui veut tout, tout de suite.
    Ça ne marche pas comme ça.

    Je répète : on ne va pas toujours t'écrire tout le code.

    Prends le temps de réfléchir, de rechercher, d'expérimenter, de tester,... et fais-toi ta propre expérience.

    2- Tu peux t'inspirer de ça : [source] PRINCIPE de RECHERCHE MULTI-CRITERES (PHP-SQL-PDO).
    Dernière modification par Invité ; 19/09/2019 à 12h28.

  19. #19
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Jreaux
    J'ai mis plusieurs mois, voire années, pour passer du système "classique" PHP (avec rechargement) au système Ajax (sans rechargement), au gré de mon apprentissage des langages (JS, puis jQuery,...).
    Je ne vais donc pas te l'expliquer en 5 minutes.
    +1 et merci pour ta franchise, je me sens moins seule. Je priais en cachette pour que javascript passe de mode... et puis son influence n'a fait que s'accroître.

    Citation Envoyé par StrangerThings
    Ah oui donc ça pourrait être pas mal effectivement de supprimer le rafraichissement de la page afin de pas remonter en haut de la page à chaque fois, je regarderais de mon côté, ça doit pas être si difficile que ça si?
    C'est très exactement le genre de problématiques qui n'a aucun intérêt en PHP, et exige un script côté navigateur client, donc ajax ou javascript.
    Alors après, on peut, parce qu'on a vraiment du mal (comme tout le monde) avec le changement, vouloir tailler des carottes en forme de radis, mais au bout d'un moment, on comprend en profondeur qu'il y a des technos dédiées et qu'il faut savoir quand et comment les utiliser à bon escient.
    Si tu débutes en PHP et HTML, eh bien perfectionne-toi déjà dans PHP... C'est difficile de tout apprendre en même temps.
    Les clients web sont très exigeants en matière d'ergonomie, d'autant plus qu'ils ne se rendent pas compte de ce que ça comporte derrière.
    Tu peux très bien dire : bon, moi, je débute. Vous aurez une application qui fonctionnera, sans bug, mais pas une ergonomie très branchée... Je verrai ça plus tard.

    @Jreaux : j'ai un jeune copain qui est extrêmement compétent en informatique et qui me dit que l'on va se passer très bientôt totalement de SQL, s'il a raison, ça rendra mon métier si triste ! C'est la partie que je préfère !
    Mais bon, les modes tournent parfois. Dans les années 2000, javascript était pour les gamins qui voulaient s'initier en posant des alertes rigolotes partout. Autant dire que ça n'était pas perçu avec un gros avenir.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  20. #20
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Points : 13
    Points
    13
    Par défaut
    Effectivement je suis quelqu'un d'impatient mais bon t'as du le remarquer depuis le temps que je t'enquiquine avec mes questions ahah ..

    J'ai bien lu et j'ai essayer de comprendre ton code pour le tri, tout d'abord je pense devoir passer la récupération des variables en GET au lieu de post sinon je perd à chaque submit et donc à chaque changement de valeur de select les POST d'avant non ?

    J'ai tenter d'adapter un peu le code j'ai pas trop compris le système des -99 ..?

    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
    // Tri multi-critères
    if (! isset($_SESSION['recherche'])) {
        // -99 = critère désactivé
        $_SESSION['recherche'] = ['critere1' => -99, 'critere2' => -99];
    }
    // -------------
    // Initialisation des array nécessaires
    $sql_where = array();	// contiendra les bouts de code SQL, à partir des critères de recherche
    $sql_param = array();	// array des paramètres à transmettre à execute(...)
    // -------------
    // Récupération : QPV
    $_SESSION['recherche']['critere1'] = (isset($_POST['critere1']))? trim($_POST['critere1']) : $_SESSION['recherche']['critere1'];
    switch ($_SESSION['recherche']['critere1']) {
        case -99:	// Tous
        case 0:
            // $sql_where : (rien)
            break;
        default:
            $sql_where[] = " critere1 = :QPV ";
            $sql_param[':QPV'] = $_SESSION['recherche']['critere1'];
    }
    // -------------
    // Récupération : Sexe
    $_SESSION['recherche']['critere2'] = (isset($_POST['critere2']))? trim($_POST['critere2']) : $_SESSION['recherche']['critere2'];
    switch ($_SESSION['recherche']['critere2']) {
        case -99:	// Tous
        case 0:
            // $sql_where : (rien)
            break;
        default:
            $sql_where[] = " critere2 = :Sexe ";
            $sql_param[':Sexe'] = $_SESSION['recherche']['critere2'];
    }
    // -------------j
    // On construit la chaine :  "WHERE .... AND .... AND .... "
    $clause_WHERE = (!empty($sql_where))? " WHERE " . implode(" AND ", $sql_where) : "";
    // -------------
    // requete
    $sql_requete = "SELECT ".
        " QPV, Sexe " .
        " FROM BDD " . // (ICI, PAS de WHERE !)
        $clause_WHERE .	// en cas de tri (non traité ici -> mais même principe)
        " LIMIT 10" . 	// en cas de pagination (non traité ici -> voir "systèeme de pagination PHP")
        ";";
    Si j'ai bien compris les ' : ' devant les différents textes sont bien les colonnes de la BDD non ?
    Pour l'instant ça n'a pas l'air de trop fonctionner j'aimerais juste savoir si j'ai bien modifier ce qu'il fallait ou si je m'embarque dans n'importe quoi?
    Pour info: j'ai placer tout ce code juste après la pagination et j'ai enlever un critère pour simplifier la chose, pas d'erreur php mais aucun tri s'effectue.
    Je te remercie

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

Discussions similaires

  1. [CR 10] Tri sur tableau croisé dynamique
    Par Marye6 dans le forum Formules
    Réponses: 7
    Dernier message: 28/12/2015, 14h38
  2. tri d'un tableau dynamique
    Par serge_galoup dans le forum C++
    Réponses: 28
    Dernier message: 09/01/2012, 17h53
  3. Réponses: 2
    Dernier message: 06/09/2007, 15h08
  4. [Kylix] tableau dynamique
    Par sdoura2 dans le forum EDI
    Réponses: 1
    Dernier message: 31/10/2002, 08h57
  5. Réponses: 4
    Dernier message: 13/05/2002, 16h43

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