Utilisation d'une variable javascript dans un code PHP [Résolu]

Messages postés
51
Date d'inscription
vendredi 24 janvier 2003
Statut
Membre
Dernière intervention
14 décembre 2006
- - Dernière réponse : gowser le goserien
Messages postés
1
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
8 juillet 2005
- 8 juil. 2005 à 15:28
Bonjour à tous,

En fait, je ne savais pas si je devais poster ce message dans la section javascript ou bien PHP.

Bref, mon pb est de comparer une variable php et javascript. C'est le suivant :

Le code que je vais vous montrer sert à comparer deux listes déroulantes. Ces deux listes contiennent quatre équipes nationales dans certain groupe(En l'occurrence, il s'agit de la Coupe du Monde de football et ces pays sont dans le groupe un). Par ex, Lorsque je clique sur le Danemark dans la première liste déroulante, la deuxième liste affiche toutes les autres équipes du groupe sauf le Danemark. La ca marche !!

Le seul problème est lorque je passe le numéro du groupe en variable. La rien ne va plus. Je n'arrive pas à utiliser une vraiable javascript dans du PHP

voici le code :

<SCRIPT LANGUAGE="JavaScript">

function ModifierListe(cdpays) {

//A la variable groupe est affecté le groupe 1 (par ex)
var groupe=1;
lg = document.frmchoixpays.pays2.length;
// On vide la liste
for (i = lg - 1; i >= 0; i--) {
document.frmchoixpays.pays2.options[i] = null;
}
pays = document.frmchoixpays.pays1.selectedIndex;
<?php
//Affecter à la variable php id grope la valeur de la varaible groupe (javascript)
//Marche pas
$idgroupe=groupe;
// Génération des Items par Rubriques
$sql = "SELECT idpays, pays ";
$sql .= "FROM cmequipes ";
$sql .= "WHERE groupe=$idgroupe ";
$sql .= "ORDER BY pays";
$resultat = mysql_db_query($bdd, $sql);

$max_lignes = 0;
$option_max = '';

while ($enr = mysql_fetch_array($resultat)) {
$sql2 = "SELECT idpays, pays ";
$sql2 .= "FROM cmequipes ";
$sql2 .= "WHERE groupe=$idgroupe ";
$sql2 .= "ORDER BY pays";
$resultat2 = mysql_db_query($bdd, $sql2);

echo " if (document.frmchoixpays.pays1.options[pays].value == ".$enr[0].") {\n";
echo " document.frmchoixpays.pays2.length = ".(mysql_num_rows($resultat2)).";\n";
$cpt = 0;
while ($enr2 = mysql_fetch_array($resultat2)) {
if($enr[0]!=$enr2[0]) {
echo " document.frmchoixpays.pays2.options[".$cpt."].value = ".$enr2[0].";\n";
echo " document.frmchoixpays.pays2.options[".$cpt."].text = "".$enr2[1]."";\n";echo " if (cdpays ".$enr2[0].") document.frmchoixpays.pays2.options[".$cpt."].selected true;\n";
$cpt++;
if ($cpt > $max_lignes) $max_lignes = $cpt;
if (strlen($enr2[1]) > strlen($option_max)) $option_max = $enr2[1];
}
}
echo " }\n";

}
?>
}

</SCRIPT>

Merci de votre aide. Si vous ne comprenez, n'hésitez pas à demander plus de précision

Merci beaucoup :)
---------
le pastis est à consommer avec modération
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
51
Date d'inscription
vendredi 24 janvier 2003
Statut
Membre
Dernière intervention
14 décembre 2006
3
Merci
Bon j'y suis arrivé. En fait je crée un site de pronostique pour la prochaine coupe du monde. Donc il y a des pronostqiues sur les scores et etc... Mais je voualis faire une sorte de pronostique. C'est à dire que vous pouvez déterminer les deux premiers de chaque groupe. C'est là où j'avais le problème.

Pour chaque groupe, il y a deux listes déroulantes. La première pour le premier du groupe. Et lorsque vous cliquez sur le premier pays qualifie, la deuxième liste affiche les trois autres pays sans le pays que vous avez sélectionné dans la première liste box. Je vouslais que tout se fasse en "direct". du coup j'ai trouvé une solution. J'ai quelque peu modifié le code que je vous avais montré un peu plus haut.
Le voici :

La fonction javascript du onChange de la première liste box :
<SCRIPT LANGUAGE= "JavaScript">

function ModifierListe(cdpays) {
<?php
$count=0;
$query = mysql_query("select * from cmgroupe order by idgroupe asc");
while($val=mysql_fetch_array($query))
{
$groupe=$val[0];
$pays2="pays2".$count;
$pays1="pays1".$count;
?>
lg = document.frmchoixpays.<?php echo $pays2 ?>.length;
// On vide la liste
for (i = lg - 1; i >= 0; i--) {
document.frmchoixpays.<?php echo $pays2 ?>.options[i] = null;
}
pays = document.frmchoixpays.<?php echo $pays1 ?>.selectedIndex;
<?php
//$idgroupe=groupe;
// Génération des Items par Rubriques
$sql  = "SELECT idpays, pays ";
$sql .= "FROM cmequipes ";
$sql .= "WHERE groupe=$groupe ";
$sql .= "ORDER BY pays";
$resultat = mysql_db_query($bdd, $sql);

$max_lignes = 0;
$option_max = '';

while ($enr = mysql_fetch_array($resultat)) {
  $sql2  = "SELECT idpays, pays ";
  $sql2 .= "FROM cmequipes ";
  $sql2 .= "WHERE groupe=$groupe ";
  $sql2 .= "ORDER BY pays";
  $resultat2 = mysql_db_query($bdd, $sql2);

  echo "  if (document.frmchoixpays.".$pays1.".options[pays].value == ".$enr[0].") {\n";
  echo "    document.frmchoixpays.".$pays2.".length = ".(mysql_num_rows($resultat2)).";\n";
  $cpt = 0;
  while ($enr2 = mysql_fetch_array($resultat2)) {
if($enr[0]!=$enr2[0]) {
echo "    document.frmchoixpays.".$pays2.".options[".$cpt."].value = ".$enr2[0].";\n";
echo "    document.frmchoixpays.".$pays2.".options[".$cpt."].text  = "".$enr2[1]."";\n";echo "    if (cdpays ".$enr2[0].") document.frmchoixpays.".$pays2.".options[".$cpt."].selected true;\n";
$cpt++;
if ($cpt > $max_lignes) $max_lignes = $cpt;
if (strlen($enr2[1]) > strlen($option_max)) $option_max = $enr2[1];
}

}
  echo "  }\n";
}
$count=$count+1;
}
?>
}  

</SCRIPT>


Et l'affichage :
<?php
$count =0;
$query = mysql_query("select * from cmgroupe order by idgroupe asc");
while($val=mysql_fetch_array($query))
{
// ----------------------------------------------------------------------------
// Liste des premiers du groupe
// ----------------------------------------------------------------------------
$query1 = "select idpays, pays from cmequipes where groupe=$val[0] order by pays";
$sql = mysql_db_query($bdd, $query1);
echo "<form method='post' name='frmchoixpays'>";
$pays1="pays1".$count;
echo " <select name='".$pays1."' onChange='ModifierListe(-1)'>\n";
while ($enr = mysql_fetch_array($sql)) {
  echo "<option value='".$enr[0]."'";
  if ($pays1 == $enr[0]) echo " selected";
  echo ">".htmlspecialchars($enr[1])."</option>\n";
}
echo "</select> \n";

// ----------------------------------------------------------------------------
// Liste des deuxièmes du groupe
// ----------------------------------------------------------------------------
$pays2="pays2".$count;
echo " <select name='".$pays2."'>\n";
for ($cpt = 0; $cpt < $max_lignes; $cpt++)
  echo "<option>".$option_max."</option>\n";
echo "</select> \n";
if (!isset($pays2)) $pays2 = -1;
echo "<script language='JavaScript'>\n;ModifierListe(".$pays2.");\n</script>\n";
// ----------------------------------------------------------------------------
echo "

";
$count=$count+1;
}
echo "

";

echo "</form>";
?>


En espérant que cela vous aide pour plus tard

Bonne journée
---------
le pastis est à consommer avec modération

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de bonjovi51
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
26
0
Merci
[bonjour, br br table border=0 cellspacing=0 cellpadding=4 bgcolor=#E0E0E0 tr td class=code br var groupe=1 br < ?php br $idgroupe=groupe br /td /tr /table br br ça ne peut pas marcher comme ça : br br et php sont 2 langages différents, br ils ne tournent pas sur la même machine, br ils ne se déroulent pas en même temps. br br pour passer une information depuis / br html vers php, il faut relancer le php avec un br formulaire ou par l url. php gère alors br $_POST[ variable bonjour, br br table border=0 cellspacing=0 cellpadding=4 bgcolor=#E0E0E0 tr td class=code br var groupe=1 br < ?php br $idgroupe=groupe br /td /tr /table br br ça ne peut pas marcher comme ça : br br et php sont 2 langages différents, br ils ne tournent pas sur la même machine, br ils ne se déroulent pas en même temps. br br pour passer une information depuis / br html vers php, il faut relancer le php avec un br formulaire ou par l url. php gère alors br $_POST[ variable] ou $_GET["variableSite] [[mailto:marcelBultez@Tiscali.fr Mail]]
Commenter la réponse de cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
26
0
Merci
#@!§%, encore des soucis
"d'affichage", je reposte :

var groupe=1;
<?php
$idgroupe=groupe;

ça ne peut pas marcher comme ça :

javascript et php sont 2 langages différents,
ils ne tournent pas sur la même machine,
ils ne se déroulent pas en même temps.

pour passer une information depuis javascript/
html vers php, il faut relancer le php avec un
formulaire ou par l'url. php gère alors
$_POST["variable"] ou $_GET["variable"] selon
l'appel.
Commenter la réponse de cs_bultez
Messages postés
51
Date d'inscription
vendredi 24 janvier 2003
Statut
Membre
Dernière intervention
14 décembre 2006
0
Merci
Si je comprned bien je ne peux pas faire ces comparaisons de variables en une seule étape.

Pour bien faire il faudrait que je fasse ca qu'avec du javscript. J'ai peut-être une idée en tête !!

Je vous la ferait part si j'y arrive.

Merci à toi pour ton aide, bultez :) ;)
---------
le pastis est à consommer avec modération
Commenter la réponse de bonjovi51
Messages postés
51
Date d'inscription
vendredi 24 janvier 2003
Statut
Membre
Dernière intervention
14 décembre 2006
0
Merci
Bon j'y suis arrivé. En fait je crée un site de pronostique pour la prochaine coupe du monde. Donc il y a des pronostqiues sur les scores et etc... Mais je voualis faire une sorte de pronostique. C'est à dire que vous pouvez déterminer les deux premiers de chaque groupe. C'est là où j'avais le problème.

Pour chaque groupe, il y a deux listes déroulantes. La première pour le premier du groupe. Et lorsque vous cliquez sur le premier pays qualifie, la deuxième liste affiche les trois autres pays sans le pays que vous avez sélectionné dans la première liste box. Je vouslais que tout se fasse en "direct". du coup j'ai trouvé une solution. J'ai quelque peu modifié le code que je vous avais montré un peu plus haut.
Le voici :

La fonction javascript du onChange de la première liste box :
<SCRIPT LANGUAGE= "JavaScript">

function ModifierListe(cdpays) {
<?php
$count=0;
$query = mysql_query("select * from cmgroupe order by idgroupe asc");
while($val=mysql_fetch_array($query))
{
$groupe=$val[0];
$pays2="pays2".$count;
$pays1="pays1".$count;
?>
lg = document.frmchoixpays.<?php echo $pays2 ?>.length;
// On vide la liste
for (i = lg - 1; i >= 0; i--) {
document.frmchoixpays.<?php echo $pays2 ?>.options[i] = null;
}
pays = document.frmchoixpays.<?php echo $pays1 ?>.selectedIndex;
<?php
//$idgroupe=groupe;
// Génération des Items par Rubriques
$sql  = "SELECT idpays, pays ";
$sql .= "FROM cmequipes ";
$sql .= "WHERE groupe=$groupe ";
$sql .= "ORDER BY pays";
$resultat = mysql_db_query($bdd, $sql);

$max_lignes = 0;
$option_max = '';

while ($enr = mysql_fetch_array($resultat)) {
  $sql2  = "SELECT idpays, pays ";
  $sql2 .= "FROM cmequipes ";
  $sql2 .= "WHERE groupe=$groupe ";
  $sql2 .= "ORDER BY pays";
  $resultat2 = mysql_db_query($bdd, $sql2);

  echo "  if (document.frmchoixpays.".$pays1.".options[pays].value == ".$enr[0].") {\n";
  echo "    document.frmchoixpays.".$pays2.".length = ".(mysql_num_rows($resultat2)).";\n";
  $cpt = 0;
  while ($enr2 = mysql_fetch_array($resultat2)) {
if($enr[0]!=$enr2[0]) {
echo "    document.frmchoixpays.".$pays2.".options[".$cpt."].value = ".$enr2[0].";\n";
echo "    document.frmchoixpays.".$pays2.".options[".$cpt."].text  = "".$enr2[1]."";\n";echo "    if (cdpays ".$enr2[0].") document.frmchoixpays.".$pays2.".options[".$cpt."].selected true;\n";
$cpt++;
if ($cpt > $max_lignes) $max_lignes = $cpt;
if (strlen($enr2[1]) > strlen($option_max)) $option_max = $enr2[1];
}

}
  echo "  }\n";
}
$count=$count+1;
}
?>
}  

</SCRIPT>


Et l'affichage :
<?php
$count =0;
$query = mysql_query("select * from cmgroupe order by idgroupe asc");
while($val=mysql_fetch_array($query))
{
// ----------------------------------------------------------------------------
// Liste des premiers du groupe
// ----------------------------------------------------------------------------
$query1 = "select idpays, pays from cmequipes where groupe=$val[0] order by pays";
$sql = mysql_db_query($bdd, $query1);
echo "<form method='post' name='frmchoixpays'>";
$pays1="pays1".$count;
echo " <select name='".$pays1."' onChange='ModifierListe(-1)'>\n";
while ($enr = mysql_fetch_array($sql)) {
  echo "<option value='".$enr[0]."'";
  if ($pays1 == $enr[0]) echo " selected";
  echo ">".htmlspecialchars($enr[1])."</option>\n";
}
echo "</select> \n";

// ----------------------------------------------------------------------------
// Liste des deuxièmes du groupe
// ----------------------------------------------------------------------------
$pays2="pays2".$count;
echo " <select name='".$pays2."'>\n";
for ($cpt = 0; $cpt < $max_lignes; $cpt++)
  echo "<option>".$option_max."</option>\n";
echo "</select> \n";
if (!isset($pays2)) $pays2 = -1;
echo "<script language='JavaScript'>\n;ModifierListe(".$pays2.");\n</script>\n";
// ----------------------------------------------------------------------------
echo "

";
$count=$count+1;
}
echo "

";

echo "</form>";
?>


En espérant que cela vous aide pour plus tard

Bonne journée
---------
le pastis est à consommer avec modération
Commenter la réponse de bonjovi51
Messages postés
51
Date d'inscription
vendredi 24 janvier 2003
Statut
Membre
Dernière intervention
14 décembre 2006
0
Merci
Bon j'y suis arrivé. En fait je crée un site de pronostique pour la prochaine coupe du monde. Donc il y a des pronostqiues sur les scores et etc... Mais je voualis faire une sorte de pronostique. C'est à dire que vous pouvez déterminer les deux premiers de chaque groupe. C'est là où j'avais le problème.

Pour chaque groupe, il y a deux listes déroulantes. La première pour le premier du groupe. Et lorsque vous cliquez sur le premier pays qualifie, la deuxième liste affiche les trois autres pays sans le pays que vous avez sélectionné dans la première liste box. Je vouslais que tout se fasse en "direct". du coup j'ai trouvé une solution. J'ai quelque peu modifié le code que je vous avais montré un peu plus haut.
Le voici :

La fonction javascript du onChange de la première liste box :
<SCRIPT LANGUAGE= "JavaScript">

function ModifierListe(cdpays) {
<?php
$count=0;
$query = mysql_query("select * from cmgroupe order by idgroupe asc");
while($val=mysql_fetch_array($query))
{
$groupe=$val[0];
$pays2="pays2".$count;
$pays1="pays1".$count;
?>
lg = document.frmchoixpays.<?php echo $pays2 ?>.length;
// On vide la liste
for (i = lg - 1; i >= 0; i--) {
document.frmchoixpays.<?php echo $pays2 ?>.options[i] = null;
}
pays = document.frmchoixpays.<?php echo $pays1 ?>.selectedIndex;
<?php
//$idgroupe=groupe;
// Génération des Items par Rubriques
$sql  = "SELECT idpays, pays ";
$sql .= "FROM cmequipes ";
$sql .= "WHERE groupe=$groupe ";
$sql .= "ORDER BY pays";
$resultat = mysql_db_query($bdd, $sql);

$max_lignes = 0;
$option_max = '';

while ($enr = mysql_fetch_array($resultat)) {
  $sql2  = "SELECT idpays, pays ";
  $sql2 .= "FROM cmequipes ";
  $sql2 .= "WHERE groupe=$groupe ";
  $sql2 .= "ORDER BY pays";
  $resultat2 = mysql_db_query($bdd, $sql2);

  echo "  if (document.frmchoixpays.".$pays1.".options[pays].value == ".$enr[0].") {\n";
  echo "    document.frmchoixpays.".$pays2.".length = ".(mysql_num_rows($resultat2)).";\n";
  $cpt = 0;
  while ($enr2 = mysql_fetch_array($resultat2)) {
if($enr[0]!=$enr2[0]) {
echo "    document.frmchoixpays.".$pays2.".options[".$cpt."].value = ".$enr2[0].";\n";
echo "    document.frmchoixpays.".$pays2.".options[".$cpt."].text  = "".$enr2[1]."";\n";echo "    if (cdpays ".$enr2[0].") document.frmchoixpays.".$pays2.".options[".$cpt."].selected true;\n";
$cpt++;
if ($cpt > $max_lignes) $max_lignes = $cpt;
if (strlen($enr2[1]) > strlen($option_max)) $option_max = $enr2[1];
}

}
  echo "  }\n";
}
$count=$count+1;
}
?>
}  

</SCRIPT>


Et l'affichage :
<?php
$count =0;
$query = mysql_query("select * from cmgroupe order by idgroupe asc");
while($val=mysql_fetch_array($query))
{
// ----------------------------------------------------------------------------
// Liste des premiers du groupe
// ----------------------------------------------------------------------------
$query1 = "select idpays, pays from cmequipes where groupe=$val[0] order by pays";
$sql = mysql_db_query($bdd, $query1);
echo "<form method='post' name='frmchoixpays'>";
$pays1="pays1".$count;
echo " <select name='".$pays1."' onChange='ModifierListe(-1)'>\n";
while ($enr = mysql_fetch_array($sql)) {
  echo "<option value='".$enr[0]."'";
  if ($pays1 == $enr[0]) echo " selected";
  echo ">".htmlspecialchars($enr[1])."</option>\n";
}
echo "</select> \n";

// ----------------------------------------------------------------------------
// Liste des deuxièmes du groupe
// ----------------------------------------------------------------------------
$pays2="pays2".$count;
echo " <select name='".$pays2."'>\n";
for ($cpt = 0; $cpt < $max_lignes; $cpt++)
  echo "<option>".$option_max."</option>\n";
echo "</select> \n";
if (!isset($pays2)) $pays2 = -1;
echo "<script language='JavaScript'>\n;ModifierListe(".$pays2.");\n</script>\n";
// ----------------------------------------------------------------------------
echo "

";
$count=$count+1;
}
echo "

";

echo "</form>";
?>


En espérant que cela vous aide pour plus tard

Bonne journée
---------
le pastis est à consommer avec modération
Commenter la réponse de bonjovi51
Messages postés
1
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
8 juillet 2005
3
0
Merci
Pour ton information j'ai réalisé un tutoriel sur la simulation d'accès à une base de données... ce tutoriel te pourra etre utile.
Commenter la réponse de gowser le goserien