電子書籍の厳選無料作品が豊富!

一覧画面に更新ボタンを作成しました
更新ボタンを押すとkoushin_input.phpにデータを渡し入力フォームを表示され番号、氏名、住所が選択されたデータが表示されるようにしたいのでが更新ボタンを押しても下記のように出ます

string(64) "SELECT `番号`,`氏名`,`住所` FROM tbl_test where `番号`=0" bool(false) データが削除されています

ソースコードはtop.php
一覧画面です
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>一覧画面</title>
</head>
<body>
<BLOCKQUOTE>
<BR>一覧画面<BR><BR>
<?php
$con=mysqli_connect("localhost","root","admin","db_test");
if(isset($_GET["del"]) and isset($_GET["id"]) and $_GET["del"]==1){
$id=(int) $_GET["id"];
$result = mysqli_query($con,"DELETE FROM tbl_test where `番号`={$id}");
}
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM tbl_test");

echo "<table border='1'>
<tr>
<th>番号</th>
<th>氏名</th>
<th>住所</th>
</tr>";

while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['番号'] . "</td>";
echo "<td>" . $row['氏名'] . "</td>";
echo "<td>" . $row['住所'] . "</td>";
echo "<form action=koushin_input.php method=get>";
echo "<td><input type=submit value=更新></td>";
echo "</form>";
echo "<td><a href=\"".$_SERVER["SCRIPT_NAME"]."?del=1&amp;id=".$row['番号']."\">削除</a></td>";

echo "</tr>";
}
echo "</table>";


mysqli_close($con);
?>

<BR><BR><BR> <A HREF="http://localhost/regist.php">
<INPUT TYPE = "SUBMIT" VALUE = "新規登録"></A>

</BLOCKQUOTE>
</body>
</html>

受け取る側
koushin_input.phpです


<html>
<body>
<?php
// データベースに接続
if(!$con=mysql_connect("localhost","root","admin")){
echo"接続エラー";
exit;
}

// データベースを選択
if(!mysql_select_db("db_test",$con)){
echo"データベース選択エラー";
exit;
}

// SELECT文を実行
$id=(isset($_GET["id"]))?((int) $_GET["id"]):0;
$sql = "SELECT `番号`,`氏名`,`住所` FROM tbl_test where `番号`={$id}";
var_dump($sql);
if(!$res=mysql_query($sql)){
echo "SQL実行時エラー";
exit;
}
// データの存在チェック
if(!$row=mysql_fetch_array($res)){
$row=mysql_fetch_array($res);
var_dump($row);
echo "データが削除されています";
exit;
}


// 入力画面の出力
echo "<form action=koushin.php method=post>";
echo "名前:<input type=text name=NAME value=\"" . $row['氏名'] . "\"> ";
echo "住所:<input type=text name=ADDR value=" . $row['住所'] . "> ";
echo "<input type=submit value=更新>";
echo "</form>";

// 結果セットの解放
mysql_free_result($res);

// データベースから切断
mysql_close($con);
?>
</body>
</html>

どこが原因なんでしょうか?

A 回答 (2件)

top.php の


echo "<form action=koushin_input.php method=get>";
echo "<td><input type=submit value=更新></td>";
echo "</form>";
で id を渡していないから。
HTMLの基本です。
echo "<form action=koushin_input.php method=get>";
echo "<input type=hidden name=id value=".$row['番号'].">";
echo "<td><input type=submit value=更新></td>";
echo "</form>";
としましょう。
    • good
    • 0
この回答へのお礼

ありがとうございます

string(65) "SELECT `番号`,`氏名`,`住所` FROM tbl_test where `番号`=11"
こう出ます

お礼日時:2014/04/16 17:06

top.phpのGETパラメータに、「id」が存在しないようですが。


<form>~</form>の間に送るべき値、例えば
echo "<input type=\"hidden\" value=\"$row['番号']\">";
などがありません。

URLで、koushin_input.phpの後ろにGETパラメータありますか?

これだと、koushin_input.phpの
$id=(isset($_GET["id"]))?((int) $_GET["id"]):0;
この部分は、必ず0になると思われます。


もしなら
echo "<form action=koushin_input.php method=get>";

echo "<form action=koushin_input.php?id=$row['番号'] method=get>";
としてもいいかもしれません。
当然、限定的な環境下での利用方法になりますが。


で、データが削除されたのではなく、番号=0が純粋に
存在しないから発生しているのではないでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます
出来ました

お礼日時:2014/04/17 09:41

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