dポイントプレゼントキャンペーン実施中!

以前にも質問しましたが、新たに壁にぶつかってしまったので再度投稿させていただきます。

ToDoリストを作っており、予定を入力フォームからデータベースへ登録、表示することまではできました。
現在は、表示されている全ての予定レコードの右端に"更新"と"削除"のボタンを設置し、それぞれの動作を行いたいと考えております。
それぞれのボタンに<input type=hidden name=No value='.$row[No].'>と記述し、更新箇所を入力するフォームを別ファイルで用意してあります。

しかし"更新"ボタンを押しても、

Notice: Undefined variable: No in C:\××××××××××\input_update.php on line 17
データは削除済か、もしくは存在しません。

というエラーメッセージが出てしまいます。(※"データは削除済みか~"は自分で記述したメッセージです。)実際にデータはあるので、変数の受け渡しがうまくいってないと思うのですが・・・
調べると、「未定義の変数があるよ」という事なのでしょうが、未定義の変数というものが分かりません。


all_todo.php

<?php
$conn = mysql_connect("localhost","root","×××");
if($conn == false)
{die("MySQL 接続エラー");}
mysql_set_charset("sjis");
mysql_select_db("todo");
$sql="SELECT * FROM `todo`";

$todo_list=mysql_query($sql);
while($row=mysql_fetch_array($todo_list))
{
echo("<tr id='honbun'>");
echo("<td>"."<input id='c_change' type='checkbox' name='check' value='check'>".$row["済"]."</td>");
echo("<td id='No'>".$row["No"]."</td>");
echo("<td id='title'>".$row["タイトル"]."</td>");
echo("<td id='todo'>".$row["内容"]."</td>");
echo("<td id='limit'>".$row["期限"]."</td>");
echo("<td id='priority'>".$row["優先度"]."</td>");

echo("<form action=input_update.php method=post>");
echo("<input type=hidden name=No value='.$row[No].'>");
echo("<td><input type=submit value=更新></td>");
echo("</form>");

echo("<form action=input_update.php method=post>");
echo("<input type=hidden name=No value='.$row[No].'>");
echo("<td><input type=submit value=削除></td>");
echo("</form>");
echo("</tr>\n");

}
mysql_free_result($todo_list);
mysql_close();
?>


input_update.php

<?php
$conn = mysql_connect("localhost","root","×××");
if($conn == false)
{die("MySQL 接続エラー");}
mysql_set_charset("sjis");
mysql_select_db("todo");
$sql="SELECT `No`,`タイトル`,`内容`,`期限`,`優先度` FROM `todo` WHERE `No`='$No'";

$todo_list=mysql_query($sql);
if(!$row=mysql_fetch_array($todo_list))
{die("データは削除済か、もしくは存在しません。");}

echo "<form action=update.php method=post>";
echo "タイトル<input type=text name=タイトル value=\"" . $row["title"] . "\"> ";
echo "内容<input type=text name=内容 value=\"" . $row["todo"] . "\"> ";
echo "期限<input type=text name=期限 value=\"" . $row["limit"] . "\"> ";
echo "優先度<input type=text name=優先度 value=" . $row["priority"] . "> ";
echo "<input type=hidden name=id value=" . $id . ">";
echo "<input type=submit value=更新>";
echo "</form>";

mysql_free_result($todo_list);
mysql_close();
?>


というコードです。
私の推測では、

>{die("データは削除済か、もしくは存在しません。");}

というメッセージが表示されていることから、フォームからデータの受け渡しは出来ているのだと思います。ただ、意図した変数が渡されていないと思うのですが、フォームのvalue='.$row[No].'という記述に問題があるのか、はたまたname=Noの部分か、SELECT文の記述が悪いのかまったく分かりません。

どなたか知恵をお貸しください。
お願いいたします。

A 回答 (2件)

>$sql="SELECT `No`,`タイトル`,`内容`,`期限`,`優先度` FROM `todo` WHERE `No`='$No'";



$Noという変数はどこで何をセットしていますか?register_globalsがoffの環境(php4.2.0以降はこちらがデフォルトです)では、$_POST['No']と$Noは違う変数です。

http://www.php.net/manual/ja/ini.core.php#ini.re …
    • good
    • 0
この回答へのお礼

返答が遅れてしまい、申し訳ありません。
おっしゃる通り、$Noへセットするのを見落としていました。
その後つまずくこともありましたが、無事に動くプログラムを作ることが出来ました。
感謝いたします。ありがとうございました。

お礼日時:2011/12/02 11:38

すんごいシンプルな実例を上げますね。



↓ エラー出ます。
<?php
print $No;
?>

↓ エラー出ません。
<?php
$No = 0;
print $No;
?>

つまり、Undefined 関係のエラーって そういう事なんです。
    • good
    • 0
この回答へのお礼

返答が遅れてしまい申し訳ありません。
すんごいシンプルですね(笑)
でも非常にピンポイントで問題点を指摘していただいてるので、すぐに分かりました。
感謝いたします。ありがとうございました。

お礼日時:2011/12/02 11:41

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