2013-03-31 2 views
0

Voici le code:question mysql_fetch_array

<select name="op1" id="op1" class="op1"> 
    <option value=""> -- please choose -- </option> 
    <?php 
     while($row = mysql_fetch_array($query)){ 
      $id = $row['id']; 
      $name = $row['name']; 
      echo '<option value="'.$id.'">'.$name.'</option>'; 
     } 
    ?> 
</select> 
<br /> 
<select name="op2" id="op2" style="margin-top:20px" class="op2"> 
    <option value=""> -- please choose -- </option> 
    <?php 
     $query2 = mysql_query("SELECT * FROM cat2 WHERE cor = '$id' ORDER BY id ASC"); 
     while($row2 = mysql_fetch_array($query2)){ 
      $id2 = $row2['id']; 
      $name2 = $row2['name']; 
      echo '<option value="'.$id2.'">'.$name2.'</option>'; 
     } 
    ?> 
</select> 

Ce que je veux faire est de sélectionner $ id de la première boucle et l'utiliser dans la deuxième boucle requête mais ne peux pas semblent le faire fonctionner en raison de la variable pipeline, quelqu'un sait-il un travail autour de cela?

+0

Cela nécessite de soumettre le formulaire, n'est-ce pas? –

+0

Voulez-vous dire utiliser la valeur choisie par l'utilisateur à partir du premier SELECT lors du remplissage des valeurs dans le second SELECT? – JoLoCo

+2

Quel '$ id' de la première boucle voulez-vous utiliser dans la deuxième requête? PHP s'exécute sur le serveur AVANT d'envoyer la page au navigateur, il ne peut donc pas dépendre de ce que l'utilisateur sélectionne. Pour cela, vous devez utiliser AJAX. – Barmar

Répondre

0
<?php 
$ids=array(); 
    while($row = mysql_fetch_array($query)){ 
      $id = $row['id']; 
     $ids[]=$id; 
     $name = $row['name']; 
     echo '<option value="'.$id.'">'.$name.'</option>'; 
    } 
?> 

deuxième bloc php;

<?php 
foreach ($ids as $id) { 
    $query2 = mysql_query("SELECT * FROM cat2 WHERE cor = '$id' ORDER BY id ASC"); 
    while($row2 = mysql_fetch_array($query2)){ 
     $id2 = $row2['id']; 
     $name2 = $row2['name']; 
     echo '<option value="'.$id2.'">'.$name2.'</option>'; 
    } 
} 
?> 

La ligne de codes suivante utilise ajax. Vous devez créer un nouveau fichier appelé ajax.php. Vous pouvez utiliser le même fichier, mettre tout le code de ajax.php (en ajoutant la sortie, à la fin) tout en haut du document et changer ... load ('ajax.php' ... avec ... load ('' ...

Si vous placez le script dans l'en-tête du document, vous devrez l'insérer dans $ (function() {}) pour qu'il s'exécute après le chargement de tous les éléments de la page.

Code Non testé. Mais on y va. Si je me trompe quelque part, s'il vous plaît commentaire personne.

AJAX

<select name="op1" id="op1" class="op1"> 
     <option value=""> -- please choose -- </option> 
     <?php 
      while($row = mysql_fetch_array($query)){ 
       $id = $row['id']; 
       $name = $row['name']; 
       echo '<option value="'.$id.'">'.$name.'</option>'; 
      } 
     ?> 
    </select> 
    <br /> 
    <select name="op2" id="op2" style="margin-top:20px;" class="op2"> 

    </select> 

<script type="text/javascript"> 
     $('#op1').change(function() { 
      $('#op2').load('ajax.php',{id:$(this).val()}); 
    }); 

</script> 

fichier ajax.php:

<?php if (isset($_REQUEST['id'])) { $id = $_REQUEST['id']; ?> 
     <option value=""> -- please choose -- </option> 
     <?php 
      $query2 = mysql_query("SELECT * FROM cat2 WHERE cor = '$id' ORDER BY id ASC"); 
      while($row2 = mysql_fetch_array($query2)){ 
       $id2 = $row2['id']; 
       $name2 = $row2['name']; 
       echo '<option value="'.$id2.'">'.$name2.'</option>'; 
      } 
     } ?> 
+0

Cela fait juste id la valeur de 1, peu importe ce que l'utilisateur sélectionne – mtcamesao

+1

@mtcamesao Si vous essayez de remplir le deuxième SELECT avec ce que l'utilisateur a sélectionné du premier, vous ne pouvez pas le faire comme ça, comme le HTML complet (y compris le code HTML généré par PHP) est sorti en une fois. Vous devrez soumettre le choix SELECT de l'utilisateur via AJAX ou en utilisant un formulaire de soumission, avant de générer le second SELECT. – JoLoCo

+0

Pouvez-vous me donner un exemple de code? – mtcamesao

0

Lorsque l'utilisateur choisit la première option dans la zone de sélection Tout d'abord je veux le faire glisser vers le bas la deuxième case (Vous avez déjà que le travail) Mais je besoin d'aide pour obtenir les données de la base de données mysql dans cette deuxième boîte de sélection en fonction du premier choix de l'utilisateur.

Pour ce que vous voulez, vous devez:

  • Gather la première option par jQuery (côté client) sélectionné
  • Effectuer une requête AJAX via jQuery.ajax() ou des synonymes (côté client)
  • Définir la page de destination de la requête AJAX pour rassembler les informations (côté serveur)
  • Mettre à jour le second jeu d'options (côté client)