Ver Mensaje Individual
  #23 (permalink)  
Antiguo 07/05/2011, 07:47
marina_mesas
 
Fecha de Ingreso: noviembre-2010
Mensajes: 48
Antigüedad: 14 años, 1 mes
Puntos: 5
Busqueda Respuesta: Ordenar alfabeticamente con php

Hola chicos Como parano tirar todo y comenzar de nuevo, por ahi seria bueno saber donde esta el conflicto.
Este es el script del navegador

Código PHP:
Ver original
  1. <?php
  2. if (!defined('WEB_ROOT')) {
  3.     exit;
  4. }
  5. $categories = fetchCategories();
  6.  
  7. $categories = formatCategories($categories, $catId);
  8. ?><ul>
  9. <?php
  10. sort($categories); // codigo me lo sugirio stramin, que ahora me recomendo que lo saque
  11. foreach ($categories as $category) {
  12.     extract($category);
  13.        
  14.     $level = ($cat_parent_id == 0) ? 1 : 2;
  15.     $url   = $_SERVER['PHP_SELF'] . "?c=$cat_id";
  16.  
  17.     if ($level == 2) {
  18.         $cat_name = '&nbsp; &nbsp;' . $cat_name;
  19.        
  20.     }
  21.    
  22.     $listId = '';
  23.     if ($cat_id == $catId) {
  24.         $listId = ' id="current"';
  25.     }
  26. ?>
  27. <li<?php echo $listId; ?>><a href="<?php echo $url; ?>"><?php echo $cat_name; ?></a></li>
  28. <?php
  29. }
  30. ?>
  31. </ul>

y este es el que muestra las categorias

Código PHP:
Ver original
  1. <?php
  2. require_once 'config.php';
  3.  
  4.  
  5. function formatCategories($categories, $parentId)
  6. {
  7.    
  8.     $navCat = array();
  9.    
  10.  
  11.     $ids = array();
  12.     foreach ($categories as $category) {
  13.         if ($category['cat_parent_id'] == $parentId) {
  14.             $navCat[] = $category;
  15.         }
  16.        
  17.        
  18.         $ids[$category['cat_id']] = $category;
  19.     }  
  20.  
  21.     $tempParentId = $parentId;
  22.    
  23.  
  24.     while ($tempParentId != 0) {
  25.         $parent    = array($ids[$tempParentId]);
  26.         $currentId = $parent[0]['cat_id'];
  27.  
  28.        
  29.         $tempParentId = $ids[$tempParentId]['cat_parent_id'];
  30.         foreach ($categories as $category) {
  31.        
  32.             if ($category['cat_parent_id'] == $tempParentId && !in_array($category, $parent)) {
  33.                 $parent[] = $category;
  34.             }
  35.         }
  36.        
  37.        
  38.         array_multisort($parent);
  39.         $n = count($parent);
  40.         $navCat2 = array();
  41.        
  42.         for ($i = 0; $i < $n; $i++) {
  43.             $navCat2[] = $parent[$i];
  44.             if ($parent[$i]['cat_id'] == $currentId) {
  45.                 $navCat2 = array_merge($navCat2, $navCat);             
  46.             }
  47.         }
  48.        
  49.         $navCat = $navCat2;
  50.     }
  51.  
  52.  
  53.     return $navCat;
  54. }
  55.  
  56.  
  57. function getCategoryList()
  58. {
  59.     $sql = "SELECT cat_id, cat_name, cat_image
  60.             FROM tbl_category
  61.             WHERE cat_parent_id = 0 LIKE 'A%'
  62.             ";
  63.     $result = dbQuery($sql);
  64.    
  65.     $cat = array();
  66.     while ($row = dbFetchAssoc($result)) {
  67.         extract($row);
  68.        
  69.         if ($cat_image) {
  70.             $cat_image = WEB_ROOT . 'images/category/' . $cat_image;
  71.         } else {
  72.             $cat_image = WEB_ROOT . 'images/no-image-small.png';
  73.         }
  74.        
  75.         $cat[] = array('url'   => $_SERVER['PHP_SELF'] . '?c=' . $cat_id,
  76.                        'image' => $cat_image,
  77.                        'name'  => $cat_name);
  78.  
  79.     }
  80.    
  81.     return $cat;           
  82. }
  83.  
  84.  
  85. function getChildCategories($categories, $id, $recursive = true)
  86. {
  87.     if ($categories == NULL) {
  88.         $categories = fetchCategories();
  89.     }
  90.    
  91.     $n     = count($categories);
  92.     $child = array();
  93.     sort($child);
  94.     for ($i = 0; $i < $n; $i++) {
  95.         $catId    = $categories[$i]['cat_id'];
  96.         $parentId = $categories[$i]['cat_parent_id'];
  97.         if ($parentId == $id) {
  98.             $child[] = $catId;
  99.             if ($recursive) {
  100.                 $child   = array_merge($child, getChildCategories($categories, $catId));               
  101.             }  
  102.         }
  103.     }
  104.    
  105.     return $child;
  106. }
  107.  
  108. function fetchCategories()
  109. {
  110.     $sql = "SELECT cat_id, cat_parent_id, cat_name, cat_image, cat_description
  111.             FROM tbl_category
  112.             ORDER BY cat_name ASC";
  113.     $result = dbQuery($sql);
  114.    
  115.     $cat = array();
  116.     while ($row = dbFetchAssoc($result)) {
  117.         $cat[] = $row;
  118.     }
  119.    
  120.     return $cat;
  121. }
  122.  
  123. ?>

Con el codigo de stramin, casi que funciono

Código PHP:
Ver original
  1. <?php
  2. sort($categories); //este codigo
  3. foreach ($categories as $category) {
  4. extract($category);
  5.  
  6. $level = ($cat_parent_id == 0) ? 1 : 2;
  7. $url = $_SERVER['PHP_SELF'] . "?c=$cat_id";
  8.  
  9. if ($level == 2) {
  10. $cat_name = '&nbsp; &nbsp;' . $cat_name;
  11.  
  12. }
  13.  
  14. $listId = '';
  15. if ($cat_id == $catId) {
  16. $listId = ' id="current"';
  17. }
  18. ?>


Pero no los ordenaba por cat_id ! A ver si varios ojos ven mejor que 2 y encontrmos el problemita!?

Un