Passage de paramètre URL en JS (Novice)

Passage de paramètre URL en JS (Novice) - HTML/CSS - Programmation

Marsh Posté le 23-05-2008 à 10:52:27    

Bonjour à tous !
 
Je suis débutant en JS, j'ai commencé mon stage en début de semaine et je passe mes journé a faire du HTML, PHP et JS. Et j'ai un problème tout simple mais qui me dérange quand même.
J'ai beau cherché, bizzarement, sur le web aucune réponse ne ma aidé
 
Version simple
J'ai une variable JS et je voudrais rafraichir la page (ou rediriger vers la même page, ca na pas d'importance) avec cette variable JS en parametre. Ensuite le la recupère avec un jolie $_REQUEST.
 
Il y a deux solutions :
_Passer directement la variable avec un code JS
_"Convertir" la variable JS en HTML et ensuite l'envoyer via une ligne de code HTML
 
 

Citation :


function RecupFocus()
{
  //On récupère la valeur recherché et je la met dans "Test"
  var Test = document.FormDatabase.CDatabase.options[document.FormDatabase.CDatabase.selectedIndex].value
 
}


 
En espérant votre aide, merci à tous !


---------------
Coz every girl crazy bout a sharp dressed man
Reply

Marsh Posté le 23-05-2008 à 10:52:27   

Reply

Marsh Posté le 23-05-2008 à 11:56:27    

location.replace() avec ta nouvelle URL en paramètre

Reply

Marsh Posté le 23-05-2008 à 15:36:32    

Merci c'étais pas exactement ce que j'attendais mais cette reponse ma quand même servie.
 
Test n'étais qu'une des 4 variables que j'avais l'intention de transmettre via l'URL. Seulement j'aurais voulut les transmettres via une methode équivalente à POST mais en JS.
Car je n'avais pas envie d'avoir les variables affichées dans l'URL.
 
Savez vous si il existe une methode semblable à post mais en JS ?
 
Code actuel qui fonctionne mais avec les variables dans l'URL :

Citation :


<SCRIPT language="javascript">
function FDatabase()
{
  var Database = document.FormDatabase.CDatabase.options[document.FormDatabase.CDatabase.selectedIndex].value
  var Server = document.FormDatabase.ServerName.value
  var User = document.FormDatabase.UserName.value
  var Password = document.FormDatabase.Password.value
  var URL = "acceuil.php"
  location.replace(URL + '?Database=' + Database + '&ServerName=' + Server + '&UserName=' + User + '&Password=' + Password)
}
</SCRIPT>


Message édité par Xtrmboss le 23-05-2008 à 15:36:50

---------------
Coz every girl crazy bout a sharp dressed man
Reply

Marsh Posté le 28-05-2008 à 15:15:51    

Rebonjour tout le monde, alors voila j'ai reussi a resoudre mon problème tout seul.
 
Mais maintenant je n'arrive pas à faire autre chose.
 
Alors voila mon code  

Citation :

function FDatabase()
{
  document.FormDatabase.Database.value = document.FormDatabase.ListeData.options[document.FormDatabase.ListeData.selectedIndex].value;
  document.FormDatabase.method='POST';
  document.FormDatabase.target='Database';
  document.FormDatabase.action = document.location;
  document.FormDatabase.submit();
}


 
Comme on peu le voir j'ai trouvé la solution pour passer des paramètre avec la méthode POST.
 
PROBLEME :
Quand j'utilise cette méthode, la même adresse qui s'apelle "Acceuil.php" ce recharge dans une nouvelle page, mais je voudrais que la page se recharge dans la même fenètre windows que celle ou j'ai cliqué.
 
Quelqu'un pour m'aider ? SVP


Message édité par Xtrmboss le 28-05-2008 à 15:25:32

---------------
Coz every girl crazy bout a sharp dressed man
Reply

Marsh Posté le 28-05-2008 à 15:29:17    

d'après toi pourquoi ça ouvre une nouvelle fenêtre ?
 
indice :

Code :
  1. document.FormDatabase.target='Database';


Reply

Marsh Posté le 28-05-2008 à 15:38:51    

A oui en effet ce target foutais un peu la merde.
 
Code actuel :

Citation :


function FDatabase()
{
  document.FormDatabase.Database.value = document.FormDatabase.ListeData.options[document.FormDatabase.ListeData.selectedIndex].value;
  document.FormDatabase.method='POST';
  document.FormDatabase.action = document.location;
  document.FormDatabase.submit();
}



Message édité par Xtrmboss le 28-05-2008 à 16:03:19

---------------
Coz every girl crazy bout a sharp dressed man
Reply

Marsh Posté le 28-05-2008 à 16:09:12    

Rerebonjour j'ai encoreu n problème :
 
Donc cette fois je donne également le reste de la page WEB car je ne passe pas que le JS suffit a resoudre mon problème  
 

Citation :


<SCRIPT language="javascript">
function FColonne()
{
  document.FormColonne.Colonne.value = document.FormColonne.ListeColonne.options[document.FormColonne.ListeColonne.selectedIndex].value;
  document.FormColonne.method='POST';
  document.FormColonne.action = document.location;
  document.FormColonne.submit();
}
</SCRIPT>
 
<HTML>
<TD><LI><FORM NAME=FormColonne method='get'><p align='left'>
  COLONNES<BR>";
  $Requete = "SELECT COLUMN_NAME, ORDINAL_POSITION FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='$Table'";
  $RessourceColonne = mssql_query("$Requete" ) or die ("Impossible de lister les colonnes" );
  while($ValeurColonne=mssql_fetch_object($RessourceColonne))
    $Liste_Colonne[]=$ValeurColonne->COLUMN_NAME;
  echo "<SELECT NAME=ListeColonne OnKeyUp='FColonne()' size=16 multiple=true";
    for($i=0; $i<count($Liste_Colonne); $i++)
    echo "<option value = '$Liste_Colonne[$i]'>$Liste_Colonne[$i]</option>";  
 
  echo "</SELECT>
  <input type=hidden name='Colonne'>
  <input type=hidden name='ServerName' value=$ServerName>
  <input type=hidden name='UserName' value=$UserName>
  <input type=hidden name='Password' value=$Password>
  <input type=hidden name='Database' value=$Database>
  <input type=hidden name='Table' value=$Table>
 
  </FORM></LI></TD>";
</HMTL>


(je n'ais pas donné toute ma page web, elle est trop grande.)
 
 
PROBLEME :
Je voudrait envoyer plusieurs variable du même FORM dans la fonction JS ou alors modifiez également le FORM. Car mon FORM et une liste déroulante à choix multiple.


Message édité par Xtrmboss le 28-05-2008 à 16:18:48

---------------
Coz every girl crazy bout a sharp dressed man
Reply

Marsh Posté le 29-05-2008 à 08:35:28    

Alors personne pour m'aider ?


---------------
Coz every girl crazy bout a sharp dressed man
Reply

Marsh Posté le 29-05-2008 à 09:30:00    

Problème résolut, c'est trop tard maintenant :p
 
Je ne présise pas le code HTML car il n'a pas été modifié.
Donc voici mon code JS :

Citation :


function FColonne()
{
  var Tab = new Array();  
  for (var i = 0; i < document.FormColonne.ListeColonne.options.length; i++)
    if (document.FormColonne.ListeColonne.options[ i ].selected)
      Tab.push(document.FormColonne.ListeColonne.options[i].value);
  //Alert(Tab);
  document.FormColonne.Colonne = Tab;
  document.FormColonne.method='POST';
  document.FormColonne.action = document.location;
  document.FormColonne.submit();
}


 
 
PROBLEME
Je voudrais passer en paramètre le tableau 'Tab', mais je n'y arrive pas. Comment faire ? Faut'il décomposer le tableau et faire ne sorte que chaque variable du tableau possède une nom ?


Message édité par Xtrmboss le 29-05-2008 à 09:31:15

---------------
Coz every girl crazy bout a sharp dressed man
Reply

Marsh Posté le 29-05-2008 à 09:52:03    

Problème résolut
 
Je converti le Tableau en chaine, et j'assigne cette chaine à la variable qui passera en paramètre.
 

Citation :


function FColonne()
{
  var Tab = new Array();  
  for (var i = 0; i < document.FormColonne.ListeColonne.options.length; i++)
    if (document.FormColonne.ListeColonne.options[ i ].selected)
      Tab.push(document.FormColonne.ListeColonne.options[i].value);
   
  //Convertion du tableau en Chaine et je l'assigne à Colonne
  document.FormColonne.Colonne.value = Tab.join();
  document.FormColonne.method='POST';
  document.FormColonne.action = document.location;
  document.FormColonne.submit();
}


 
PROBLEME :
Je sais comment récupérer les variables envoyé, mais comment les traiter ?
Je traite chacune des valeures envoyé et je les assigne une par une à un nom de variable ?
Ou alors je traitre chacune des valeur mais je les assigne une par une dans un tableau ?


---------------
Coz every girl crazy bout a sharp dressed man
Reply

Marsh Posté le 29-05-2008 à 09:52:03   

Reply

Marsh Posté le 29-05-2008 à 11:24:33    

j'a encore avancé, j'ai choisi de copier voici comment je traite les données recue :
 

Citation :


if(isset($Colonne))
{
  echo " > $Colonne";
  $i=0;
  while(isset($Colonne[$i]) && $Colonne[$i] != ',')
  {
    //Cette ligne ne marche pas
    $VariableColonne[$i] = $Colonne[$i];
    $i++;
  }
}
echo "<BR>$i<BR>$VariableColonne";


 
Comme chaque Colonne est séparé par une virgule, je copie caractère par caractère les valeurs de $Colonne dans $VariableColonne sauf la Virgule ','. Ensuite j'ai l'intention de copier le contenu de $VariableColonne dans un tableau qui va comprendre toutes les variables.
 
PROBLEME :
Je n'arrive pas a copier correctement le caractère de $Colonne dans $VariableColonne, qui j'affiche $VariableColonne il me dit "Array"
Comment copier caractère par caractère ?
 
SVP aider moi :)


Message édité par Xtrmboss le 29-05-2008 à 11:26:10

---------------
Coz every girl crazy bout a sharp dressed man
Reply

Marsh Posté le 29-05-2008 à 12:05:06    

Problème résolut !
 
Je me demande vraiment pourquoi je poste sur ce forum XD
Même si à chaque fois je trouve la solutino seul ca serai bien quand même de m'aider ca ma permettrai d'avancer quand même plus vite. Surtout que le problème que je rencontre sont très basiques.
 

Citation :


if(isset($Colonne))
{
  //La ligne rajoutée est ici
  $VariableColonne = ' ';
  echo " > $Colonne";
  $i=0;
  while(isset($Colonne[$i]) && $Colonne[$i] != ',')
  {
    $VariableColonne[$i] = $Colonne[$i];
    $i++;
  }
}
echo "<BR>$i<BR>$VariableColonne";


 
Pourquoi ca marchais pas avant alors que maintenant c'est le cas ?
C'est parceque je copiais une lettre dans une position d'une variable qui ne sais pas de quel type elle est. D'habitude en PHP, le type de la variable est automatiquement trouvé lors de l'initalisation en fonction de ce qui à été rentré (Contrairement au C++ où il faut préciser le type).
Je croyais que le PHP arriverai trouver le type de la variable en fonction du type de la variable que je rentrais (ici un caractère) malheuresement PHP, ne peut pas le faire car $Colonne[$i] n'est pas un type de variable à ces yeux. Il possède un type de variable seulement une fois que l'ont aurat remplis (avec une chaine de caractère dans mon cas).
 
Comme à la compilation PHP n'arrive pas à déterminer le type de varaible de $Colonne, il ne peu pas le copier dans $VariableColonne vu que avant (dans le message précedent) $VariableColonne ne possèdais pas de type. C'est donc puor cela que j'ai initialisé $VariableColonne avec la chaine ' ' (un espace). Grace à cela, même si $VariableColonne ne possède pas de valeur exploitable, il est quand même initialisé avec le type 'Caractère'. Ce qu'il fait que lors de la compilation.
Comme cela lors que copie le caractère de $Colonne dans $VariableColonne, je copie bien une Valeur de type caractère dans un varaible faite pour recevoir des caractères (Contrairement à avant comme dit plus haut).
 
En espérant aider plusieurs personnes dans la même position que moi
 
 
J'éditerai mon message lors de mon prochaine problème ;)


Message édité par Xtrmboss le 29-05-2008 à 12:05:38

---------------
Coz every girl crazy bout a sharp dressed man
Reply

Marsh Posté le 12-06-2008 à 09:10:57    

Rebonjour tout le monde, ca y est ca recommence mes problèmes avec le JS :
 

Code :
  1. function FiltreColonne(ColonneCourante)
  2. {
  3.   var FormCourantTexte = "IdForm" + ColonneCourante;
  4.   var SelectCourantTexte = "IdSelect" + ColonneCourante;
  5.  
  6.   var FormCourant = document.getElementById(FormCourantTexte);
  7.   var SelectCourant = document.getElementById(SelectCourantTexte);
  8.  
  9.   FormCourant.FiltreDonnee.value = SelectCourant.options[SelectCourant.selectedIndex].value;
  10.   alert (SelectCourant.options[SelectCourant.selectedIndex].value);//Affiche un texte vide
  11. }


 
L'utilisation est simple, j'ai plusieurs menus déroulants géré dynamiquement en PHP.
Je cherche à recupérer la valeur selectionné et la mettre dans la vairable FiltreDonnee qui ce trouve dans chaque Form.
Il faut également savoir qu'a chaque Menu déroulant j'ai egalement un Form différent.
 
 
Quand je souhaite visualiser avec un alert, l'élèment selectionné, il ne m'affiche aucun caractère.
 
PROBLEME :
Comment arriver à récupèrer correctement la valeur selectionné dans le menu déroulant ?
 
 
 
 
En espérant votre aide, Merci.


Message édité par Xtrmboss le 12-06-2008 à 09:12:01

---------------
Coz every girl crazy bout a sharp dressed man
Reply

Marsh Posté le 12-06-2008 à 10:35:11    

Problème résolut, j'avais 'juste' oublié comme une merd*, de mettre un attribut Value dans mes options !
 
 
Honte à moi !


---------------
Coz every girl crazy bout a sharp dressed man
Reply

Marsh Posté le 12-06-2008 à 11:08:58    

[:parisbreizh]


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 12-06-2008 à 15:20:17    

jovalise ?  tu fais du html [:pingouino dei]


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 13-06-2008 à 09:58:31    

Bon allé c'est repartie avec mes problème en Javascript
 

Code :
  1. var SelectedCourant = SelectCourant.options[SelectCourant.selectedIndex].value;//SelectCourant.options[SelectCourant.selectedIndex] = "Cycles'Jova"
  2.  
  3.   alert(SelectedCourant);//Affiche "Cycles"


 
 
Le problème simple :
La chaine de caractère du SelectedIndex possède un ' (quote). Et quand JS, lit la chaine, il arrete la lecture au premeir quote. Alors que je veus qu'il lise toutes la chaine.
 
Comment faire ? Merci de vos réponses.


Message édité par Xtrmboss le 13-06-2008 à 09:59:02

---------------
Coz every girl crazy bout a sharp dressed man
Reply

Marsh Posté le 13-06-2008 à 10:12:04    

file l'html du <select> ?


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 13-06-2008 à 10:41:24    

Code :
  1. <FORM ID=IdForm$TableauColonne[$i] STYLE='display:inline'>
  2.       <SELECT ID=IdSelect$TableauColonne[$i] OnChange=FiltreColonne('$TableauColonne[$i]')>
  3.       <OPTION>Faites votre choix</OPTION>";
  4.       for($e=0; $e<count($ListeValeurDifferente); $e++)
  5.         echo "<OPTION VALUE='$ListeValeurDifferente[$e]'>$ListeValeurDifferente[$e]</OPTION>";//Ensuite j'affiche les données de ce tableau
  6.       echo "</SELECT>
  7.       ";
  8.     }
  9.      echo "<INPUT TYPE='hidden' NAME='FiltreDonnee' value='$FiltreDonnee'>";
  10.      if($ColonneFiltre)
  11.        echo "<INPUT TYPE='hidden' NAME='ColonneFiltre' value='$TableauColonne[$i],$ColonneFiltre'>";
  12.      else
  13.       echo "<INPUT TYPE='hidden' NAME='ColonneFiltre' value='$TableauColonne[$i]'>";
  14.    
  15.       echo "<INPUT TYPE='hidden' NAME='Nom' value=$Nom>
  16.       <INPUT TYPE='hidden' NAME='Colonne' value=$Colonne>
  17.       </FORM>


 
 :pt1cable:  
 
 
Merci de t'intéresser à mon cas.


---------------
Coz every girl crazy bout a sharp dressed man
Reply

Marsh Posté le 13-06-2008 à 13:51:13    

Pas la peine de t'enbêter j'ai enfin trouvé la solution.  
 
Voici une ligne de ma page web compilée :

Code :
  1. <OPTION VALUE='CYCLE'NCO   (BTC)'>CYCLE'NCO   (BTC)</OPTION>


 
Le fait de mettre la valeur entre quote, provoque au quote ouvrant une fermetrue prématuré au quote suivant.
C'est à dire que uniqument CYCLE apparaissait.
 
 
Mais j'ai a nouveau un problème, si on enlève les quote, il ne prend plus en compte les espaces.
Comment faire  :cry:  ??

Message cité 1 fois
Message édité par Xtrmboss le 13-06-2008 à 13:58:15

---------------
Coz every girl crazy bout a sharp dressed man
Reply

Marsh Posté le 13-06-2008 à 16:06:31    

Aïe :(
 
Ca t'étonne vraiment que ça marche pas avec un apostrophe? Les apostrophe te servent de délimiteurs pour tes attributs.
 
En passant :
- ecrit les balises en minuscules
- mets des guillemets doubles et pas simples
- mets TOUJOURS des guillemets
- échappe les chaines que tu insères, avec htmlspecialchars() par ex
 


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 13-06-2008 à 16:07:14    

Xtrmboss a écrit :

Pas la peine de t'enbêter j'ai enfin trouvé la solution.  
 
Voici une ligne de ma page web compilée :

Code :
  1. <OPTION VALUE='CYCLE'NCO   (BTC)'>CYCLE'NCO   (BTC)</OPTION>


 
Le fait de mettre la valeur entre quote, provoque au quote ouvrant une fermetrue prématuré au quote suivant.
C'est à dire que uniqument CYCLE apparaissait.
 
 
Mais j'ai a nouveau un problème, si on enlève les quote, il ne prend plus en compte les espaces.
Comment faire  :cry:  ??


Tu veux vraiment pas chercher une solution AVANT de poster ?


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 13-06-2008 à 16:22:30    

Et tu veux pas faire un tutoriel d'html, en passant...


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 13-06-2008 à 16:36:47    

theredled a écrit :

Et tu veux pas faire un tutoriel d'html, en passant...


 
Désole mais je vois pas trop le rapport, si tu parle du fait que j'explique mes erreurs, c'est juste parce, si un jour un mec tombe sur ce topic, il puisse comprendre comment j'ai résolut mno problème.
Histoire que je ne marque pas juste PROBLEME RESOLUT.
 
 
Sinon je vais voir pour htmlspecialchars, merci quand même.


---------------
Coz every girl crazy bout a sharp dressed man
Reply

Marsh Posté le 13-06-2008 à 16:40:07    

Xtrmboss a écrit :


 
Désole mais je vois pas trop le rapport, si tu parle du fait que j'explique mes erreurs, c'est juste parce, si un jour un mec tombe sur ce topic, il puisse comprendre comment j'ai résolut mno problème.
Histoire que je ne marque pas juste PROBLEME RESOLUT.
 
 
Sinon je vais voir pour htmlspecialchars, merci quand même.


Je parle pas du tout de ça (ça c'est très bien), mais du fait que tu écris mal le html  [:airforceone]


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 16-06-2008 à 14:14:08    

A oui ca le HTML c'est pas mon domaine :p, je connais aucune des convention d'écriture de ce langage.
Et pis, je me comprend  :jap: , tu l'écrirais comment ?
 
 
 
Sinon j'ai résolut le problème complétement différement qu'avec la fonction que tu ma refilée.
 
Je ne l'avais pas noté, mais mon code est issue d'une base MS SQL. Donc plutot que de m'embêter à chercher à envoyer ces fichus caractères, j'ai utilisé le langage SQL et la fonction REMPLACE ou je remplace tout les ' par des _.
 
Comme ont est plusieur à bosser sur ce site, on a décidé de carrement virer tout les ' car il s'avère que ce petit truc est très chiant dans toutes les requettes SQL.
 
Problème résolut, pour le moment.
 
Merci quand même


---------------
Coz every girl crazy bout a sharp dressed man
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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