web-dev-qa-db-fra.com

Tableau multidimensionnel PHP à partir du résultat mysql

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

26
Levi Self
$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;
}
26
KeatsKelleher

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.

1
CoasterChris
$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];
  }

}

}
0
novice