Jump to content
php.lv forumi

mysql_query

Reģistrētie lietotāji
  • Posts

    36
  • Joined

  • Last visited

Posts posted by mysql_query

  1. Nu par 90% ir:

    mysql> SELECT node.name, node.category_id
       -> FROM nested_category AS node,
       -> nested_category AS parent
       -> WHERE node.lft BETWEEN parent.lft AND parent.rgt
       -> group by node.name
       -> order by group_concat(parent.name ORDER BY parent.lft);
    +----------------------+-------------+
    | name                 | category_id |
    +----------------------+-------------+
    | ELECTRONICS          |           1 |
    | PORTABLE ELECTRONICS |           6 |
    | 2 WAY RADIOS         |          10 |
    | CD PLAYERS           |           9 |
    | MP3 PLAYERS          |           7 |
    | FLASH                |           8 |
    | TELEVISIONS          |           2 |
    | LCD                  |           4 |
    | PLASMA               |           5 |
    | TUBE                 |           3 |
    +----------------------+-------------+
    10 rows in set (0.00 sec)
    

     

    Uzlabots variants

     

    Gints Plivna

    http://datubazes.wordpress.com

     

     

    Šis risinājums nestrādā.

  2. Gala risinājums - bezgalīgam menu tree.

     

    function get_path($start) {
    $pathArray = array();
    $query = mysql_query("SELECT * FROM menu WHERE parent='$start' ");
     while ($row = mysql_fetch_array($query)) {
       $pathArray[] = $row;
       $pathArray = array_merge($pathArray, get_path($row['id']));
     }
    return $pathArray;
    }
    

  3. Kā šajama var pielikt LIMIT

     

    <?php
      function show_menu($id) {
              $all = mysql_query("SELECT * FROM main Where parent_id=$id ORDER BY id ASC");
              if (!$all) { echo( mysql_error()); } else {
                      if (mysql_num_rows($all) {
                              echo '<ul class="id_nav">';
                              while ($row = mysql_fetch_array($all)) {
                                      echo '<li><a class="nav" href="?id='.$row['id'].'">'.$row['name'].'</a>';
                                      show_menu($row['id']);
                                      echo '</li>';
                              }
                              echo '</ul>';
                      }
              }
      }
      show_menu(0);
    ?>
    

     

    1. Man ir piem 300 menu kopā.

    2. Iespējams daži ir kā sub, sub sub menu .

    3. tad kā lai sadalu pa lapām? Un lai herahija tupinātos nākamjā lapā.

  4. Kā šajama var pielikt LIMIT

     

    <?php
      function show_menu($id) {
              $all = mysql_query("SELECT * FROM main Where parent_id=$id ORDER BY id ASC");
              if (!$all) { echo( mysql_error()); } else {
                      if (mysql_num_rows($all) {
                              echo '<ul class="id_nav">';
                              while ($row = mysql_fetch_array($all)) {
                                      echo '<li><a class="nav" href="?id='.$row['id'].'">'.$row['name'].'</a>';
                                      show_menu($row['id']);
                                      echo '</li>';
                              }
                              echo '</ul>';
                      }
              }
      }
      show_menu(0);
    ?>
    

     

    1. Man ir piem 300 menu kopā.

    2. Iespējams daži ir kā sub, sub sub menu .

    3. tad kā lai sadalu pa lapām? Un lai herahija tupinātos nākamjā lapā.

  5. Jā tieši tā,

    2 variants. Pieņemsim ka man vajag sakārtot visu alfabētiskā secībā pēc nosaukuma.

     

    Es otro variantu nevaru tikt gālā jau otro dienu.

     

    Domāju ka izmantošu recursive - variantu. Bet te man būs jātierk galā ar LIMIT, vēl nesmu iedziļinājies par limit risinājumu bet domāju kas tas arī varētu būt sāpīgs jautājums.

  6. Tāda administrācija pusē ievada menu un sub sub menu.

     

    ORDER BY node.lft

     

    nosaukums | seciba

     

    aa | 1

    --a1 |1

    --a2 |2

    ----aa1 |1

    ----aa2 |2

     

    bb | 2

    --bb |1

    --bb2|2

     

     

    Ir nepieciešam lai menu saglabā savu hirarhiju arī pēc - ORDER BY node.seciba

    Ja būs ORDER BY node.seciba menu hirarhijā būs sajaukta vietām.

     

    Tātad jautājums, Kā lai saglabā menu hirarhiju arī pēc ORDER BY node.seciba ?

  7. Ir sekojošs query:

     

    SELECT CONCAT( 15 *(COUNT(parent.id) - 1),'') AS spacer

    FROM

    menu AS node,

    menu AS parent

    WHERE node.lft BETWEEN parent.lft AND parent.rgt

    GROUP BY node.id

    ORDER BY node.lft //// vai pēc secības node.seciba

    LIMIT $pg, $limits

     

    1. Visu bezgalīgo menu tree izvada kā vajag, ir ok.

    2 LIMITs darbojas kā vajag, ir ok.

    BET

    3. Nevaru veikt ORDERu pēc secības, ja veicu tad menu tree sajaucas. Katram menu līmeni ir sava secība.

     

    Piem: ORDER BY node.lft

     

    nosakums | seciba |

    aa |1

    --aa |1

    --bb |2

     

    zz |2

    --cc |1

    --dd |2

     

    Piem: ORDER BY node.seciba

     

    nosakums | seciba |

    aa |1

    zz |2

    --aa |1

    --cc |1

    --bb |2

    --dd |2

     

    Kāds varētu būt risinājums.

     

     

    Menu tree ideja ir smelta no

    http://dev.mysql.com/tech-resources/articles/hierarchical-data.html | The Nested Set Model

×
×
  • Create New...