Varaiable dans un sélect

Varaiable dans un sélect - PHP - Programmation

Marsh Posté le 18-11-2007 à 21:31:54    

Bonjour,
 
J'ai un select pour permettre de sélectionner l'année désirée. Par défaut, c'est 2007 qui s'affiche puisque mon tri est descendant.
 
Affichage de l'année:
 

Code :
  1. $r_an = "SELECT distinct an FROM ATS_statut where type='CA' order by an desc";
  2.  $res = mysql_query($r_an);
  3.  echo '<p align="center"><select name="ch_an">';
  4.  while($val=mysql_fetch_array($res)) {
  5.  echo "<option>".$val["an"]."</option>\n";
  6.  }
  7.  echo '</select></p>';


 
Quel est le nom de la variable que je dois mettre dans le sélect 2uivant (à la place de '2007' ?

Code :
  1. $r_ca = mysql_query("SELECT * FROM `ATS_statut`
  2. LEFT JOIN ATS_membre ON ATS_statut.passeport = ATS_membre.passeport
  3. where ATS_statut.actif='O' and ATS_statut.type='CA' and ATS_statut.an='2007'
  4. order by ATS_membre.nom,ATS_membre.prenom" );


 
Merci!

Reply

Marsh Posté le 18-11-2007 à 21:31:54   

Reply

Marsh Posté le 18-11-2007 à 21:37:29    

j'ai pas trop capté :??:
 
en fait tu récuperes l'année avec ta premiere query, et tu veux te servir de ce résultat pour la deuxieme (and ATS_statut.an='2007') ?
 
paske tu si récups l'année ds $val["an"], tu peux t'en servir apres nan ?


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 18-11-2007 à 22:06:29    

Je veux remplacer ATS_statut.an='2007')
 
Merci!

Reply

Marsh Posté le 18-11-2007 à 22:37:04    

ben ATS_statut.an = $val["an"] que tu récups avant


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 18-11-2007 à 23:50:59    

Je reçois cette erreur: Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/vhosts/ats3r.org/httpdocs/ca2.php on line 58
 
  $r_ca = mysql_query("SELECT * FROM `ATS_statut`
LEFT JOIN ATS_membre ON ATS_statut.passeport = ATS_membre.passeport
where ATS_statut.actif='O' and ATS_statut.type='CA' and ATS_statut.an=$val["an"] order by ATS_membre.nom,ATS_membre.prenom" );

Reply

Marsh Posté le 19-11-2007 à 00:47:13    

ben c normal ton select est dans des doubles-quotes et ta variable aussi ...

 

met ca :
... and ATS_statut.an=" . $val["an"] . " order by ...


Message édité par SICKofitALL le 19-11-2007 à 00:47:54

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 19-11-2007 à 02:54:25    

ça ne fonctionne pas: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/ats3r.org/httpdocs/ca2.php on line 67
 
J'ai essayé ceci: echo $val["an"]; et le résultat est vide.

Reply

Marsh Posté le 19-11-2007 à 07:51:30    

tu peux me filer ton code steuplait ? genre la partie où tu fais tes selects ?


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 19-11-2007 à 12:57:50    

<div class="framebloc">
  <?php
 
  $r_an = "SELECT distinct an FROM ATS_statut where type='CA' order by an desc";
  $res = mysql_query($r_an);
  echo '<p align="center"><select name="ch_an">';
  while($val=mysql_fetch_array($res)) {
  echo "<option>".$val["an"]."</option>\n";
  }
  echo '</select></p>';
   
  //$an=$val["an"];
  //echo $an;
  echo $val["an"];
  $r_ca = mysql_query("SELECT * FROM `ATS_statut`
LEFT JOIN ATS_membre ON ATS_statut.passeport = ATS_membre.passeport
where ATS_statut.actif='O' and ATS_statut.type='CA' and ATS_statut.an=" . $val["an"] . " order by ATS_membre.nom,ATS_membre.prenom" );
 
    echo '<table align="center" border="1" cellpadding="3">';
  echo '<caption><h2>Conseil d\'administration</h2></caption>';
    echo '<tr>';
    echo '<th width="175">Identification</th>';
    echo '<th>Poste occupé</th>';
    echo '<th>Note</th>';
    echo '</tr>';
    while ($var = mysql_fetch_array($r_ca) )
    {

Reply

Marsh Posté le 19-11-2007 à 13:11:49    

et l'erreur concernant la ressource invalide apparait dans la ligne "while ($var = mysql_fetch_array($r_ca))" je pense
 
en fait étant donnée que les fameux $val['an'] proviennent d'une boucle, ya des chances que lorsque tu réutilises la variable $val, elle n'est plus aucune signification.
 
Mais tu peux mettre les valeurs retournées dans ton premier select dans un tableau :

Code :
  1. $tableau = array ();
  2. while ($val = mysql_fetch_array ($res))
  3. {
  4. echo "<option>" . $val["an"] . "</option>\n";
  5. $tableau[] = $val["an"];
  6. }


 
Ensuite (si j'ai bien compris ce que tu veux faire, ce n'est pas tres clair ...) si tu veux lancer ton deuxieme select en fonction des années retournées par le premier, tu dois boucler sur le tableau et construire ta query dynamiquement :

Code :
  1. for ($i = 0; $i < count ($tableau); $i++)
  2. {
  3.   $r_ca = mysql_query ("SELECT * FROM `ATS_statut` LEFT JOIN ATS_membre ON ATS_statut.passeport = ATS_membre.passeport
  4. where ATS_statut.actif='O' and ATS_statut.type='CA' and ATS_statut.an=" . $tableau[i] . " order by ATS_membre.nom,ATS_membre.prenom" );
  5.     echo '<table align="center" border="1" cellpadding="3">';
  6.   ...
  7.   ...
  8.   while ($var = mysql_fetch_array ($r_ca))
  9.   {
  10.     ...
  11.     ...
  12.   }
  13. }


 
Bonne chance


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 19-11-2007 à 13:11:49   

Reply

Marsh Posté le 19-11-2007 à 17:15:18    

Mon objectif au départ était de récupérer la valeur du premier sélect pour l'appliquer dans le 2e sélect.

Reply

Marsh Posté le 19-11-2007 à 17:16:55    

si tu récuperes une seule valeur sauvegarde là dans une variable et utilise là dans le second, sinon boucle sur le nombre de valeurs retournées.


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 19-11-2007 à 17:27:49    

Ma liste déroulante (1er sélect) comporte l'ensemble des années disponibles et maintenant les gens voudraient que la page se mettre à jour pour afficher les résultats d'une nouvelle année.
 
Pour cela, je voulais récupérer l'année sélectionné et afficher par la suite mais je ne suis pas capable de récupérer l'année choisie.

Reply

Marsh Posté le 19-11-2007 à 17:35:26    

J'ai fait afficher le count du tableau et il est vide.
 
  $tableau = array ();
    while ($val = mysql_fetch_array ($res))
    {
    echo "<option>" . $val["an"] . "</option>\n";
    $tableau[] = $val["an"];
    }
  echo count ($tableau);

Reply

Marsh Posté le 19-11-2007 à 17:52:59    

fait un print_r dessus


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 19-11-2007 à 18:36:20    

Résultat:
 
Array ( )
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/ats3r.org/httpdocs/ca2.php on line 76

Reply

Marsh Posté le 19-11-2007 à 19:26:22    

et donc tu attends que je te fournisse tout le code au fur et à mesure en fait ? :??:
 
Pour ce que tu veux faire, tu peux générer une liste d'années dans une liste déroulante (ton premier select), et recharger la page en passant en parametre d'url l'année choisie.
Donc ton selon select ne dépendrait plus du premier mais du choix par l'user. Genre s'il n'a rien choisi (donc le param est vide) tu ne généres pas de second select, sinon oui.


---------------
We deserve everything that's coming...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed