Kategorihantering

PHPportalen Forum Index » Tips och Trix
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget Gå till sida Föregående  1, 2, 3, 4, 5  Nästa
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
Malte
in memoriam 1



Medlem i: 6302 dagar
Från: Tingsryd
Status: Offline



#400568
Inlägg Skrivet: 2006-08-03 13:22      Ämne: Citera

Optgroup blir jättesnyggt, men har den nackdelen att du inte kan välja en optgroup som val i din select. Du kan alltså inte sätta huvudkategorier som label i optgroup utan att dessutom ha huvudkategorin med under som val, såvida huvudkategorin inte ska vara valbar, då fungerar optgroup snyggt.

I firefox går det att sätta margin-left i option, men det fungerar inte i IE.

Att använda fullösningen hårda mellanslag fungerar när det är utfällt. Tyvärr följer de hårda mellanslagen med när valet visas.

Jag har sjäv slitit med att hitta en bra lösning på ett liknande problem, men har inte lyckats.
 

_________________
Funktion är vackert
Till toppen på sidan
Visa användarprofil Besök användarens hemsida
MittroSpaung



Medlem i: 4949 dagar
Från: Mönsterås
Status: Offline



#400579
Inlägg Skrivet: 2006-08-03 13:42      Ämne: Citera

Okej jag får väl köra som det är nu då. Är ju rätt bra ändå.
En liten fråga till. Om vi kör med liknande träd jag visade förut:

Kat1
Kat1/sub1
Kat1/sub1/sub2
Kat2

Jag vill ha en funktion i min shop för admindelen som visar vilka kategorier en produkt tillhör. Om jag har lagt in så att en produkt till hör "sub2", hur gör jag då för att visa det såhär:

Produkten tillhör:
Kat1/sub1/sub2

Om man använder en where i funktionen list_items så kan man ju bara hämta huvudkategorier.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Malte
in memoriam 1



Medlem i: 6302 dagar
Från: Tingsryd
Status: Offline



#400590
Inlägg Skrivet: 2006-08-03 14:05      Ämne: Citera

Det beror lite på vad du ska använda det till.

Ska du endast ha det för en kategori, då borde det gå bra att göra så här:
PHP:
1:
 $path $items->get_navlinks($id'{name}''''/'); 


Vill du ha hela listan kan du istället använda funktionen make_options().
 

_________________
Funktion är vackert
Till toppen på sidan
Visa användarprofil Besök användarens hemsida
MittroSpaung



Medlem i: 4949 dagar
Från: Mönsterås
Status: Offline



#400594
Inlägg Skrivet: 2006-08-03 14:11      Ämne: Citera

Malte skrev:
Det beror lite på vad du ska använda det till.

Ska du endast ha det för en kategori, då borde det gå bra att göra så här:
PHP:
1:
 $path $items->get_navlinks($id'{name}''''/'); 


Vill du ha hela listan kan du istället använda funktionen make_options().

Hm alltså jag vill bara kunna hämta en enskild kategori genom
SELECT * FROM items WHERE id = 12
T ex, men om det är en subkategori så fungerar det inte. Hur ska jag använda den där koden du skrev då? Inte hemma på objektorienterad kodning alls som du kanske märker Razz.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Malte
in memoriam 1



Medlem i: 6302 dagar
Från: Tingsryd
Status: Offline



#400599
Inlägg Skrivet: 2006-08-03 14:24      Ämne: Citera

Det borde funka med:
PHP:
 
$sql "SELECT id AS id, item AS name, parent AS parent FROM items ORDER BY name";
$items = new ItemTree($sql);
$path $items->get_navlinks($kategori_id'{name}''''/'); 
 

_________________
Funktion är vackert
Till toppen på sidan
Visa användarprofil Besök användarens hemsida
MittroSpaung



Medlem i: 4949 dagar
Från: Mönsterås
Status: Offline



#400603
Inlägg Skrivet: 2006-08-03 14:30      Ämne: Citera

Malte skrev:
Det borde funka med:
PHP:
 
$sql "SELECT id AS id, item AS name, parent AS parent FROM items ORDER BY name";
$items = new ItemTree($sql);
$path $items->get_navlinks($kategori_id'{name}''''/'); 

Tyvärr, den hämtar fortfarande alla kategorier Sad.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Malte
in memoriam 1



Medlem i: 6302 dagar
Från: Tingsryd
Status: Offline



#400604
Inlägg Skrivet: 2006-08-03 14:34      Ämne: Citera

Men du ville visa det typ Kat1/sub1/sub2.
Då får du antingen göra enligt mitt system att i en SQL-fråga hämta alla kategorier, och sedan plocka ut det med PHP, eller så får du göra en egen funktion som gör ett rekursivt anrop för att plocka fram sökvägen.
 

_________________
Funktion är vackert
Till toppen på sidan
Visa användarprofil Besök användarens hemsida
MittroSpaung



Medlem i: 4949 dagar
Från: Mönsterås
Status: Offline



#400609
Inlägg Skrivet: 2006-08-03 14:41      Ämne: Citera

Malte skrev:
Men du ville visa det typ Kat1/sub1/sub2.
Då får du antingen göra enligt mitt system att i en SQL-fråga hämta alla kategorier, och sedan plocka ut det med PHP, eller så får du göra en egen funktion som gör ett rekursivt anrop för att plocka fram sökvägen.

Jo men jag menar att om produkten bara till hör en kategori i "Kat1" så skriver den även ut "Kat2"-trädet.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Spiroo



Medlem i: 4978 dagar

Status: Offline



#400610
Inlägg Skrivet: 2006-08-03 14:47      Ämne: Citera

Förresten malte har en helt annan fråga. Om jag ändrar på en huvudkategori t ex. Och sen vill jag att alla kategorier under den ska ändras till rätt parent. Hur skulle man göra det isåfall?

Skulle vara bra och veta ifall man vill ändra på en hel gren på en gång Smile
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Malte
in memoriam 1



Medlem i: 6302 dagar
Från: Tingsryd
Status: Offline



#400612
Inlägg Skrivet: 2006-08-03 14:49      Ämne: Citera

Den ska inte skriva ut några träd överhuvudtaget utan enbart /Mainkat/subcat
 

_________________
Funktion är vackert
Till toppen på sidan
Visa användarprofil Besök användarens hemsida
Spiroo



Medlem i: 4978 dagar

Status: Offline



#405497
Inlägg Skrivet: 2006-08-17 18:57      Ämne: Citera

malte behöver hjälp med en sak jag inte lyckas lösa med detta script:

tänkte göra om funktionen get_node och sedan i show_tree göra outputen med html. För ibland behöver jag endast en gren.

Såhär tänkte jag nånting:
PHP:
1:
<?php
2:
public function getNode($items)
3:
{
4:
   $node '';
5:
   foreach ($items as $item) {
6:
      if (!empty($item->childs)) {
7:
         $node[$item->id] = $this->getNode($item->childs);
8:
      } else {
9:
         $node[$item->id] = array($item);
10:
      }
11:
   }
12:
   echo '<pre>'
13:
   print_r($node);
14:
   echo '</pre>';
15:
}
16:
?>


Fråga inte varför jag gjort om de till object.
$items ser ut såhär för att du ska få en klarare bild av det hela:
PHP:
1:
<?php
2:
while ($row $res->fetch(DB_FETCH_ASSOC)) {
3:
   $this->items[$row['id']] = (object) array(
4:
      'id'     => $row['id'],
5:
      'name'   => $row['name'],
6:
      'url'    => $row['url'],
7:
      'parent' => $row['parent']
8:
   );
9:
}
10:
?>


det jag vill försöka göra är att man får någon slags lista som en enda array av alltihopa.
T ex första noden ska innehålla en huvudkategori och sedan i samma array ska alla underkategorier till den radas upp inklusve deras childs.
Sen nästa huvudkategori likadant osv.
vill helst få det att fungera utan att det behöver vara huvudkategorier.
T ex om jag vill börja på en underkategori 3 levlar under vill jag kunna göra det.

Sen i showtree, ta detta med en nypa salt, har inte gjort om koden eftersom jag vet inteh ur jag ska göra eftersom den andra koden är inte klar.

PHP:
1:
<?php
2:
public function showTree($parent 0$tpl '%s'$ul_class '')
3:
{
4:
   $items $this->getTree($parent);
5:
   $node  = $this->getNode($items);
6:
         
7:
   $rows 0;
8:
   $search  = array('{id}''{name}');
9:
   $output  = "                     <ul class='$ul_class'>\n";
10:
         
11:
   $class   = ($rows 2) ? "color2" "color1";
12:
   $replace = array($item->id$item->name);
13:
         
14:
   $output .= "                        <ul class='$class'>\n";
15:
   $output .= "                           <li class='check'><input type='checkbox' name='id[]' value='$item->id'></li>\n";
16:
   $output .= "                           <li class='item'>"str_replace($search$replace$tpl) ."</li>\n";
17:
   $output .= "                        </ul>\n";
18:
         
19:
   $rows++;
20:
        
21:
   return $output "                     </ul>\n";
22:
}
23:
?>


Ja jag vet inte riktigt hur jag ska fixa det på ett snyggt sätt. Hoppas du kan hjälpa mig att lösa det på ett snyggt sätt.

Tack på förhand
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Malte
in memoriam 1



Medlem i: 6302 dagar
Från: Tingsryd
Status: Offline



#405649
Inlägg Skrivet: 2006-08-18 02:24      Ämne: Citera

Funktionen get_tree() ger dig en enda flerdimensionell array där underkategorier ligger som en underarray.
 

_________________
Funktion är vackert
Till toppen på sidan
Visa användarprofil Besök användarens hemsida
fejs



Medlem i: 5249 dagar

Status: Offline



#434489
Inlägg Skrivet: 2006-11-14 21:52      Ämne: Citera

riktigt fina funktioner, relativt lätta att förstå för oss som inte är så duktiga.

jag har dock en fråga, när man klickar på tex en "underkategori", då visas bara kategorier under denna. Inte dom över.

Hur ska jag göra för att, vilken kategori jag än klickar på, så är menyn konstant?

Förstår nån? Smile Razz

/C
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Malte
in memoriam 1



Medlem i: 6302 dagar
Från: Tingsryd
Status: Offline



#434829
Inlägg Skrivet: 2006-11-15 21:35      Ämne: Citera

Visst går det att byggs om till något sådant. Har dock varken tid eller ork att fixa ihop något.

Men varför inte skaffa en snygg Javascript-meny, och ladda den med värden från databasen med hjälp av PHP?
 

_________________
Funktion är vackert
Till toppen på sidan
Visa användarprofil Besök användarens hemsida
fejs



Medlem i: 5249 dagar

Status: Offline



#434967
Inlägg Skrivet: 2006-11-16 01:31      Ämne: Citera

har letat runt överallt, hittat lite olika, men alla är så förbannat avancerade.

men, ja, javascript och fylla det med värden från db, det vore det snyggaste, men finns det inget lättare?

Jag är inte ute efter nåt avancerat, förstår inte ens tänket i det hela, det e det som e tråkigt Mad

Nån som har lite kod så man kommer igång?

/C
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget Gå till sida Föregående  1, 2, 3, 4, 5  Nästa
PHPportalen Forum Index » Tips och Trix
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic