2012-07-25 5 views
0

Je crée un site Web pour apprendre le codage et créer 2 listes déroulantes qui seront remplies 1 à partir de la table de la base de données -> cat. L'autre liste déroulante sélectionner sera remplie à partir de table -> subcat. La base de données pour un look chat et subcat comme ceci:envoyer sélectionner une liste déroulante à un autre sélectionner une liste déroulante

Tableau Cat

id (int 15) || chat (varchar 75) || nombre (int 3)

Tableau Subcat

id (int 15) || subcat (varchar 75) || catnumber (int 3)

Chaque sous-ligne a un numéro de catnumber qui correspond à la ligne dans cat -> number. Ainsi, par exemple, si nous avons Restaurants qui est une rangée dans Cat qui a un nombre de 2, alors si nous avons aussi American Food, et Chinese Food qui ont un numéro de catnumber de 2, alors ils correspondent.

Voici mon code pour sortir de la base de données pour les 3 listes déroulantes de mes chats.

<p><b>Cat1:</b><br /> 
<?php 
    $query="SELECT id,cat FROM cat"; 
    $result = mysql_query ($query); 
    echo"<select name='cselect1' class='e1'><option value='0'>Please Select A Category</option>"; 
    // printing the list box select command 
    while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt 
    echo "<option value=\"".htmlspecialchars($catinfo['cat'])."\">".$catinfo['cat']."</option>"; 

    } 

    echo"</select>"; 
?> 

<!-- Next CAT --> 

<p><b>Cat2:</b><br /> 
<?php 
    $query="SELECT id,cat FROM cat"; 
    $result = mysql_query ($query); 
    echo"<select name='cselect2' class='e1'><option value='0'>Please Select A Category</option>"; 
    // printing the list box select command 
    while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt 
    echo "<option value=\"".htmlspecialchars($catinfo['cat'])."\">".$catinfo['cat']."</option>"; 

    } 

    echo"</select>"; 
?> 

<!-- Next CAT --> 

<p><b>Cat3:</b><br /> 
<?php 
    $query="SELECT id,cat FROM cat"; 
    $result = mysql_query ($query); 
    echo"<select name='cselect3' class='e1'><option value='0'>Please Select A Category</option>"; 
    // printing the list box select command 
    while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt 
    echo "<option value=\"".htmlspecialchars($catinfo['cat'])."\">".$catinfo['cat']."</option>"; 

    } 

    echo"</select>"; 
?> 

Et voici mon code pour retirer de la base de données pour tous les trois de mes subcat dropdowns

<p><b>Subcat1:</b><br /> 
<?php 
    $query="SELECT * FROM subcat WHERE catnumber='1' "; 
    $result = mysql_query ($query); 
    echo"<select name='sselect1' class='e1'><option value='0'>Please Select A Category</option>"; 
    // printing the list box select command 
    while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt 
    echo "<option value=\"".htmlspecialchars($catinfo['subcat'])."\">".$catinfo['subcat']."</option>"; 

    } 

    echo"</select>"; 
?> 
<p><b>Subcat2:</b><br /> 
<?php 
    $query="SELECT id,subcat FROM subcat WHERE catnumber='1' "; 
    $result = mysql_query ($query); 
    echo"<select name='sselect2' class='e1'><option value='0'>Please Select A Category</option>"; 
    // printing the list box select command 
    while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt 
    echo "<option value=\"".htmlspecialchars($catinfo['subcat'])."\">".$catinfo['subcat']."</option>"; 

    } 

    echo"</select>"; 
?> 
<p><b>Subcat3:</b><br /> 
<?php 
    $query="SELECT id,subcat FROM subcat WHERE catnumber='1' "; 
    $result = mysql_query ($query); 
    echo"<select name='sselect3' class='e1'><option value='0'>Please Select A Category</option>"; 
    // printing the list box select command 
    while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt 
    echo "<option value=\"".htmlspecialchars($catinfo['subcat'])."\">".$catinfo['subcat']."</option>"; 

    } 

    echo"</select>"; 
?> 

Donc maintenant tous les sélectionne subcat tentent d'obtenir toutes les sous-catégories pour la chat avec un nombre de 1 (qui est Restaurants). Comment puis-je obtenir ce qui est sélectionné sur le chat sélectionner pour faire (sans actualiser la page) la sous-sélection correspondante afficher la liste de sous-liste correspondante pour le numéro du chat?

^Très désolé de faire un travail terrible l'expliquant. À la fin, je le veux essentiellement comme Yelps ->here

Merci pour toute l'aide!

Répondre

2

Vous devez effectuer un appel ajax pour interroger la base de données en arrière-plan, puis renvoyer les résultats (au format HTML) et remplir votre sélection de sous-catégorie.

<select name="cat" id="cat">...</select> 
<select name="subCat" id="subCat">...</select> 

<script language="javascript"> 
    $('#cat').change(function() { 
     $.post('getSubcat.php', { 
      cat: $(this).val() 
     }, function(data) { 
      $("#subCat").html(data); 
     } 
    }); 
</script> 

Assurez-vous que votre script getSubcat.php fait écho aux résultats que

<option value='whatever'>Label</option> 
<option value='whatever2'>Label2</option> ... 

getSubcat.php serait un simple script requête/sortie:

<?php 
$category = $_POST['cat']; 

$query = "SELECT * FROM subcategories WHERE parent_category = " . $category; 
$result = mysql_query($query); 

echo "<option value='0'>Select a subcategory</option>"; 
while($row = mysql_fetch_array($result)) { 
    echo "<option value='" . $row['id'] . "'>" . $row['subcategory_name'] . "</option>"; 
} 

NOTE: Ceci utilise jQuery - assurez-vous que votre page contient les bibliothèques jQuery

<script src="http://code.jquery.com/jquery-latest.min.js"></script> 
+0

Je suis désolé, je suis un peu confus sur ce que getSubcat.php ressemblerait? Désolé - Je suis assez nouveau – infinity

+0

Code supplémentaire ajouté dans edit. Sachez simplement que cela est très simple et n'inclut pas la configuration MySQL ou la gestion des erreurs. Familiarisez-vous avec jQuery http://www.w3schools.com/jquery/default.asp et AJAX http://www.w3schools.com/ajax/default.asp – Matt

+0

Si cette réponse a fonctionné pour vous, veuillez la marquer comme " répondre." Je ne veux pas mendier pour les points de rep, mais j'ai besoin de rep points haha. – Matt

Questions connexes