2017-09-29 10 views
0

J'ai une base de données avec deux tables et les deux tables ont une relation "un à plusieurs".
1ère table appelée données avec colonnes (nom, téléphone, personid).
2ème table appelée liens avec colonnes (linkid, link, personid).Comment imprimer des colonnes de deux tables avec une relation "un à plusieurs" dans une table html?

Personid est la clé forigne, je veux imprimer 3 colonnes à partir des deux tables (nom, téléphone, liens) où les liens sont les liens de chaque utilisateur.

Je veux que la table soit quelque chose comme ça:

echo "<table>";  
echo "<tr><th>Name</th> <th>Phone</th> <th>Links</th></tr>"; 

while ($row = $result->fetchAll(PDO::FETCH_ASSOC)) 
{ 
    echo "<tr>"; 
    echo "<td>".$row['name']."</td>"; 
    echo "<td>".$row['phone']."</td>"; 
    echo "<td>".$row['links']."</td>"; 
    echo "</tr>"; 
} 
echo "</table>"; 

Et la table ressemble à ça:

Nom Téléphone Liens

John 67655 link1

  link2 
      ... 
+0

Alors, où est la requête? –

+0

Quelle requête voulez-vous dire? celui dans la boucle ou quoi? – Sam

+0

Requête '$ result' –

Répondre

0

Votre requête devrait être comme

SELECT data.personid, name, phone, link FROM data JOIN links ON data.personid = links.personid 

Puis en PHP:

$data = []; 

foreach($results as $result) { 
    if (!isset($data[$result['personid']])) { 
     $data[$result['personid']] = [ 
      'name' => $result['name'], 
      'phone' => $result['phone'], 
      'links' => [], 
     ]; 
    } 

    $data[$result['personid']]['links'][] = $result['link']; 
} 

Et plus tard dans HTML:

echo '<table>'; 
foreach ($data as $row) { 
    echo "<tr>"; 
    echo "<td>".$row['name']."</td>"; 
    echo "<td>".$row['phone']."</td>"; 
    echo "<td>".implode(', ', $row['links'])."</td>"; 
    echo "</tr>"; 
} 

echo "</table>"; 
+0

Avertissement: Décalage de chaîne non valide 'personid' Avertissement: Décalage de chaîne non valide 'personid' Avertissement: Décalage de chaîne non valide 'nom' Avertissement: Décalage de chaîne non valide 'téléphone' Avertissement: Décalage de chaîne non valide 'personid' Avertissement: correction de chaîne illégale 'lien' – Sam

+0

@Sam assurez-vous que '$ results' sont des résultats de base de données réels et non une chaîne. – Justinas

+0

Il y a beaucoup d'avertissements, s'il y a quelque chose qui n'est pas clair dans ce que j'ai dit dans la question, je l'effacerais – Sam