プロが教えるわが家の防犯対策術!

こんばんは。PHP・mysql共に初心者の者です。どなたかお知恵をお貸しください。以下に環境を記します。
Windows2000/sp5 Apache/2.0.55 PHP/5.0.5 MySQL 5.0

簡単な名簿のデータ(ID・名前・年齢・生年月日・住所・電話番号)をMysqlから取り出してブラウザで表示させるだけなんですが、全て表示させるまでは成功しました。
この表示をID・名前・年齢だけにして、各レコードの左端にチェックボックスを配置し、1件または複数件チェックを入れて「詳細を表示」ボタンをおすと、チェックを入れた人のID・名前・年齢・生年月日・住所・電話番号が表示されるようにしたいのです。
while文の中にチェックボックスを組み込んだり、色々と試行錯誤しましたがダメでした。

まったく勉強不足で申し訳ないのですが、どなたか具体的なソースをご教授ください。よろしくお願いします。

以下に、全てのデータ表示のためのソースをさらします。

<?php

$dbserver = "localhost";
$dbuser = "root";
$dbpassword = "";
$dbname = "meibo";

$con = mysql_connect($dbserver,$dbuser,$dbpassword);


mysql_query("set names sjis");


$selectdb = mysql_select_db($dbname);


$sql = "select
id,
name,
age,
bday,
address,
tel,
curdate(),
(year(curdate())-year(bday))
- (right(curdate(),5)<right(bday,5))
as age
from meibo_1";


$rst = mysql_query($sql);




$body = mysql_num_rows($rst) . "件のデータがあります。. <br><br>";


$body .= "<table border='1'>
<tr>
<th NOWRAP>ID</th>
<th NOWRAP>氏名</th>
<th NOWRAP>年齢</th>
<th NOWRAP>生年月日</th>
<th NOWRAP>住所</th>
<th NOWRAP>電話番号</th>

 </tr>";



while ($col = mysql_fetch_array($rst)) {
$body .= "<nobr><tr>" .
"<td NOWRAP>$col[id]</td>" .
"<td NOWRAP>$col[name]</td>" .
"<td NOWRAP>$col[age]</td>" .
"<td NOWRAP>$col[bday]</td>" .
"<td NOWRAP>$col[address]</td>" .
"<td NOWRAP>$col[tel]</td>" .
"</tr></nobr>";
}

$body .= "</table>";

mysql_free_result($rst);

$con = mysql_close($con);

?>

<!doctype html public "-//w3c//dtd html 4.01 transitional//en">
<html>
<head>
</head>
<body>
<?=$body?>
</body>
</html>

A 回答 (2件)

おっと・・・



eof;
<html>


eof;
?>
<html>
としてください。
phpを閉じるのを忘れてました
    • good
    • 0
この回答へのお礼

yambejp さま

ありがとうございます。試行錯誤の末、やっとラジオボタンが出現しました。
と、ここで新たな問題が出てきまして、ヘッダ部と表示部を別々に<table>タグで囲んであるせいか、セルの大きさの整合性が取れなくなりました。
表示部では、データの文字列の長さによってそれぞれのセルの大きさが違っている状態です。何か良いアイデアはないものでしょうか?
長くなりますのでwhile文からのソースを晒します。


while ($col = mysql_fetch_array($rst)) {
$body .=<<<eof
<table>
<tr>
<td NOWRAP><input type="checkbox" name="chk[]" value="{$col["id2"]}"></td>
<td NOWRAP>{$col["id"]}</td>
<td NOWRAP><a href='/meibo_view.php?id={$col["id"]}'>$col[name]</a></td>
<td NOWRAP>{$col["age"]}</td>
</tr>
</table>
eof;
}

$body = <<<eof
<table>
<tr>
<th NOWRAP>詳細</th>
<th NOWRAP>ID</th>
<th NOWRAP>氏名</th>
<th NOWRAP>年齢</th>
</tr>
{$body}
</table>

eof;



mysql_free_result($rst);

$con = mysql_close($con);

?>

お礼日時:2007/08/13 04:05

チェックボックスで配列(っぽく)で受けるとデータの取扱いが


楽になります。実際の運用上はエスケープしたりなんだりが
必要ですが・・・

<?php


while ($col = mysql_fetch_array($rst)) {
$body .=<<<eof
<tr>
<td NOWRAP><input type="checkbox" name="chk[]" value="{$col["id"]}"}></td>
<td NOWRAP>{$col["id"]}</td>
<td NOWRAP>{$col["name"]}</td>
<td NOWRAP>{$col["age"]}</td>
<td NOWRAP>{$col["bday"]}</td>
<td NOWRAP>{$col["address"]}</td>
<td NOWRAP>{$col["tel"]}</td>
</tr>
eof;
}

$body = <<<eof
<table border='1'>
<tr>
<th NOWRAP>チェック</th>
<th NOWRAP>ID</th>
<th NOWRAP>氏名</th>
<th NOWRAP>年齢</th>
<th NOWRAP>生年月日</th>
<th NOWRAP>住所</th>
<th NOWRAP>電話番号</th>
</tr>
{$body}
</table>

eof;
<html>
<head>
</head>
<body>
<form>
<?php
print $body;
?>
<input type="submit" value="詳細">
</form>
</body>
</html>

この回答への補足

ご回答ありがとうございます。
ひとつ不明な点があるのですが、

<td NOWRAP><input type="checkbox" name="chk[]" value="{$col["id"]}"}></td>

の中の value="{$col["id"]}"} は value="{$col["id"]}"ではないでしょうか。
これを直してリロードしたのですが、下から12行目の<html>に
Parse error: parse error, unexpected '<' が出ます。

実際のソースを回答へのお礼にさらしますので、宜しくお願いいたします。

補足日時:2007/08/12 23:19
    • good
    • 0
この回答へのお礼

<?php

$dbserver= "localhost";
$dbuser= "root";
$dbpassword= "";
$dbname= "meibo";

$con = mysql_connect($dbserver,$dbuser,$dbpassword);


mysql_query("set names sjis");


$selectdb = mysql_select_db($dbname);


$sql = "select
id,
name,
curdate(),
(year(curdate())-year(bday))
- (right(curdate(),5)<right(bday,5))
as age
order by age,
from meibo_1";


$rst = mysql_query($sql);




$body = mysql_num_rows($rst) . "件のデータがあります。. <br><br>";



while ($col = mysql_fetch_array($rst)) {
$body .=<<<eof
<table>
<tr>
<td NOWRAP><input type="checkbox" name="chk[]" value="{$col["id"]}"></td>
<td NOWRAP>{$col["id"]}</td>
<td NOWRAP>{$col["name"]}</td>
<td NOWRAP>{$col["age"]}</td>
</tr>
</table>
eof;
}

$body = <<<eof
<table>
<tr>
<th NOWRAP>詳細</th>
<th NOWRAP>ID</th>
<th NOWRAP>氏名</th>
<th NOWRAP>年齢</th>
</tr>
{$body}
</table>

eof;
<html>
<head>
<STYLE type="text/css">

TH {
color: #ffffff; /* 文字の色 */
background-color: #666699; /* 背景の色 */
border-style: solid; /* 枠の種類 */
border-color: #9999cc #333366 #333366 #9999cc; /* 枠の色 */
border-width: 5px; /* 枠の幅 */
}
TD {
color: #ffffff; /* 文字の色 */
background-color: #9999cc; /* 背景の色 */
border-style: solid; /* 枠の種類 */
border-color: #ccccff #666699 #666699 #ccccff; /* 枠の色 */
border-width: 5px; /* 枠の幅 */
}

</STYLE>
</head>
<body>
<form>
<?php
print $body;
?>
<input type="submit" value="詳細">
</form>
</body>
</html>

お礼日時:2007/08/12 23:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!