Liste déroulante n'affiche qu'une ligne php

Résolu
fauve1512 Messages postés 208 Statut Membre -  
fauve1512 Messages postés 208 Statut Membre -
Bonjour,

J'ai une liste déroulante dans ma page, quand je fait un choix cela ne m'affiche qu'une ligne alors qu'il devrait en avoir plusieurs...

voici mon code pour la liste déroulante :
<form name="service" method="post" action="index.php?idpage=3">
<select name="service" onchange="submit" >
<option selected> Choisissez un service</option>
<?php
$requete = "SELECT uf,service FROM services order by service";
$req = mysql_query($requete) or die( mysql_error() ) ;

while ($donnees=mysql_fetch_array($req))
{
$uf = $donnees['uf'];
$service = $donnees['service'];
?>
<!-- affichage de la liste déroulante -->
<option value="<?php echo $service ?>" <?php if ($service == $v_service) { echo 'Selected' ; } ?> ><?php echo $uf." ".$service?></option>
<?php
}
?>
</select>
<input type="submit" value="Rechercher" />
</form>

Cela marche très bien..
C'est la deuxième partie qui pose problème
code affichage du choix
<?php
if ( isset($_POST['service'])) { $service = $_POST['service'];

$requete2 = "SELECT COUNT(uf) AS nb,uf,service,cartouche,sortie_stock,date_sortie FROM servcart WHERE uf='$uf' group by uf,service,cartouche,sortie_stock,date_sortie";
$req2 = mysql_query($requete2) or die( mysql_error() ) ;

while ($donnees2=mysql_fetch_array($req2))
{
?>
<tr>
<td><?php echo $donnees2 ['uf']; ?></td>
<td><?php echo $donnees2 ['service']; ?></td>
<td><?php echo $donnees2 ['cartouche']; ?></td>
<td><?php echo $donnees2 ['date_sortie']; ?></td>
<td><?php echo $donnees2 ['sortie_stock']; ?></td>
</tr>

<?php
}
}
?>
Ma requête pour le deuxième code, je l'ai testé sous mysql et cela me renvoye bien ex: uf='4517' me donne bien 5 lignes...
Merci par avance pour votre aide.

3 réponses

Résumé de la discussion

Dans le code, la liste déroulante est fonctionnelle mais l’affichage des résultats dans un tableau ne renvoie qu’une ligne, alors que la requête SQL devrait produire plusieurs enregistrements. La solution propose d’utiliser une variable séparée pour la valeur sélectionnée, d’alimenter le menu avec SELECT DISTINCT et, ensuite, d’interroger servcart avec WHERE service='$service' pour renvoyer toutes les occurrences correspondantes. Plusieurs remarquent que la requête initiale utilisant un regroupement et un filtre sur uf peut limiter l’affichage, d’où l’intérêt de sélectionner le service et d’itérer sur toutes les lignes correspondantes. En pratique, il est préconisé de vérifier la valeur POST 'service' avant d’exécuter la requête et d’employer SELECT DISTINCT afin d’assurer un filtrage correct des lignes affichées.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. Melooo Messages postés 1476 Statut Membre 84
     
    Salut,
    c'est re moi ;)
    pour ta deuxième partie de code, rien ne s'affiche ?
    Es tu sur de rentre dans les conditions de ton if (pour le savoir juste après l'accolade tu fais un echo bidon)
    0
  2. fauve1512 Messages postés 208 Statut Membre 1
     
    coucou Melooo,
    Si il m'affiche mais qu'une ligne dans mon tableau alors que c'est plus que je devrais avoir
    0
    1. Melooo Messages postés 1476 Statut Membre 84
       
      Es tu sur d'avoir 5 ligne pour ton numéro uf ?
      Essayes de remplacer ca :
      <td><?php echo $donnees2 ['uf']; ?></td> 
      

      par :
      <td><?php echo $donnees2[0]; ?></td> 
      

      et pareil pour les autres, en rajoutant +1 à chaque fois
      0
  3. fauve1512 Messages postés 208 Statut Membre 1
     
    j'ai fais un echo bonjour et cela s'affiche avec une ligne et en plus je viens de remarquer que quand je sélectionne ex archives dans la liste déroulantes cela m'affiche urgence ..SUPER ;-)
    0
    1. Melooo Messages postés 1476 Statut Membre 84
       
      Tu dois avoir un souci dans ta requête SQL
      0
    2. fauve1512 Messages postés 208 Statut Membre 1
       
      c'est ce que j'essayais de voir si dans le where je mets service='$service' il me renvoye le choix mais ne m'affiche toujours qu'une ligne
      0
    3. fauve1512 Messages postés 208 Statut Membre 1
       
      pourtant la requête je l'ai testé et cela fonctionne..???
      0
    4. Melooo Messages postés 1476 Statut Membre 84
       
      Met les 5 lignes que ca t'affiche quand tu es dans ta base données,
      et la ligne qui t'affiche sur ton navigateur
      0
    5. fauve1512 Messages postés 208 Statut Membre 1
       
      base de donnée :
      SELECT COUNT(uf) AS nb,uf,service,cartouche,sortie_stock,date_sortie FROM servcart WHERE uf='4517' group by uf,service,cartouche,sortie_stock,date_sortie
      Résultat
      nb uf service cartouche sortie_stock date_sortie
      1 4517 Archives 4096 A 2100 2200 2 2011-09-05
      1 4517 Archives BCI 6 E 520 Cyan 1 2011-08-30
      1 4517 Archives 520 Black 1 2011-08-30
      1 4517 Archives toto 1 2011-08-02
      1 4517 Archives 1720 2 2011-08-03

      Pour ma page cela donne cela après choix" archives ":

      UF SERVICE CARTOUCHE DATE SORTIE STOCK
      2314 URG P1210 0000-00-00 0

      J'étais un peu longue mais voilà le résultat..pas joli..joli
      0