Php trier un tableau par colonne
j-ppduweb
-
j-ppduweb -
j-ppduweb -
Bonjour,
je suis en train de creer un site internet et j'ai un petit soucis.
Je voudrais créer un tableau triable par colonne, lorsque l'utilisateur cliquera sur l'entête de cette dernière.
J'ai recherché sur le net mais je n'arrive pas a résoudre ce problème, j'aurais besoin d'un avis d'un développeur plus confirmé que moi pour me dire ce qui cloche dans mon code.
C'est un code récupéré en partie sur le net, je l'ai peut être mal adapter mais j'ai passer plusieurs heures a essayer de solutionner ce problème... en vain, et je commence à ne pu avoir les idées très claires...
Merci d'apporter votre aide à un jeune débutant qui a envie d'apprendre. :)
je suis en train de creer un site internet et j'ai un petit soucis.
Je voudrais créer un tableau triable par colonne, lorsque l'utilisateur cliquera sur l'entête de cette dernière.
J'ai recherché sur le net mais je n'arrive pas a résoudre ce problème, j'aurais besoin d'un avis d'un développeur plus confirmé que moi pour me dire ce qui cloche dans mon code.
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=localhost;dbname=stats', 'root', '', $pdo_options); // Tri sur colonne $tri_autorises = array('ID','Noms','Nation','Arrivee','Depart'); $order_by = in_array($_GET['order'],$tri_autorises) ? $_GET['order'] : 'ID'; // Sens du tri $order_dir = isset($_GET['inverse']) ? 'DESC' : 'ASC'; //récupère le contenu $result = $bdd->query('SELECT * FROM entraineurs'); // fonction qui affiche les liens function sort_link($text, $order=false) { global $order_by, $order_dir; if(!$order) $order = $text; $link = '<a href="?order=' . $order; if($order_by==$order && $order_dir=='ASC') $link .= '&inverse=true'; $link .= '"'; if($order_by==$order && $order_dir=='ASC') $link .= ' class="order_asc"'; elseif($order_by==$order && $order_dir=='DESC') $link .= ' class="order_desc"'; $link .= '>' . $text . '</a>'; return $link; } // Affichage ?> <table> <tr> <th><?php echo sort_link('ID', 'ID') ?></th> <th><?php echo sort_link('Noms', 'Noms') ?></th> <th><?php echo sort_link('Nation', 'Nation') ?></th> <th><?php echo sort_link('Arrivee', 'Arrivee') ?></th> <th><?php echo sort_link('Depart', 'Depart') ?></th> </tr> <?php while( $row=fetch_assoc($result) ) //le probleme viendrait de cette ligne ? ?> <tr> <td><?php echo $row['ID'] ?></td> <td><?php echo $row['Noms'] ?></td> <td><?php echo $row['Nation'] ?></td> <td><?php echo $row['Arrivee'] ?></td> <td><?php echo $row['Depart'] ?></td> </tr> <?php endwhile ?> </table>
C'est un code récupéré en partie sur le net, je l'ai peut être mal adapter mais j'ai passer plusieurs heures a essayer de solutionner ce problème... en vain, et je commence à ne pu avoir les idées très claires...
Merci d'apporter votre aide à un jeune débutant qui a envie d'apprendre. :)
A voir également:
- Php trier un tableau par colonne
- Trier un tableau excel - Guide
- Tableau word - Guide
- Déplacer colonne excel - Guide
- Tableau ascii - Guide
- Colonne word - Guide
4 réponses
On sait vraiement pas d ou tu pars ?
Tu as une BdD avec des données et ce code qui t affiche un tableau.
Deja dans ce code
Il faut rejouter un test sur l'existance $_GET pour pouvoir l afficher une fois.
Ca doit etre la
Tu as une BdD avec des données et ce code qui t affiche un tableau.
Deja dans ce code
// Tri sur colonne $tri_autorises = array('ID','Noms','Nation','Arrivee','Depart'); $order_by = in_array($_GET['order'],$tri_autorises) ? $_GET['order'] : 'ID';
Il faut rejouter un test sur l'existance $_GET pour pouvoir l afficher une fois.
Ca doit etre la
Bonjour
Dans ta requête, tu ne tiens aucun compte de l'ordre que tu as déterminé avant. Il faut l'incorporer :
Dans ta requête, tu ne tiens aucun compte de l'ordre que tu as déterminé avant. Il faut l'incorporer :
$result = $bdd->query('SELECT * FROM entraineurs ORDER BY '.$order_by. ' '.$order_dir);