-1

重複の可能性:
PHP: 「通知: 未定義の変数」および「通知: 未定義のインデックス」

こんにちは、レコードの更新中に問題が発生しました..編集ボタンをクリックすると、レコードは更新されませんが、すべての投稿変数に次のエラーが表示されます..どんな種類のコメントや助けも本当に感謝しています...

これは course-edit.php です

<?php include("../includes/config.php"); ?>
<?php

if ($_SESSION["isteacher"])
{

$con=mysql_connect($dbserver,$dbusername,$dbpassword);
if (!$con) { die('Could not connect: ' . mysql_error()); }

mysql_select_db($dbname, $con);
$courseid=$_GET["id"];
$result = mysql_query("SELECT * FROM courses WHERE (id='".$courseid."')");
while($row = mysql_fetch_array($result))
{
   $id=$row['id'];
   $title = $row['title'];
   $des = $row['description'];
   $subjectid = $row['subjects-id'];
}
mysql_close($con);
?>


<script type="text/javascript">
$(function() {
            $("form").validity(function() {
                $("#title")
                    .require("This Field Must Be Filled!!")
            });
        });
    </script>
<?php include("../includes/header.php"); ?>
<?php include("includes/nav.php"); ?>
<div id="maincontent">
<div class="span-24 last">
<div id="breadcrumbs">
    <a href="index.php">Home</a> >
     <a href="manage-courses.php">Manage Courses</a> >
     <a href="courses-list.php">List Courses</a> >
     Edit Course
</div>
</div>
<?php include("../teacher/includes/manage-courses-aside.php"); ?>
<div class="span-18 last">
<h2 class="alt">Edit Course</h2>

<form id="form" method="post" action="courses-edit-action.php">
<input type="hidden" value="<?php echo $courseid; ?>" name="id" />
 <label>Course Name:</label><input type="text" name="title" id="title" class="text"   value="<?php echo $title; ?>" /><br /><br />
<label>Choose Subject:</label>
<?php

$con=mysql_connect($dbserver,$dbusername,$dbpassword);
if (!$con) { die('Could not connect: ' . mysql_error()); }

mysql_select_db($dbname, $con);
$result = mysql_query("SELECT * FROM subjects");

echo "<select name='subjects-id'>\n";
while($row = mysql_fetch_array($result))
{
echo "<option value='".$row['id'] . "'";
if ($subjectid==$row['id'])
echo 'selected="selected"';
echo " >" . $row['subjectname'] . "</option>\n";
}
echo "</select>\n";
mysql_close($con);
?>
<label>Description:</label><textarea name="description" id="description"><?php echo    $des; ?></textarea><br /> <br />
    <input type="submit" value="Edit Course" class="button" />
</form>

<?php include("../includes/footer.php"); ?>
<?php
}
else
{
    header("Location: ".$fullpath."login/unauthorized.php");

}
?>

これは course-edit-action.php です

<?php include("../includes/config.php");?>
<?php

$id=$_POST["id"];
$title=$_POST["title"];
$des=$_POST["description"];
$subjectid=$_POST["subjects-id"];

$con=mysql_connect($dbserver,$dbusername,$dbpassword);
if (!$con) { die('Could not connect: ' . mysql_error()); }
mysql_select_db("ombts", $con);
$query=("UPDATE courses SET title='".$title."', description='".$des."', 'subjects-  id'='".$subjectid."' WHERE (id='".$id."')");
$query=mysql_query($query);
 if($result){
echo header("Location:manage-courses.php?status=2");
}
mysql_close($con);
?>

そして警告は

Notice: Undefined index: id in C:\xampp\htdocs\project\teacher\courses-edit-action.php on line 4

Notice: Undefined index: title in C:\xampp\htdocs\project\teacher\courses-edit-action.php on line 5

Notice: Undefined index: description in C:\xampp\htdocs\project\teacher\courses-edit-action.php on line 6

Notice: Undefined index: subjects-id in C:\xampp\htdocs\project\teacher\courses-edit-action.php on line 7
4

3 に答える 3

2

アクセスしようとすると

$id=$_POST["id"];
$title=$_POST["title"];
$des=$_POST["description"];
$subjectid=$_POST["subjects-id"];

この POST 変数。しかし、初めてスクリプトにアクセスするとき、この値は POST 変数に設定されていません。

issetで値をチェックします。

if(!isset($_POST["id"]) {
    $_POST["id"] = '';
}

または、チェックされた値を新しい変数に安全にします

$id = isset($_POST["id"]) ? $_POST["id"] : 0;

例えば。

于 2012-09-26T08:20:00.143 に答える
2

@Stony の回答は、POST データを送信しているかどうかを確認するための優れたソリューションです。送信していない場合は、存在しないデータを取得しようとしないでください。

$_POST["id"];さて、そこにあるはずだと思うなら、何かが欠けています。POST の代わりに GET を使用していますか?

送信されたデータを確認するには、print_r($_POST). これが空白の場合は、 を実行しprint_r($_REQUEST)ます。これがまだ空白の場合、前のページからデータが送信されていません。

これを URL に追加して確認することもできます&id=75(または、URL?id=75に他のパラメーターがない場合)。これによりデータが送信され、表示されるエラーが 1 つ少なくなります。

于 2012-09-26T11:42:03.230 に答える
2

Modify your script like this....

    $id= isset($_POST["id"]) ?$_POST["id"] : 0 ;
    $title= isset($_POST["title"]) ? $_POST["title"] : '' ;
    $des=isset($_POST["description"]) ? $_POST["description"] : '';
    $subjectid= isset($_POST["subjects-id"]) ? $_POST["subjects-id"] : '';

Edited Also, i see an error here...

$query=mysql_query($query);
 if($result){

should be

$result=mysql_query($query);
 if($result){

If you still can't update the table, print the $query variable before you do mysql_query. Tell me what you see and i will help you.....

于 2012-09-26T08:18:52.680 に答える