###実現したいこと
PHPでデータベースをLEFTJOINしてそれを表示したい。
ただ、テーブルをleftjoinしているため複数行になる(idや名前が重複する)為に上手く表示できません。
理想としてはhtmlでソースを見たときに
html
1<ul><!--ここは表示できる--> 2<ul> 3<li>佐藤</li> 4<li>168cm</li> 5<li>59kg</li> 6</ul> 7個人リンク<!--ここ以下のリンクが上手く表示できない--> 8<ul> 9<li><a href="http://a~">ツイッター</a></li> 10<li><a href="http://b~">フェイスブック</a></li> 11</ul>
のように表示したいです。
参考ですがバンドのメンバー個人のページを作っています。
下の通りidをしていて
sql
1SELECT * FROM cast RIGHT JOIN cast_add ON cast.id = cast_add.id LEFT JOIN cast_link ON cast.id=cast_link.id WHERE cast.id=?
これで表示されるテーブルは
sql
1【id】【name】【height】【weight】【site_url】【site_name】 21 佐藤 168 59 http://a~ ツイッター 31 佐藤 168 59 http://b~ フェイスブック
###ソースコード
現在のソースコードは
php
1<?php 2 3//接続は省略 4 5 $st = $pdo->prepare("SELECT * FROM cast RIGHT JOIN cast_add ON cast.id = cast_add.id LEFT JOIN cast_link ON cast.id=cast_link.id WHERE cast.id=?"); 6 $st->execute(array($id)); 7 while ($row = $st->fetch()) { 8 $name = htmlspecialchars($row['detail_name']); 9 $height = htmlspecialchars($row['height']); 10 $weight = htmlspecialchars($row['weight']); 11 $link_url[] = htmlspecialchars($row['link_url']); 12 $link_sitename[] = htmlspecialchars($row['link_sitename']); 13 14 } catch (PDOException $e) { 15 16 // 例外が発生した場合はここでキャッチしてエラーメッセージを取得する 17 $error = $e->getMessage(); 18 echo $error; 19 } 20} 21?>
html
1<h3 class="modal_title"><?= $row['detail_name']; ?>のプロフィール</h3> 2 <ul> 3 <li> 4 <?= $height; ?>cm <?= $weight; ?>kg 5 </li> 6</ul> 7 8 <span class="modal_detail_title">個人のリンク</span> 9<ul> 10 <?php foreach ($link_url as $link_sitename[] => $value): ?> 11 <li> 12 <a href="<?= $value ?>"> 13 <?= $link_sitename ?> 14 </a> 15 </li> 16<?php endforeach; ?> 17 18 19 20 21 </ul> 22
です。
###現在出てる不具合
しかしこの状態でブラウザで確認してみると
html
1<h3 class="modal_title"><?= $row['detail_name']; ?>のプロフィール</h3> 2<ul><!--ここは表示できる--> 3<ul> 4<li>佐藤</li> 5<li>168cm</li> 6<li>59kg</li> 7</ul> 8<span class="modal_detail_title">個人のリンク</span> 9<ul> 10<li><a href="http://a~">Array</a></li> <!---URLは上手く表示できてるが--> 11<li><a href="http://b~">Array</a></li><!--link_sitenameが駄目--> 12</ul>
となってしまいます。
長く分かりにくい説明だと思いますが、ご教授よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/27 01:11