こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPでtableをループさせたい!

【急募!】PHPでMysqlから取り出した値をHTMLのtableで出力したい。
うまくいかなくて困ってます。

今回で2度目の質問となります。今回も急いでおります。

現在、プログラムの勉強をして半年近くになります。本日3/3までに作成を完了しなければならず困っております。

何日か掛けて調べたのですが、まだまだ勉強不足の為に理解が出来ませんでした。


PHPで作成をしております。データベースから取り出した値をHTMLで作成したtableに出力後、tableをデータベースに入っている数だけループさせたいです。※イメージ画像あり

おそらくwhile分でループさせれば良いとういうのは理解できるのですが、テーブル自体を増やすやりかたかが解りません。

while(データーベースの値をループさせてひとつずつ出力する。,テーブルも同じ数出力する)
全部取り出したら break で抜ける......となると思うのですが、書き方か解りません。

mysql_fetch_arrayというものもあるようですがまだ理解ができません。
答え合わせになってしまうのが恐縮でございますが、答え合わせのコードを頂けましたら嬉しいです。

まだ理解が浅いため、質問の内容に理解が出来なければ、ご連絡を頂きましたら改善改良をします。


お恥ずかしいですが、ソースを乗せさせて頂きますので宜しくお願い致します。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="css/style2.css" rel="stylesheet" type="text/css">
<title>管理画面</title>
</head>
<body>

<div id="main">

<?php

$dsn='mysql:dbname=motorlinks;host=localhost';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->query('SET NAMES utf8');

$sql='SELECT code,gazou,name,shiyo,price,shiharai,first,sample,comment FROM pone WHERE 1';
$stmt=$dbh->prepare($sql);
$stmt->execute();

print'製品一覧<br><br>';

print'<form method="post"action="pone_branch.php">';
?>


<?php
while(true)
{
$rec=$stmt->fetch(PDO::FETCH_ASSOC);
if($rec==false)
{
break;
}

print $rec['gazou'];
print $rec['name'];
print $rec['shiyo'];
print $rec['price'].'円';
print $rec['shiharai'];
print $rec['first'];
print $rec['sample'];
print $rec['comment'];
print'<br>';
}?>

<table width="800" border="1" cellpadding="0">
<?php print'<input type="radio"name="ponecode"value="'.$rec['code'].'">'; ?>
<tr>
<th colspan="2" rowspan="4" scope="col"><?php '<img src="gazou/burank.jpg" width="200" height="150" alt=""/>'; ?></th>
<th width="162" height="4" scope="col">Product Name</th>
<th width="162" height="4" scope="col">Specification</th>
<th width="162" height="4" scope="col">Price</th>
<th width="162" height="4" scope="col">Payment</th>
</tr>
<tr>
<td height="63">&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<th width="162" height="4" scope="col">First Order</th>
<th width="162" height="4" scope="col">Sample</th>
<th width="162" height="4" scope="col">Comment</th>
<th width="162" height="4" scope="col">Contact</th>
</tr>
<tr>
<td height=63">&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
<?php
print'<br>';

print'<input type="submit" name="disp" value="参照">';
print'<input type="submit" name="add" value="追加">';
print'<input type="submit" name="edit" value="修正">';
print'<input type="submit" name="delete" value="削除">';
print'</form>';

?>
<br>
<a href="index_mo.html">トップメニューへ</a><br>

</form>
</div>
</body>
</html>

投稿日時 - 2014-03-03 18:52:39

QNo.8498543

すぐに回答ほしいです

質問者が選んだベストアンサー

自分で

while(データーベースの値をループさせてひとつずつ出力する。,テーブルも同じ数出力する)


と書いているとおりにソースを書けばいいです。

while ($rec = $stmt->fetch(PDO::FETCH_ASSOC)) {
// $rec にデータを読込んでいるので、それを出力する
}

あるいはprepareする必要がない(プレースホルダがない)ので


foreach ($pdo->query('select * from pone') as $rec) {
// $rec にデータを読込んでいるので、それを出力する
}

でもいいです。


ただ、tableのtr要素に含まれてない部分にinput要素を出力しているのはダメです(htmlソースとして正しくありません)。まずは「正しいhtmlソース」を出力出来るようにしてください(phpより先にhtmlを学んでください)。

投稿日時 - 2014-03-03 19:44:13

お礼

今まで色々と試してみてそして聞いて見ましたが解りませんでした。
しかし、丁寧な説明によりそれを元に考えることが出来ましたので出来ました!

感謝します!!

投稿日時 - 2014-03-05 12:34:54

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問