[RESOLU] recupérer valeur liste deroulante sur la même page

Avatar du membre
ViPHP
ViPHP | 3008 Messages

16 mai 2006, 11:56

Dans ta boucle, en plus de
if ($mat <> '') {...}
il faut quand même que tu rajoutes la valeur de l'id récupérée non ?
if($mat!="" && $mat==ton_id) {}
non ?

sabine45
Invité n'ayant pas de compte PHPfrance

16 mai 2006, 12:02

il correspondrai a quoi le ton_id ?

moi ensuite jutilise dans ma requete $mat

mais ma fonction ne marche pas :(

ça ne prend pas la valeur de ma variable
$mat=document.enreg.perso.value;

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 mai 2006, 12:02

P'tite remarque :

Code : Tout sélectionner

function ChangeValeur(formulaire) { $mat=document.enreg.perso.value; }


$mat : c'est du php, exécuté côté serveur avant de générer la page
document.enreg.perso.value : c'est du javascript exécuté côté client après que la page ait été généré...

Y a peu de chance que ce joyeux mélange des deux langages fonctionne :)

Php peut générer du code javascript, et javascript peut envoyer des données au serveur, mais c'est à peu près la seule interaction que tu peux avoir entre les deux.

sabine45
Invité n'ayant pas de compte PHPfrance

16 mai 2006, 12:04

ok je me disai bien aussi, comment je dois faire dans se cas ?
Il faut bien que je mette
document.enreg.perso.value;
dans une variable ?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

16 mai 2006, 12:04

+1 ryle ;) j'avais pas fait attention.

timide
Invité n'ayant pas de compte PHPfrance

16 mai 2006, 12:26

Moi je dirait
function Changevaleur(formulaire)
{
    var mat =document.enreg.perso.value;
    window.location.href = "nomdetapage.php?mat="+mat;
}
Comme sa apres tu peut le recupe avec dans un $request['mat']

Mon idée est bonne a votre avis?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 mai 2006, 12:42

C'est le plus simple et le plus sage en effet... un minimum de javascript pour passer la valeur sélectionnée à php et lui laisser faire le reste du traitement :)

Quelques p'tites modif toutefois :

Code : Tout sélectionner

function Changevaleur() // l'attribut n'est pas utilisé, alors pourquoi le garder ? :) { // certains navigateur n'acceptent pas l'accès direct au value d'un select il vaut donc mieux suivre le dom pour préciser que l'on veut la valeur de l'option choisie : var mat = document.enreg.perso.options[document.enreg.perso.selectedIndex].value; window.location.href = "nomdetapage.php?mat="+mat; }
Cela dit, l'usage d'une fonction n'est pas obligatoire et tout ceci peut se résumer directement dans le onChange du select :

Code : Tout sélectionner

<select ... onChange="window.location.href = 'nomdetapage.php?mat=' + this.options[this.selectedIndex].value;">

sabine45
Invité n'ayant pas de compte PHPfrance

16 mai 2006, 13:44

bon je sais je commence a être chiante!!!
donc j'ai essayer les 2 méthodes la premiere, ça me met un petit panneau orange avec le point dexclamation (erreur quoi) donc ça ne marche pas. Et la deuxieme, ça me fait rien du tout.
De plus ça ne m'envoie pas la valeur dans l'url

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 mai 2006, 13:49

Tu dois pouvoir l'essayer comme ça aussi, mais je ne pense pas que cela change grand chose :

Code : Tout sélectionner

<select ... onChange="document.location='nomdetapage.php?mat=' + this.options[this.selectedIndex].value;">
sinon renvoi nous un p'tit bout de code que l'on voit ce que tu as fait :)

(quand tu double-clic sur le point d'exclamation lorsqu'il y a une erreur javascript, il devrait t'afficher une boite avec le(s) message(s) d'erreur.. ca peut être interessant d'y jeter un coup d'oeil également :))

timide
Invité n'ayant pas de compte PHPfrance

16 mai 2006, 13:50

Tu peux nous envoyer ton code stp (html + javascript)
Merci

sabine45
Invité n'ayant pas de compte PHPfrance

16 mai 2006, 14:21

<html>
<head>

<title>Les grands comptes</title>
<script language="javascript">
function choisir(truc, truc2, truc3, truc4)
{ 
window.opener.document.enreg.mat.value= truc;
window.opener.document.enreg.gc.value= truc2;

self.close();}

function Changevaleur() // l'attribut n'est pas utilisé, alors pourquoi le garder ? :)
{
// certains navigateur n'acceptent pas l'accès direct au value d'un select il vaut donc mieux suivre le dom pour préciser que l'on veut la valeur de l'option choisie :
    var matgc = document.enreg.grcpt.options[document.enreg.grcpt.selectedIndex].value;

    window.location.href = "grcpt2.php?matgc="+matgc;
}
</script>
<style type="text/css">
<!--
.Style1 {font-family: Tahoma}
-->
</style>
</head> 
<body>

<span class="Style1">
<?php

include_once("connexion.php");
  
?>

</span>
<p align="left" class="Style1">&nbsp;</p>
<form name="enreg" method="post" action="">
<?php
 $Req = mysql_query("SELECT nom_gc, matricule_gc FROM grand_compte where nom_gc<>''ORDER BY nom_gc"); 
 $ld = "<SELECT NAME='grcpt' onChange='document.location='grcpt2.php?matgc=' + this.options[this.selectedIndex].value;'>";
$ld .= "<OPTION VALUE=0>Choisissez</OPTION>";
// On boucle sur la table
while ( $row = mysql_fetch_array($Req)) {
    $nom = $row["nom_gc"];
    $mat = $row["matricule_gc"];
    $ld .= "<OPTION VALUE='$mat'>$nom</OPTION>";
}
$ld .= "</SELECT>";
?>
<?php
print $ld;;
 if(isset($_GET['matgc']))
{$matgc=$_GET['matgc'];
} 
?>
</form>
<?php

if ($matgc <> '') { ?>
<p align="left" class="Style1">&nbsp;    </p>
<p class="Style1"></p>
<p class="Style1"></p>
<table width="100%"  border="1">
  <tr align="center" valign="middle">
    <td width="9%" class="Style1">Matricule du site </td>
    <td width="17%" class="Style1">Adresse</td>
    <td width="6%" class="Style1">Code postal </td>
    <td width="21%" class="Style1">Ville</td>
  </tr>
<?php

// on crée la requête SQL
$reqsql2 = mysql_query("SELECT `lieux`.`matricule_lieux`, `lieux`.`ad_rue_lieux`, `cp_ville`, `ville`, `nom_gc`, lieux.site
from `lieux`, `ville`, `grand_compte`
where `grand_compte`.`matricule_gc`=`lieux`.`matricule_gc`
and `lieux`.`code_ville`=`ville`.`code_ville`
and `lieux`.`matricule_gc`='$grcpt' order by `ville`");



while ($rep = @mysql_fetch_object($reqsql2)) {
			$mat = $rep->matricule_lieux;
    		$ad = $rep->ad_rue_lieux;
    		$cp = $rep->cp_ville;
    		$vil = $rep->ville;
    		$gc = $rep->nom_gc;
  			$sit= $rep->site;
?>
  
  <tr align="center" valign="middle">
  
    <td class="Style1"><a href="#" onClick="javascript:choisir('<?php echo $mat; ?>' , '<?php echo $gc; ?>' , '<?php echo $ad." ".$cp." ".$vil ?>', '<?php echo $sit; ?>' )" ><?php echo $mat; ?></a></td>
    <td class="Style1"><?php echo $ad ?></td>
    <td class="Style1"><?php echo $cp ?></td>
    <td class="Style1"><?php echo $vil ?></td>
  </tr>

<?php
}
?>
</table>
<?php
}
?>
<div align="center" class="Style1"></div>
</body>
</html>

j'ai changé quelque trucs sans importance.

j'ai testé aussi la derniere solution de Ryle mais toujours l'erreur d'afficher

quand j'ai double cliquer ça m'affiche :

certains problèmes pourraient empêcher cette page Web de s'afficher ou de fonctionner correctement.
après ça m'affiche un problème de syntaxe ligne 37
et ligne 37 j'ai :
<p align="left" class="Style1">&nbsp;</p>

sabine45
Invité n'ayant pas de compte PHPfrance

16 mai 2006, 14:36

bon pour lerreur , jai effacer la ligne et ça n e me marque plus lerreur mais ça ne fonctionne toujours pas.
Donc j'ai refais la premiere solution et le message d'erreur est ligne 33 objet attendu

ligne 33 c'est juste après include_once("connexion.php");

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

16 mai 2006, 14:41

dans ton onChange t'as oublié la propriété "href" de "location" :
corrigé :
....
$ld = "<SELECT NAME='grcpt' onChange='document.location.href='grcpt2.php?matgc=' + this.options[this.selectedIndex].value;'>";
...
Mais avec ça tu réinvente un submit pour rien. tu peux déclencher le submit par onChange sans demander un chargement par "location.href" puisque t'as un formulaire.
Corrigé:
<form name="enreg" method="post" > 
<?php 
....
....
$ld = "<SELECT NAME='grcpt' onChange='enreg.submit();'>"; 
....
....
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

sabine45
Invité n'ayant pas de compte PHPfrance

16 mai 2006, 14:58

j'ai essayé les deux méthodes,
la première ça ne me marque pas de message d'erreur mais fonctionne pas
la deuxième, quand je choisi un enregistrement reinitialise aussitot la liste et reviens sur choississez

timide
Invité n'ayant pas de compte PHPfrance

16 mai 2006, 15:16

Pour sa 1er solution je verait plutot sa :
$ld = "<SELECT NAME='grcpt' onChange=\"document.location.href='grcpt2.php?matgc=' + this.options[this.selectedIndex].value;\">"; 
Pour la 2e sa:
<form name="enreg" action="grcpt2.php" method="post" >
Mais je me trompe peut etre!