Voilà ma base de données:Je ne parviens pas à obtenir les catégories et sous-catégories
id name parent_id
1 Computers NULL
2 Apple 1
3 Books 1
4 Music NULL
5 CDs 4
6 Records 4
Mes catégories Fonction:
public function showCategories($parent_id = 0){
if($parent_id == 0){
$sql = "SELECT * FROM categories WHERE parent_id IS NULL";
} else {
$sql = "SELECT * FROM categories WHERE parent_id =:parentid";
}
$stmt = $this->db->prepare($sql);
$stmt->bindParam(':parentid', $parent_id);
$stmt->execute();
$categories = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
array_push($categories, array($row['id'] => $row['name']));
}
return $categories;
}
Voilà ma page catégorie:
<?php
//Instantiate categories class
$categories = new categories($db);
$categoriesMain = $categories->showCategories(0);
?>
<html>
<head></head>
<body>
<form action="" method="post">
<?php //Get parent categories and put them into a select box ?>
<select name="categoriesMain">
<?php for($i=0;$i<count($categoriesMain);$i++){ ?>
<option value="<?php echo $i; ?>">
<?php echo $categoriesMain[$i]; ?>
</option>
<?php } ?>
</select>
<input type="submit" name="submit" value="submit"/>
</form>
<?php //if form submits then show sub categories ?>
<?php if(isset($_POST['submit'])){
$categoriesSub = $categories->showCategories($_POST['categoriesMain']);
for($i=0;$i<count($categoriesSub);$i++){
echo $categoriesSub[$i];
}
} ?>
</body>
</html>
Permettez-moi de expliquer ce que j'ai des ennuis avec. Je pense que tout mon design est hors de propos parce que ça me donne l'impression d'avoir un bloc de cerveau en ce moment.
Dans la fonction, je renvoie un tableau tel que Array ([0] => Array ([1] => Computers) [1] => Array ([4] => Music))
. Si vous pensez que c'est la mauvaise façon de le retourner, faites le moi savoir. Ok, voyez-vous CategoriesMain
? J'utilise une boucle for pour sortir ce tableau et pour option=value im echoing $i
cependant ce $ i va comme 1, 2, 3, 4
mais je veux que la valeur soit la valeur de la catégorie parente, par exemple. 1, 4
afin que je puisse recueillir la valeur en utilisant $_POST['cateogoriesMain']
dans la prochaine boucle pour où j'affiche cateogriesSub
où il obtiendra les lignes de base de données pour ceux avec le parent_id = to whatever was selected in the selectbox
précédemment. J'espère que ça a du sens.
Super merci! :) – Jonathan