Page 1 sur 1
Modifier l'ordre des données !
Posté : 09 févr. 2007, 11:03
par angebleu17
Bonjour,
En fait j'ai créer une page avec une liste de question, et j'aimerais pouvoir modifier leur ordre.
Donc j'ai ma page avec la liste des questions qui s'affiche sous forme de tableau. J'aimerais que si je clique sur la fléhe haut, la question monte, et si je clique sur la fléche bas, la question descend !
Je pense que dans ma table il faut que je rajoute un champ ordre ou il y aura un chiffre ?!
Merci d'avance pour vos réponses !
Posté : 09 févr. 2007, 11:26
par Ajoloca
Bonjour,
J'ai l'impression que ça va être plus compliqué que d'ajouter un simple numéro d'ordre.
N'oublie pas que le fait de changer le nº d'ordre ne fera pas ré afficher ta page pour que tu puisses voir le résultat.
Posté : 09 févr. 2007, 11:39
par angebleu17
oui c'est vrai...
Mais je ne vois pas du tout comment faire...
Posté : 09 févr. 2007, 11:53
par Ajoloca
Re,
Tu as plusieurs solutions.
Le faire en JS (mais il ne sera pas permanent, juste valable pour la session)
En PHP mais tu devras recharger la page.
En mélangeant les deux (AJAX).
A toi de voir en fonction de ce que tu souhaites faire.
Posté : 09 févr. 2007, 12:02
par angebleu17
je pense plutôt le faire en PHP, je ne m'y connais pas beaucoup en JS et encore mois en AJAX.
Posté : 12 févr. 2007, 10:36
par angebleu17
personne peut m'aider pour démarrer ?? car je ne vois pas du tout comment faire !!
Posté : 12 févr. 2007, 11:12
par Truc
Commence par ajouter un champ "position" dans la table.
Ensuite pour chaque question des liens (ou boutons) "monter" & "descendre" avec des paramètres sur l'id de la question, sa position actuelle et une action.
ça devrait ressembler à :
<a href="page.php?id=".$id."&position=".$position."&action=monter">Monter</a>
<a href="page.php?id=".$id."&position=".$position."&action=descendre">Descendre</a>
Le tout dans la boucle qui liste les questions... donc en remplaçant les variables par celles qui vont bien.
Voilà l'idée en PHP...
Posté : 12 févr. 2007, 12:14
par angebleu17
Mais au départ, il n'y a rien dans mon champ position !
Pour le moment, j'ai fait comme tu as dit.
J'ai mis des fléches haut et bas a chaque question qui envoi sur une page, soit monter_question.php soit descendre_question.php
dc dans cette page je récupére l'id de la question et la position (mais elle est égal à 0 !)
et je rajoute + 1 ou - 1 a position, suivant si c'est pour monter ou descendre et je fait uen requete update.
Posté : 12 févr. 2007, 12:49
par Truc
Mais au départ, il n'y a rien dans mon champ position !
faut remplir biensur... normalement la position est renseignée automatiquement lors de l'ajout d'une nouvelle question, la tu dois remplir manuellement (ou faire un petit script pour le faire si tu en as beaucoup)
J'ai mis des fléches haut et bas a chaque question qui envoi sur une page, soit monter_question.php soit descendre_question.php
ce serait plus simple de renvoyer sur la même page que celle où les questions sont affichées... et tout en début de script tu effectue la requete de mise à jour au besoin et en fonction de $action
Posté : 12 févr. 2007, 13:14
par Ajoloca
Bonjour,
Dans l'esprit de ce que te propose
Truc voici un exemple pour que tu puisses t'inspirer.
Regarde bien les commentaires et essaie de comprendre ce qui se passe, ne te contente pas de l'adapter.
Si tu as des questions n'hésite pas à les poser.
Il-y-a des façons de faire plus court, mais le but c'est que tu comprennes le mécanisme.
<?php
// Démarrage de la session
session_start();
// Déclaration du tableau
$tab = Array('aaaaaaaa', 'bbbbbbbbb', 'cccccccc', 'ddddddddd');
/* Si c'est le premier passage,
on initialise la session avec la valeur du tableau */
if(!isset($_SESSION['tab'])) $_SESSION['tab'] = $tab;
// C'est pas le premier passage
if(isset($_GET['action']) && isset($_GET['pos'])){
/* On conserve le contenu du poste
(fourni par $_GET['pos'])
dans une variable temporaire */
$tmp = $_SESSION['tab'][$_GET['pos']];
/* Si l'action c'est monter
(fournie par $_GET['action']) */
if($_GET['action'] == 'm'){
// On place le contenu du poste pécédent dans le poste sélectionné
$_SESSION['tab'][$_GET['pos']] = $_SESSION['tab'][$_GET['pos'] - 1];
/* On place le contenu du poste séléctionné
(gardé dans la variable temporaire $tmp)
dans le poste précédent */
$_SESSION['tab'][$_GET['pos'] - 1] = $tmp;
}
/* Dans le cas de descendre on fais les mêmes opérations
mais dans le sens inverse*/
else {
$_SESSION['tab'][$_GET['pos']] = $_SESSION['tab'][$_GET['pos'] + 1];
$_SESSION['tab'][$_GET['pos'] + 1] = $tmp;
}
}
/*
Affichage du tableau
*/
// Calcul de taille du tableau (Nombre de postes)
$taille = count($tab);
echo '<table border="1">';
/* On fera attention au premier et dernier poste
Le premier ne peu être monté
Le dernier ne peu être descendu
C'est pour cette raison qu'ils sont en dehors de la boucle */
echo '<tr><td>' . $_SESSION['tab'][0] .
'</td><td><a href="' . $_SERVER['PHP_SELF'] . '?action=d&pos=0">Descendre</a></td></tr>';
for($i = 1; $i < $taille - 1; $i++){
echo '<tr>
<td>' . $_SESSION['tab'][$i] . '</td>
<td>
<a href="' . $_SERVER['PHP_SELF'] . '?action=m&pos=' . $i . '">Monter</a><br />
<a href="' . $_SERVER['PHP_SELF'] . '?action=d&pos=' . $i . '">Descendre</a>
</td>
</tr>';
}
echo '<tr><td>' . $_SESSION['tab'][$i] .
'</td><td><a href="' . $_SERVER['PHP_SELF'] . '?action=m&pos=' . $i .'">Monter</a></td></tr>';
echo '</table>';
?>
Posté : 12 févr. 2007, 15:11
par angebleu17
ok merci.
Je vais essayer de comprendre tous ça !

Posté : 13 févr. 2007, 10:15
par angebleu17
j'ai du mal à comprendre le code...
je l'ai essayé et il fonctionne, mais je ne comprend rien du tout..
J'ai un peu compris a partir de l'affichage du tableau.. mais bon c'est un peu flou !