Pages

Wednesday, September 1, 2010

Breadcrumbs με την PHP

Τι είναι τα breadcrumbs;

Well, είναι τα... "ψίχουλα" που δείχνουν πιο "μονοπάτι" από κατηγορίες και υποκατηγορίες ακολούθησες για να βρεθείς εκεί που βρέθηκες μέσα σε ένα site.

Μιας λοιπόν που στο προηγούμενο post ασχολήθηκα με τις κατηγορίες και τις υποκατηγορίες είπα να το συνεχίσω και να ασχοληθώ και με αυτό που το αναρωτιόμουν περισσότερο καιρό απ' ό,τι αυτό με τις υποκατηγορίες.

Κλασσικά, ακολουθεί η γενική ιδέα, και μετά μια συνάρτηση που την υλοποιεί.
Στην προκειμένη περίπτωση, η συνάρτηση μπορεί να γραφτεί και (αρκετά) καλύτερα, αλλά έτσι είναι αρκετά αναλυτικά και κατανοητά.

Anyways, η βασική ιδέα έχει ως εξής:

Παίρνουμε το id της κατηγορίας που είμαστε
Βάσει αυτού, πηγαίνουμε προς τα πίσω στην parent category και την κρατάμε και αυτή.
Το παραπάνω το κάνουμε μέχρι να φτάσουμε σε root category.
Μετά απλώς τα εμφανίζουμε με αντίστροφη σειρά τα αποτελέσματα.


Ιδού και η συνάρτηση:



function build_breadcrumbs()
 {
  //prwta pairnoume tin katigoria i opoia tha exei perastei me $_GET
  $cat_id = $_GET['cat_id'];
  
  //kanoume enan pinaka pou tha periexei ti diadromi
  $path = array();
  
  //pairnoume to parent_id tis katigorias pou eimaste twra
  $q = "SELECT * FROM categories WHERE cat_id = $cat_id";
  $res = mysql_query($q);
  if($res)
  {
   $row = mysql_fetch_object($res);
   
   $cur_parent_id = $row->cat_parent_id;
   $path[] = $row;
  }
  
  //kai pairnoume tis katigories anapoda mexri na ftasoume sti vasiki:
  do
  {
   $q = "SELECT * FROM categories WHERE cat_id = $cur_parent_id";
   $res = mysql_query($q);
   if($res)
   {
    $row = mysql_fetch_object($res);
    $cur_parent_id = $row->cat_parent_id;
    $path[] = $row;
   }

  }while($cur_parent_id != 0);
  
  //mias pou ta pirame anapoda, antistrefoume ton pinaka
  $path = array_reverse($path);
  
  $pathString = "Home";
  foreach($path as $trail)
  {
   if($trail->cat_name != "")
   {
    $pathString .= " > " . $trail->cat_name;
   }
  }
  
  return $pathString;
 }



Ιδού και το αποτέλεσμα της χρησιμοποιώντας τις κατηγορίες από το προηγούμενο ποστ:



Ιδέες και προτάσεις ευπρόσδεκτες.

Btw, καλό μήνα με την ευκαιρία (και καλή εξεταστική για όσους δίνουμε :P )

No comments:

Post a Comment