Créer des listes de liste de tableau PHP pour le menu déroulant, sélectionnez le champ
Je suis aux prises avec un tableau que je veux transformer en un imbriquée < select >
J'ai besoin de:
<select>
<option value="1">Top1</option>
<option value="2">Top2</option>
<option value="9">Top3</option>
<option value="7"> - - Top3.1</option>
<option value="5"> - - Top3.2</option>
<option value="12">- - - - Top3.2.1</option>
<option value="6">Top4</option>
<option value="4">Top5</option>
<option value="8"> - - Top5.1</option>
<option value="3"> - - Top5.2</option>
Je ne peux pas travailler avec "optgroup", parce que tout est sélectionnable. Autant que je sache, vous ne pouvez pas sélectionner "optgroup" les étiquettes.
Mon tableau ressemble à ceci:
[44] => Array
(
[id] => 1
[name] => Test
[slug] => test
[parent] => 0
)
[45] => Array
(
[id] => 2
[name] => Test-Sub
[slug] => test-sub
[parent] => 1
)
[46] => Array
(
[id] => 3
[name] => Test-Sub-Sub
[slug] => test-sub-sub
[parent] => 2
)
Je me sens comme j'ai essayé des dizaines de variantions, mais je ne peux pas créer mon formulaire, choisissez " la droite.
C'était mon dernier essai:
function toDropdown($arr)
{
foreach ($arr as $row) {
$cat[$row['id']] = $row['name'];
if ($row['parent'] != 0) {
$cat[$row['id']] = '--' . $row['name'];
}
}
return $cat;
}
Mais de cette façon, il est ordonné par l'ID et la nidification perd de son sens.
Je vais essayer de continuer, mais si quelqu'un peut aider j'apprécie toute l'aide!
EDIT: PHP les Données
Ma fonction pour obtenir toutes les catégories à partir de la DB:
function get_categories($parent = 'all')
{
$this->db->select('categories.id, categories.name, categories.slug, categories.parent');
$this->db->from('categories');
if ($query = $this->db->get())
{
return $query->result_array();
}
return FALSE;
}
Mon view.php où je l'ai sortie de toutes les données:
$query = $this->datei_model->get_categories('all');
foreach ($query as $row)
{
$parents[] = $row;
}
$tree = buildTree($parents);
print("<select>\n");
printTree($tree);
print("</select>");
OriginalL'auteur suntrop | 2013-01-30
Vous devez vous connecter pour publier un commentaire.
Essayer ce;
De sortie;
Et dans ton cas,
Alors, quel est le problème??? Il y a également peu plus pour des niveaux plus profonds.
Oui, vous avez raison. Mais, par exemple, le dernier niveau n'as pas un tableau de bord, mais 7 tirets, même si c'est seulement sur le deuxième niveau. project-point.de/sub-levels.png
C'est en rapport avec votre
$rows
structure, voir$rows
en réponse et vérifier les différences, ou de montrer votre$rows
trop (mais réel des données de ligne, pas print_r ed).Je pense que les deux sont structurés de la même façon, n'est-ce pas? Array ( [0] => Array ( [id] => 1 [nom] => le Bade-Wurtemberg [slug] => le bade-wurtemberg [parent] => 0 ) [40] => Array ( [id] => 73 [nom] => Prüfungen [slug] => pruefungen [parent] => 5 ) )
OriginalL'auteur K-Gun
juste ce petit changement de le code d'origine qui a répondu par Qeremy
Désormais en pointillés nom fonctionne très bien.
*désolé pour mon anglais
OriginalL'auteur Rio Adetya Rizky
Dans Qeremy code il suffit de changer cette ligne et le code ne sera pas vous donner toute l'incrémentation des tirets
- >
OriginalL'auteur Nitish Dhir