次のような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
)
私は選択クエリを使用しています:
$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);
}
}
これを使用して、navbarのリンクを生成しました。次に、関数を使用して、それらから複数レベルのリストを作成しました。私の問題のために。よく似た問題ですが、これが私の解決策でした。
もしよければ。独自のバージョンを作成する代わりに。代わりに、データ用のデータベーススキームを使用して同様のコードを作成できます。
警告:これは、現時点では2レベルのレイアウトでのみ機能するようです。コードをさらに即興で作成し、スニペットの次のバージョンを投稿します。
$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];
}
}
}