[RESOLU][JS]Transmettre une liste d'elements vers une autre page

Transmettre une liste d'elements vers une autre page [RESOLU][JS] - HTML/CSS - Programmation

Marsh Posté le 20-03-2004 à 16:42:15    

Salut, j'ai un probleme avec une liste. Le principe est simple, la liste a droite contient tout les films de ma BDD, celle de gauche est vide dans un premier temps et se remplis des films de la premiere liste qd l'utilisateur fais son choix. Les films sont donc "transmis d'une liste a l'autre. Mais voila, maintenant mon probleme est le suivant : comment transmettre ces films vers une autre page par le biais d'un post ? Et aussi, comment empecher l'utilisateur de valider son formulaire tant qu'il n'a selectionné aucun film ?
J'ai tenté avec document.modifier_film.liste2.options.selectedIndex==1, mais ca marche pas, aidez moi svp :F
Voici les 2 fonctions mises en cause :
 
 
 
function Controle_Film()
{
var annee = document.modifier_film.date.value;
 
if(
document.modifier_film.titre.value=='' ||
document.modifier_film.realisateur.value=='' ||
document.modifier_film.date.value=='' ||
document.modifier_film.genre.value=='' ||
document.modifier_film.duree.value=='' ||
document.modifier_film.nat.value=='' ||
document.modifier_film.liste2.options.selectedIndex==1 ||
document.modifier_film.synopsis.value=='')
{
alert('Un ou plusieurs champs obligatoires n\'ont pas été remplis');
document.modifier_film.titre.focus();
 }else if (isNaN(document.modifier_film.date.value) || annee.length != 4){
 alert('L\'année du film n\'est pas valide, verifiez qu\'elle comporte bien 4 chiffres.');
  }else if (isNaN(document.modifier_film.duree.value)){
  alert('La durée du film n\'est pas valide, verifiez qu\'elle est bien saisie en minutes');
  }else{
  document.modifier_film.submit();
  }
}
 
 
 
function Deplacer(l1,l2) {
 if (l1.options.selectedIndex>=0) {
  nouv_option=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selectedIndex].value);
  l2.options[l2.options.length]=nouv_option;
  l1.options[l1.options.selectedIndex]=null;
 }else{
  alert("Aucun acteur sélectionné" );
 }
}
 
 
J'oubliais : les données sont de cette forme, la transmission des ID suffit.
 
<Option value="{DATA_ACTEUR.ID}">{DATA_ACTEUR.PRENOM}&nbsp;{DATA_ACTEUR.NOM}


Message édité par bazbaz le 24-04-2004 à 18:04:14
Reply

Marsh Posté le 20-03-2004 à 16:42:15   

Reply

Marsh Posté le 20-03-2004 à 19:18:33    

Euh, s'il vous plait c'est vraiment important, si personne trouve ici ben je suis mal :/

Reply

Marsh Posté le 22-03-2004 à 16:07:38    

Tu utilises du PHP derrière  ou pas ?

Reply

Marsh Posté le 25-03-2004 à 10:43:27    

ouais, php avec easyphp 1.7

Reply

Marsh Posté le 22-04-2004 à 16:35:19    

UP.
 
Je reformule mon problème : transmettre des variables provenant d'une liste javascript vers une page en PHP. Des idées ?

Reply

Marsh Posté le 22-04-2004 à 16:43:21    

pour le problème de savoir si un film est sélectionné ou pas, tu peux tester la valeur de l'attribut length de ton select.
 
pour passer ta liste, tu peux concaténer tous les liste2.options[].value dans un champs caché dont tu récupère la valeur sur l'autre page

Reply

Marsh Posté le 22-04-2004 à 17:06:23    

Le problème est que je ne sais pas faire tout cela, je comprends ton idée, mais au point de vue synthaxe/algo je dois dire que je patauge :/

Reply

Marsh Posté le 22-04-2004 à 19:39:17    

J'ai peut être une autre solution pour toi : en javascript, tu modifie l'url vers de la page de sortie du formulaire de facon a transmettre les variables par : url.com/nomdelapage.php?var1='1'&var2='2',...
Ainsi tu pourras tout simplement récupérer en PHP tes variables

Reply

Marsh Posté le 22-04-2004 à 19:54:12    

Je ne peut hélas pas faire cela car je transmet mes variables en POST et non pas en GET, à cause de la présence d'un champs biographie qui peut être long :)
 
Donc impossible d'appliquer ta méthode (qui est pas bête).

Reply

Marsh Posté le 22-04-2004 à 21:16:49    

On peut créer une variable d'environnement avec Javascript ?


---------------
"Nous allons reformater les français" © Nicolas Sarkozy
Reply

Marsh Posté le 22-04-2004 à 21:16:49   

Reply

Marsh Posté le 22-04-2004 à 22:37:18    

Alors, cherchons une autre solution
J'en ai peut-être une qui s'avère un peu compliquée mais si tu es prêt à tout...
Dans ta première page, tu mets a la validation du formulaire les réponses dans un cookie.
Tu éssaye alors de les récupérer soit en PHP soit en javascript dans la seconde page
(Mais je ne sais pas s'il est possible de récupérer un cookie en PHP si celui ci a été déposé en JS).
Cette méthode est certes, très peu pratique mais c'est tout ce que je vois sur le moment, mais je vais y pensé un peu...

Reply

Marsh Posté le 22-04-2004 à 23:00:37    

euh, une boucle for pour parcourir son tableau et concaténer ses valeurs, ça me paraît pas la bout du monde :heink:
à la louche:

Code :
  1. for(i=0;i<liste.options.length;i++){
  2. var += '|'+liste.options[i].value;
  3. }


tu transmet var dans un champ caché et ça roule [:proy]
 
bon, la monde code doit pas fonction, parce que je connais pas les objets JS sur le bout des doigts, mais c'est l'idée qui compte :o
 
edit: question innocente: tu peux pas utiliser un select multiple pour ton problème au lieu de transférer le film d'une liste à l'autre?


Message édité par dropsy le 22-04-2004 à 23:02:18
Reply

Marsh Posté le 22-04-2004 à 23:08:21    

Disons que au début j'avais fais cela, mais il me fallait absolument 2 listes pour des questions ergonomiques car c'est aussi la page servant à modifier les films, donc liste 1 "acteurs concernés", liste 2 "acteurs dispos". Je vais tester la concaténation demain, je vous dirais ça :)

Reply

Marsh Posté le 23-04-2004 à 15:40:02    

Alors pour la concaténation, ca marche impec et je pense en effet que c'est la solution la plus simple et la plus efficace à mon problème. Néanmoins, j'ai encore une question (sans doute bête) :
 
<input type="hidden" name="acteurs" value=conc_acteurs()>
Evidement, ça ne marche pas. Comment lui faire comprendre de prendre la valeur retournée par ma fonction "conc_acteurs()" ? Et puis, vu que c'est écrit "en dur" en début de page, je sais pas si ca vas marcher :(
 
(oui, je suis nul, mais j'essaye de m'améliorer)
 
 

Reply

Marsh Posté le 23-04-2004 à 15:46:16    

tu fais un  
document.form.acteurs.value = conc_acteurs();
dans la fonction qui soumet ton formulaire ou dans l'événement onSubmit()

Reply

Marsh Posté le 24-04-2004 à 18:04:58    

Voilà, y'a tout qui marche :)
Un grand merçi à tous ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed