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);
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
[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]]
#@!§%, 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.
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
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