Utilisation d'une variable javascript dans un code PHP

Résolu
bonjovi51 Messages postés 51 Date d'inscription vendredi 24 janvier 2003 Statut Membre Dernière intervention 14 décembre 2006 - 13 déc. 2004 à 02:29
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

7 réponses

bonjovi51 Messages postés 51 Date d'inscription vendredi 24 janvier 2003 Statut Membre Dernière intervention 14 décembre 2006
17 déc. 2004 à 15:51
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
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 déc. 2004 à 09:26
[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]]
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 déc. 2004 à 09:30
#@!§%, 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.
0
bonjovi51 Messages postés 51 Date d'inscription vendredi 24 janvier 2003 Statut Membre Dernière intervention 14 décembre 2006
13 déc. 2004 à 13:49
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
0

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

Posez votre question
bonjovi51 Messages postés 51 Date d'inscription vendredi 24 janvier 2003 Statut Membre Dernière intervention 14 décembre 2006
17 déc. 2004 à 15:50
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
0
bonjovi51 Messages postés 51 Date d'inscription vendredi 24 janvier 2003 Statut Membre Dernière intervention 14 décembre 2006
17 déc. 2004 à 15:50
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
0
gowser le goserien Messages postés 1 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 8 juillet 2005 29
8 juil. 2005 à 15:28
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.
0
Rejoignez-nous