Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wydajniejszy system hierarchii

Myślę, że coś takiego powinno wystarczyć (nieprzetestowane, musi być dostosowane do twoich potrzeb):

$q = mysql_query("SELECT id, parent_id, name FROM categories");
while ($r = mysql_fetch_row($q)) {
  $names[$r[0]] = $r[2];
  $children[$r[0]][] = $r[1];
}

function render_select($root=0, $level=-1) {
  global $names, $children;
  if ($root != 0)
    echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>';
  foreach ($children[$root] as $child)
    render_select($child, $level+1);
}

echo '<select>';
render_select();
echo '</select>';

jeszcze fajniejszym sposobem na zrobienie tego jest użycie procedur składowanych SQL, ale w tym przypadku może to być przesadą...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zwróć jedną wartość z bazy danych za pomocą mysql php pdo

  2. Jaki jest cel character_set_connection?

  3. Jak stworzyć TRIGGER w SEQUELIZE (nodeJS)?

  4. Jak mogę policzyć liczbę wierszy zwróconych przez zapytanie MySQL?

  5. Ochrona hasła MySQL podczas programowania w Pythonie?