Recuperer une valeur d'un formulaire

saraAnna Messages postés 6 Statut Membre -  
 SaraAnna -
Bonjour ,

je travaille sur une application PHP et je veux récupérer certaines valeurs de mon formulaire mais avant sa soumission !!! ; donc non pas avec les POST & GET .

SVP si vous avez une solution qui pourras m'aider n'hésiter pas merci les amis :)

5 réponses

saraAnna Messages postés 6 Statut Membre
 
Donc voila un petit exemple sur mon PB :

C'est que je veux récuperer la valeur d'une liste de choix et pouvoir par la suit la stocker dans une variable et l'exploiter dans du code php !

<html>
<head>

</head>

<body>

<script>

function voirSelection(liste)
{
var numero = liste.selectedIndex;
var valeur = liste.options[numero].value;
if (valeur==2)
{

<?php $id="<select name=' '>";
$id.="<option value=0>choisissez</option>";
while($row=mysql_fetch_array($query1))
{
$type_vh=$row['type_Vehicule'];
$type_id=$row['id'];

$id.="<option value='$type_id'>$type_vh</option>";
}
$id.="</select>";
print $id;
?>

}

}

</script>

<form action="" method="post"id="monFormulaire">
<select name="transporteur" onchange='voirSelection(this)'>

<option value=1>1</option>
<option value=2>2</option>

</select>
</forme>
j'attends toujours vos réponse merci beaucoup d'avance les amis :)
0
Gremy87 Messages postés 360 Statut Membre 38
 
Bonjour,

j'avais peur de comprendre ton soucis... et j'avais raison ^^



function voirSelection(liste)
{
var numero = liste.selectedIndex;
var valeur = liste.options[numero].value;
if (valeur==2)
{

<?php $id="<select name=' '>";
$id.="<option value=0>choisissez</option>";
while($row=mysql_fetch_array($query1))
{
$type_vh=$row['type_Vehicule'];
$type_id=$row['id'];

$id.="<option value='$type_id'>$type_vh</option>";
}
$id.="</select>";
print $id;
?>

}

}


beurk beurk beurk beurk beurk^^

ceci est malheureusement absolument FAUX et IMPOSSIBLE.
*va vraiment faire un post type pour pas avoir à réécrire^^*

le javascript est un langage client, contrairement au PHP qui lui est un langage serveur. c'est à dire que le client est incapable d'interpréter le PHP.

il est donc impossible de mettre du php dans du javascript car la partie serveur est deja effectuée.

la seule solution qui s'offre a toi est l'AJAX, c'est a dire que, à la place de ca:


<?php $id="<select name=' '>";
$id.="<option value=0>choisissez</option>";
while($row=mysql_fetch_array($query1))
{
$type_vh=$row['type_Vehicule'];
$type_id=$row['id'];

$id.="<option value='$type_id'>$type_vh</option>";
}
$id.="</select>";
print $id;
?>


tu vas appeler une page php en AJAX (donc retour coté serveur) pour faire ta requête et tu interprétera le resultat
0
SaraAnna
 
merci beaucoup je vais commencer à lire un cours d'ajax :)
0
saraAnna Messages postés 6 Statut Membre
 
Voila Gremy STTTTTTTP j'ai commencer à lire AJAX :p mais comme dab je blokkk en fait voila un exemple dont le quelle il faut que je transmette via request.send deux parametres le premier soucis c'est que je s'ais si la syntaxe est juste pour passer deux valeurs et le faite d'utiliser document.getElementById('listeType').selectedIndex comme parametre de fonction voila mon code si tu arrive à voir l'erreur je t'en pri de m'aider merci bc bc bc :)

*************Page1.php***********************************


<html> <head>

<script type="text/javascript">

function getRequeteHttp()
{

var requeteHttp;

if (window.XMLHttpRequest)
{

requeteHttp=new XMLHttpRequest();
if (requeteHttp.overrideMimeType)
{
requeteHttp.overrideMimeType('text/xml');
}
}
else
{
if (window.ActiveXObject)
{
try { requeteHttp=new ActiveXObject("Msxml2.XMLHTTP"); }
catch(e) {
try {
requeteHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
requeteHttp=null;
}
}
}
}
return requeteHttp;
}


function envoyerRequete(url, debut, type)
{

var requeteHttp=getRequeteHttp();
if (requeteHttp==null)
{

alert("Impossible d'utiliser Ajax sur ce navigateur");

}
else
{

requeteHttp.open('POST',url,true);
requeteHttp.onreadystatechange= function() {recevoirReponse(requeteHttp);};
requeteHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');


requeteHttp.send('debutLib=' + escape(debut)+'&debutType='+escape(type));
//requeteHttp.send('debutType=' + escape(type));

}
return;

}

function recevoirReponse(requeteHttp)
{
if (requeteHttp.readyState==4)
{
if (requeteHttp.status==200)
{
traiterReponse(requeteHttp.responseText);
}
else
{
alert("La requête ne s'est pas correctement exécutée");
}
}
}
function traiterReponse(reponse)
{
var i,nb,selectPdt;
var produits=reponse.split('/');
nb=produits.length;
selectPdt=document.getElementById("listePdt");
selectPdt.length=nb;
for (i=0; i<nb; i++)
{
selectPdt.options[i].text=produits[i];
}
}


</script>


</script>
</head>

<body>
Libellé : <input type="text" onkeyup="javascript:envoyerRequete('getProduits.php',this.value,document.getElementById('listeType').selectedIndex)">
<br /> Liste des produits : <br />

<select id="listePdt" size="4"> </select>

<select id="listeType" size="4" onchange=''>
<option id=1 value=1>categorie1</option>
<option id=2 value=2>categorie2</option>
</select>

</body>
</html>

************************page2.php****************************************
<?php
header("Cache-Control: no-cache, must-revalidate");
header('Content-Type: text/plain; charset=ISO-8859-1');
$cnx=mysql_connect('localhost','root','');


mysql_select_db('ajax',$cnx);

//$req=mysql_query("select * from produit where pr_libelle like '".$_POST['debutLib']."%'" );
$req=mysql_query("select * from produit where pr_libelle like '".$_POST['debutLib']."%'AND pr_categorie=".$_POST['debutType']."");
$pdt=mysql_fetch_assoc($req);

if ($pdt)
{
$resultat=$pdt['pr_libelle'];
$pdt=mysql_fetch_assoc($req);
}
else
{
$resultat='';
}
while($pdt)
{

$resultat=$resultat.'/'.$pdt['pr_libelle'];
$pdt=mysql_fetch_assoc($req);
}
mysql_close($cnx);
echo $resultat;

?>


et Si ya qqn qui a une idée svp donner moi vos remarque merci
0
Gremy87 Messages postés 360 Statut Membre 38
 
Bonjour,

a première vue, sans avoir testé, ca me parait pas mal.

quelques conseils personnels:

-en PHP le fait de décomposer tout en fonction pour être plus modulaire est un principe presque fondamentale, en JS je trouve ca beaucoup plus dur a suivre mais ce n'est qu'un avis personnel.

-les requêtes AJAX n'étant pas "visible" a première vue de l'utilisateur, privilégie la méthode GET pour envoyer tes informations je trouve ca bien plus simple

requeteHttp.open('GET',url+'?var1=toto&var2=tutu&var3=tata',true);
requeteHttp.onreadystatechange= function() {recevoirReponse(requeteHttp);};
requeteHttp.send(null); 


-si ce n'est pas deja le cas, munie toi du module complémentaire firebug de firefox qui te permettra de visualiser tes requêtes AJAX et de voir ce qu'elles renvoient.

je vais tester ca un peu plus et te tiens au courant.
0
SaraAnna
 
Bonsoir je te remerci t'es trop sympa !!! okkk je vais suivre tes conseilles à la lettre ^^ merci
0
Gremy87 Messages postés 360 Statut Membre 38
 
re,


après test, il te manque juste un concept très important à assimiler^^

si c'est comme moi, ton soucis est que tu as ca:

alert("La requête ne s'est pas correctement exécutée");

tout le temps.

c'est tout a fait normal!

la requête AJAX passe par différents états state et readystate durant son execution.

la fonction recevoirReponse s'execute dès que l'état change donc dès le debut tes conditions

if (requeteHttp.readyState==4)
{
if (requeteHttp.status==200)
{ 


ne sont pas remplies et donc il fait l'alert.

le passage dans la branche du

alert("La requête ne s'est pas correctement exécutée");

ne veut pas dire que la requête ne s'esdt pas correctement executé, cela signifie qu'elle n'est pas finie d'exécutée donc il ne faut rien faire du tout, juste attendre.

<html> <head>

<script type="text/javascript">

function getRequeteHttp()
{

var requeteHttp;

if (window.XMLHttpRequest)
{

requeteHttp=new XMLHttpRequest();
if (requeteHttp.overrideMimeType)
{
requeteHttp.overrideMimeType('text/xml');
}
}
else
{
if (window.ActiveXObject)
{
try { requeteHttp=new ActiveXObject("Msxml2.XMLHTTP"); }
catch(e) {
try {
requeteHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
requeteHttp=null;
}
}
}
}
return requeteHttp;
}


function envoyerRequete(url, debut, type)
{

var requeteHttp=getRequeteHttp();
if (requeteHttp==null)
{

alert("Impossible d'utiliser Ajax sur ce navigateur");

}
else
{

requeteHttp.open('POST',url,true);
requeteHttp.onreadystatechange= function() {recevoirReponse(requeteHttp);};
requeteHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');


requeteHttp.send('debutLib=' + escape(debut)+'&debutType='+escape(type));
//requeteHttp.send('debutType=' + escape(type));

}
return;

}

function recevoirReponse(requeteHttp)
{
if (requeteHttp.readyState==4)
{
if (requeteHttp.status==200)
{
traiterReponse(requeteHttp.responseText);
}
else
{
//alert("La requête ne s'est pas correctement exécutée");
}
}
}
function traiterReponse(reponse)
{
var i,nb,selectPdt;
var produits=reponse.split('/');
nb=produits.length;
selectPdt=document.getElementById("listePdt");
selectPdt.length=nb;
for (i=0; i<nb; i++)
{
selectPdt.options[i].text=produits[i];
}
}


</script>


</script>
</head>

<body>
Libellé : <input type="text" onkeyup="javascript:envoyerRequete('test11.php',this.value,document.getElementById('listeType').selectedIndex)">
<br /> Liste des produits : <br />

<select id="listePdt" size="4"> </select>

<select id="listeType" size="4" onchange=''>
<option id=1 value=1>categorie1</option>
<option id=2 value=2>categorie2</option>
</select>

</body>
</html> 
0
SaraAnna
 
re ^^

Ok voila c'est exact !! si nn pour le code ca marche mnt avc ca merci bc bc bc bc ^^ : et avec l'aide d'un ami j'ai pu récuperer mes parametres .Merci bc pour ton aide.


Page 1.php



<html>
<head>


<script type="text/javascript">

function getRequeteHttp()
{

var requeteHttp;

if (window.XMLHttpRequest)
{

requeteHttp=new XMLHttpRequest();
if (requeteHttp.overrideMimeType)
{
requeteHttp.overrideMimeType('text/xml');
}
}
else
{
if (window.ActiveXObject)
{
try { requeteHttp=new ActiveXObject("Msxml2.XMLHTTP"); }
catch(e) {
try {
requeteHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
requeteHttp=null;
}
}
}
}
return requeteHttp;
}




function envoyerRequete(url)
{

var requeteHttp=getRequeteHttp();
var depart=document.getElementById("VilleDepart").value;
var arrivee=document.getElementById("VilleArrivee").value;
if (requeteHttp==null)
{

alert("Impossible d'utiliser Ajax sur ce navigateur");

}
else
{

requeteHttp.open('POST',url,true);
requeteHttp.onreadystatechange= function() {recevoirReponse(requeteHttp);};
requeteHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');


requeteHttp.send('departLib=' + depart+'&arriveeLib=' + arrivee);


}
return;

}

function recevoirReponse(requeteHttp)
{
if (requeteHttp.readyState==4)
{
if (requeteHttp.status==200)
{
traiterReponse(requeteHttp.responseText);


}
else
{
alert("La requête ne s'est pas correctement exécutée");
}
}
}



function traiterReponse(reponse)
{

document.getElementById("km").value=reponse;
}
</script>




</head>



<body>

<input type="text" id="VilleDepart" />
<input type="text" id="VilleArrivee" onkeyup="javascript:envoyerRequete('Teste_Param.php')"/>
<!--<input type="button" onclick="javascript:envoyerRequete('Teste_Param.php')"/><br/>-->
<input id="km">


</body></html>

Page 2 .php

<?php
header("Cache-Control: no-cache, must-revalidate");
header('Content-Type: text/plain; charset=ISO-8859-1');

$cnx=mysql_connect('localhost','root','');


mysql_select_db('teste1',$cnx);

$req=mysql_query("select km from KM where depart = '".$_POST['departLib']."' AND arrivee = '".$_POST['arriveeLib']."'");

$pdt=mysql_fetch_assoc($req);

if ($pdt)
{
$resultat=$pdt['km'];
$pdt=mysql_fetch_assoc($req);
}
else
{
$resultat='';
}
while($pdt)
{

$resultat=$pdt['km'];
$pdt=mysql_fetch_assoc($req);
}
mysql_close($cnx);
echo $resultat;

?>
0

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

Posez votre question
Gremy87 Messages postés 360 Statut Membre 38
 
de rien ;)

n'oublies pas de mettre en résolu (petit lien près du titre de ton 1er post)
0
SaraAnna
 
okkkk :)
0