2017-09-29 6 views
0

私は2つのテーブルを持つデータベースを持っており、2つのテーブルは "1対多数"の関係を持っています。
カラム(名前、電話番号、個人ID)を持つデータと呼ばれる1番目のテーブル。
2番目のテーブルには、列(linkid、link、personid)を持つリンクがあります。htmlテーブルに「一対多」の関係を持つ2つのテーブルの列を印刷するにはどうすればよいですか?

PersonIDはforigneキーです。私はリンクが各ユーザーリンクである2つのテーブル(名前、電話、リンク)から3列を印刷したいと思います。

だから私は、テーブルにはそのような何かになりたい:

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>"; 

とテーブルは以下のようになります。

名電話リンク

ジョン67655リンク1

  link2 
      ... 
+0

ので、クエリがありますか? –

+0

どのクエリを意味していますか?ループ内のものか何か? – Sam

+0

'$ result'クエリ –

答えて

0

あなたのお問い合わせは

01のようになります。 PHPで次に
SELECT data.personid, name, phone, link FROM data JOIN links ON data.personid = links.personid 

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

以降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

警告:不正な文字列オフセット 'personid'警告:不正な文字列オフセット 'personid' 警告:不正な文字列オフセット 'name' 警告:無効な文字列オフセット '電話' 警告: 警告:不正な文字列オフセット「リンク」 – Sam

+0

@Samは必ず '$のresults'を作るには、実際のデータベースの結果ではなく、文字列です。 – Justinas

+0

多くの警告があり、何かが、私は疑問に言ったことで明らかに存在していないされている場合、私はそれが – Sam

関連する問題