У меня есть таблица mysql, которая выглядит так:
id | uid | title | description | parent 1 | 1 | Portraits | desc. | photostream 2 | 1 | Abstract | descr. | photostream
и я пытаюсь построить многомерный массив, который будет выглядеть следующим образом:
Array ( [0] [id] => 1 [uid] => 1 [title] => Portraits [description] => desc. [parent] => photostream [1] [id] => 2 [uid] => 1 [title] => Abstract [description] => descr. [parent] => photostream )
Я использую запрос select:
$query = mysql_query( "SELECT * FROM `table` WHERE `uid`='1' ORDER BY `id` DESC");
Кто-нибудь знает как это сделать? Спасибо, Леви
$query = mysql_query("SELECT * FROM table WHERE uid = '1' ORDER BY id DESC"); $results = array(); while($line = mysql_fetch_array($query, MYSQL_ASSOC)){ $results[] = $line; }
Это не включает в себя функции sql для сбора данных, но я создал таблицу для моей проблемы (была та же самая проблема). Кстати, это моя таблица. Так что это скорее пример, чем объяснение.
Это не полное объяснение, а пример кода.
ТАБЛИЦА:
[ID | Родитель | имя | href | заглавие ]
КОД:
foreach ($query->result_array() as $row) { if ($row['parent'] === null) $data[$row['id']][0]= '<a href="'.$row['href'].'"'.($row['title']!==null)?'title="'.$row['title'].'"':''.'>'.$row['name'].'</a>'; else { $temp = '<a href="'.$row['href'].'"'.($row['title']!==null)?'title="'.$row['title'].'"':''.'>'.$row['name'].'</a>'; array_push($data[$row['parent']],$temp); } }
Я использовал это для создания моих ссылок для своего навигатора. Затем я использовал функцию, чтобы сделать из них многоуровневый список. По моей проблеме. Это очень схожая проблема, но это было мое решение.
Если вы хотели бы. Вместо того, чтобы создавать свою собственную версию. Я могу сделать аналогичный код, используя вашу схему базы данных для данных.
Предупреждение. Кажется, это может работать только на двух уровнях. Ill импровизировать код еще несколько и опубликовать следующую версию моего фрагмента.
$query = mysql_query("SELECT * FROM table WHERE uid = '1' ORDER BY id DESC"); $results = array(); $num_fields=mysql_num_fields($query); $num_rows=mysql_num_rows($query); while($line = mysql_fetch_array($query)){ for($i=0;$i<$num_rows;$i++ { for($j=0;$j<$num_fields;$j++ { $results[$i][$j]=$line[$i][$j]; } } }