Kom ihåg mig?

Hur lagra kategorier

 
Ämnesverktyg Visningsalternativ
Oläst 2013-07-17, 17:25 #10
Anaxa Anaxa är inte uppkopplad
Medlem
 
Reg.datum: Jun 2013
Inlägg: 58
Anaxa Anaxa är inte uppkopplad
Medlem
 
Reg.datum: Jun 2013
Inlägg: 58
Nu har jag lyckats att få den array jag vill ha. Här är koden:
PHP-kod:
$ordered_categories = array();
    
$i 0;
    foreach(
$categories as $k => $v) {
        
// Loop only parents and put in fresh list
        
if($v["parent"] == 0) {
            
$ordered_categories[$i] = $v;
            
$ordered_categories[$i]["children"] = getSortedCategories($v["id"], $categories);
            
$i++;
        }
    }
    
    function 
getSortedCategories($id$categories) {
        
$return = array();
        
$m 0;
        foreach(
$categories as $c) {
            if(
$c["parent"] == $id) {
                
$return[$m] = $c;
                
$return[$m]["children"] = getSortedCategories($c["id"], $categories);
            }
            
$m++;
        }
        return 
$return;
    } 
Men nu har jag problem med att få rätt identering i <select> taggen. Jag vill att varje barn hoppar in 5 &nbsp; och varje barnbarn hoppar in det dubbla(10 &nbsp. Men jag vet inte när jag ska öka $treeGrowth för att den ska identera rätt. Här är mitt försök. Denna kod identerar bara de första barnen(alltså nivå 1)
PHP-kod:
<select name="parent"><option value="0">Ingen</option>
                                <?php
                                    
                                    
function intendChildren($children) {
                                        
$treeGrowth 1;
                                        foreach(
$children as $row) {
                                            
$intend "";
                                            for(
$i=0;$i<$treeGrowth;$i++) {
                                                
$intend .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
                                            }
                                            echo 
'<option '.((isset($_SESSION["last_parent_category"]) && $_SESSION["last_parent_category"] == $row["id"]) ? 'selected' '').' value="'.$row["id"].'">'.$intend.'|__'.$row["name"].'</option>';
                                            
intendChildren($row["children"]);
                                        }
                                    }
                                
                                    foreach(
$ordered_categories as $row) {
                                        echo 
'<option '.((isset($_SESSION["last_parent_category"]) && $_SESSION["last_parent_category"] == $row["id"]) ? 'selected' '').' value="'.$row["id"].'">|__'.$row["name"].'</option>';
                                        
intendChildren($row["children"]);
                                    }
                                
?>
                                </select>
EDIT: Bry er inte om SESSION. Den lade jag bara till för att jag är lat(den hjälper mig när jag lägger till nya underkategorier.)
Anaxa är inte uppkopplad   Svara med citatSvara med citat
 


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 
Ämnesverktyg
Visningsalternativ

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 00:05.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017