J'ai une table mysql qui ressemble à ceci:
id | uid | title | description | parent
1 | 1 | Portraits | desc. | photostream
2 | 1 | Abstract | descr. | photostream
et j'essaie de construire un tableau multidimensionnel qui finirait par ressembler à ceci:
Array
(
[0]
[id] => 1
[uid] => 1
[title] => Portraits
[description] => desc.
[parent] => photostream
[1]
[id] => 2
[uid] => 1
[title] => Abstract
[description] => descr.
[parent] => photostream
)
J'utilise la requête de sélection:
$query = mysql_query(
"SELECT * FROM `table` WHERE `uid`='1' ORDER BY `id` DESC");
Est-ce que quelqu'un sait comment faire ça? Merci, Levi
$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;
}
Cela n'inclut pas les fonctions sql pour collecter les données mais j'ai fait une table pour mon problème (c'était le même problème exact) C'est ma table aussi d'ailleurs. Donc, c'est plus d'exemple qu'une explication.
Ce n'est pas une explication complète mais c'est un exemple de code.
TABLEAU:
[ID | Parent | nom | href | Titre ]
CODE:
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);
}
}
Je l'ai utilisé pour générer mes liens pour ma barre de navigation. Ensuite, j'ai utilisé une fonction pour en faire une liste à plusieurs niveaux. Pour mon problème. C'est un problème très similaire mais c'était ma solution.
Si vous souhaitez. Au lieu de créer votre propre version. Je peux faire un code similaire en utilisant votre schéma de base de données pour les données à la place ..
Attention: Il semble que cela ne puisse fonctionner que sur une disposition à deux niveaux pour le moment. J'improviserai un peu plus le code et publierai la prochaine version de mon extrait.
$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];
}
}
}