Ma base de données a la configuration suivante
category #1 item 1 item 2 item 3 category #2 item 1 item 2 item 3
6 Réponses :
Ce que vous voulez, c'est de les commander par la catégorie, ne les groupez pas.
SELECT * FROM MyTable ORDER BY category_id, product_id
Le moyen le plus simple est probablement de tirer la liste des catégories, de parcourir et de tirer leurs produits attachés. (C'est-à-dire plusieurs requêtes.)
par exemple (pseudocode): p> Si vous voulez tout faire dans une requête, vous pouvez faire quelque chose comme: p> puis vous pouvez itérer sur le jeu de résultats et retirer le nom de la catégorie chaque fois que cela change. P> Il peut y avoir un moyen plus sophistiqué et élégant d'écrire le SQL à Faites tout avant de l'obtenir de la base de données, mais je ne suis pas si intelligent. ;) p> Remarque: les exemples utilisent le code pseudo. J'utilise une classe d'abstraction MySQL qui fonctionne comme: p> i peut alors Je peux poster le code de la couche d'abstraction si vous le souhaitez. P> p> foreach ($ DB-> multi_result () comme $ rangée) code>, qui est super paresseux et génial. p>
Je recommanderais simplement une simple requête pour aller chercher toutes les lignes, triées par ID de catégorie. Sortiez la catégorie uniquement si sa valeur passe de la ligne précédente.
<?php
$stmt = $pdo-> query("SELECT * FROM `myTable` ORDER BY categoryID");
$current_cat = null;
while ($row = $stmt->fetch()) {
if ($row["categoryID"] != $current_cat) {
$current_cat = $row["categoryID"];
echo "Category #{$current_cat}\n";
}
echo $row["productName"] . "\n";
}
?>
Cela devrait fonctionner: la sortie que vous pouvez styler vous-même. Vous ajoutez simplement tout dans un tableau multidimensionnel avec l'identifiant de la catégorie comme des touches de premier niveau. P> $categories = array(
'cateogy_id_1' => array(
1 => 'item_1',
2 => 'item_2',
...
),
'cateogy_id_2' => array(
1 => 'item_1',
2 => 'item_2',
...
),
....
);
Cette approche n'a pas besoin que les données soient triées par catégorie_id.
Vous pouvez utiliser php pour regrouper chaque catégorie dans un tableau imbriqué.
Après cela, les données peuvent être facilement affichées dans une table, transmises à une bibliothèque de grape / graphique, etc ... p>
$stmt = $dbConnection->prepare("SELECT exam_id, COUNT(report_id) FROM bug_report GROUP BY exam_id; ");
//$stmt->bind_param('s',$exam_id);
$stmt->execute();
$extract = $stmt->get_result();
$count = $extract->num_rows;
if($count){
while($rows = $extract->fetch_assoc()){
$exam_id = $rows["exam_id"];
switch($exam_id){
case "jee_questions":
$jeeBugCount = $rows["COUNT(report_id)"];
break;
case "gate_questions":
$gateBugCount = $rows["COUNT(report_id)"];
break;
}
}
}
Publiez la requête que vous utilisez afin que quelqu'un puisse fournir au PHP de sortir les données.
Je n'ai aucune question, ma question est de savoir quelle requête à utiliser. Le message inclut ma configuration de la base de données (les données contenues) et la manière dont je souhaite qu'il affiche, que dois-je inclure d'autre?