Changer la position des éléments dans une listbox

jericho63 Messages postés 8 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 11 mars 2008 - 11 mars 2008 à 11:51
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 11 mars 2008 à 14:30
bonjour

voici mon problème:

j'ai une listbox dans ma page dans laquelle je fais afficher le contenu d'un table mysql ordonner selon un index.

ce que je voudrais pouvoir faire c'est ajouter deux petites fleches en haut et en bas me permettant de déplacer un élément sélectionné dans ma listbox tout en mettant à jour l'index dans la base de données..

j'avoue que je ne sais absolument pas comment faire..
j'utilise une base mysql et php

merci d'avance.

14 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 mars 2008 à 11:57
Bonjour,

>>ce que je voudrais pouvoir faire c'est ajouter deux petites fleches en
haut et en bas
    possible... probablement.
>>me permettant de déplacer un élément sélectionné dans ma
listbox
    euh... si on parle de la balise SELECT, ça doit pouvoir le faire aussi
>>tout en mettant à jour l'index dans la base de données..
    pas de raison que cela ne soit pas possible

    mais sans plus d'infos ( c'est quoi index ?, qu'est-ce qui plante ?
       que n'arrives-tu pas à faire ? il est comment le SELECT ? quoi qui
        n'y a dans la base... ), dur dur de répondre.

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
jericho63 Messages postés 8 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 11 mars 2008
11 mars 2008 à 12:06
il s'agit bien d'un select

alors en fait l'index est un numéro qui détermine l'ordre d'affichage dans la listbox il est stocke dans la propriété value de chaque <option>

les deux flèche j'arrive a les afficher( pas trop dur la encore..)
je leurs associes un onclick vers une fonction.
j'ai deux fonctions: une pour monter l'élément l'autre pour descendre..

mon problème est que je ne sais pas comment m'y prendre pour le faire...

merci
0
jericho63 Messages postés 8 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 11 mars 2008
11 mars 2008 à 12:09
un peu de code pour illustrer...

function up()
{

//pour monter....

}
function down()
{
// pour descendre
}

</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Gestionnaire du suivi</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>


Configuration du suivi,
,

----

,
<form name="form2" method="post" action=""><table width="100%" border="0" background="images/fondg+.png" style="border:1px solid #000000">
----, onClick=\"form2.submit()\">
HD EXCO</td>
onClick="form2.submit()">
<? echo $_SESSION['nom']; ?>,

----

,

----

<select name="tache" size="10" class="TexteBase" id="tache">

<?
$query="SELECT * from $matable WHERE `to`='$groupe' ORDER BY ordre;";
$suivi=mysql_query ($query) or die ("$query");
$row_suivi = mysql_fetch_assoc($suivi);
do {
?>
<option value="<? echo $row_suivi['Ordre']; ?>"><? echo $row_suivi['libelle']; ?></option>
<? } while ($row_suivi = mysql_fetch_assoc($suivi)); ?>

</select>,

----

,

----



</form></td>
<td> </td>
</tr>
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 mars 2008 à 12:25
Bonjour,

>> l'index est un numéro qui détermine l'ordre d'affichage dans la
listbox
    et ça sert à quoi ?
    le_select_en_question.selectedIndex, c'est le n° de ligne

    pour déplacer vers le haut ou vers le bas :

var sel=document.getElementById("tache");
....
function deplace(sens)    // sens =-1 pour monter, 1 pour descendre
{  if  ( sel.selectedIndex+sens>=0 && sel.selectedIndex+sens<sel.length )
   {   var t=sel[sel.selectedIndex+sens].text;
        sel[sel.selectedIndex+sens].text=sel[sel.selectedIndex].text;
        sel[sel.selectedIndex].text=t;
        sel.selectedIndex=sel.selectedIndex+sens; 
    } 
}

par exemple...
      

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 mars 2008 à 12:28
Bonjour,
    bien entendu, ce qui est fait pour .text, le faire pour .value
       ( mais les value c'est pour transmettre au PHP, pas un n° d'ordre
             à priori inutile... )
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
jericho63 Messages postés 8 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 11 mars 2008
11 mars 2008 à 12:54
non non, c'est pas ca

en fait la valeur des options du select sont lu dans une base de donnees.
le l'index permet de trier l'ordre d'affichage des infos dans la liste box qui n'est pas forcement l'ordre dans la base.

par exemple:

listbox:
element1->index=1->position dans la base=2
element2->index=2->position dans la base=3
element3->index=3->position dans la base=1

ce que je veux c'est si je sélectionne l'élément deux dans la listbox et que j'appui sur la fleche haut celui prenne la place du 1er élément,soit:
que l'index du 1er élément devienne 2 et celui 2e devienne 1.

peut être je ne suis pas bien clair... :(
merci
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 mars 2008 à 13:01
c'est clair...    et je t'ai mis un exemple.
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
jericho63 Messages postés 8 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 11 mars 2008
11 mars 2008 à 13:09
ben...

pour moi il devrait y avoir un acces a la base non avec genre un update pour changer la valeur de l'index...non?

merci
0
jericho63 Messages postés 8 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 11 mars 2008
11 mars 2008 à 13:13
parce que c'est la valeur d'un champs de ma base qui définie l'ordre. changer l'ordre de l'affichage ne résout que partiellement mon problème...
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 mars 2008 à 13:19
je suppose que dans ta base tu mémorises l'ordre d'affichage et ce qu'il faut afficher ?
soit donc à chaque modif  tu appelles php pour mettre à jour ta base, avec ajax si
    tu ne tiens pas à réafficher la page
soit tu enregistres l'ordre "en fin" de ces déplacements.
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
jericho63 Messages postés 8 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 11 mars 2008
11 mars 2008 à 13:27
oui

je n'utilise pas ajax. seulement php et js

donc au final comment je fais pour répercuter les changement dans la base?

on peut faire des requêtes sql avec js?
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 mars 2008 à 13:34
>>je n'utilise pas ajax. seulement php et js

    meuh.... ajax c'est appeler le php depuis le js !!!

>>comment je fais pour répercuter les changement dans la base?

    sans ajax ?   envoi d'un formulaire ( ou changer l'URL )

>>on peut faire des requêtes sql avec js?
    oui. mais à mon humble avis, ce ne serait pas sérieux.
        j'ai mis des exemples ,  MySqlAcces
        ça fonctionne sans problème avec IE, avec les autres navigateurs :
            ça va pas être simple, et surtout pourquoi faire ? PHP est là pour ça.

   

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
jericho63 Messages postés 8 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 11 mars 2008
11 mars 2008 à 13:57
envoiyer le formulaire je veux bien mais
- j'ai deja un submit dans mon formulaire utiliser pour suprimer un enregistrement.donc...
- si faire des requetes pas serieux ok on oubli
-reste ajax.. mais connais pas:(

merci
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 mars 2008 à 14:30
>>- j'ai deja un submit dans mon formulaire utiliser pour suprimer un enregistrement.donc...

    et alors... il n'existe pas de pages sur la toile qui mettent à jour une base ?
       suppression, création, modifications...
    rien d'impossible, d'insurmontable...
    ( la page sera réaffichée ! )

- si faire des requetes pas serieux ok on oubli

    vaut mieux (?)

-reste ajax.. mais connais pas:(


    bof... 10 lignes coté javascript, des exemples partout...

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
Rejoignez-nous