0

ユーザーがデータベース内のレコードを編集できるようにするフォームを作成しようとしています。

Mymain.phpは、ユーザーがレコードをクリックして編集/削除できるテーブルです。

    echo "<td>".$row["fname"].", ".$row["first_name"]."</center></td>";
    echo "<td><center>".$row["gender"]."</center></td>";
    echo "<td><center>".$row["city"]."</center></td>";
    echo "<td><center>".$row["extra"]."</center></td>";
    echo '<td><center><a href="form.php?id='.$row["p_ID"].'"><img src="edit_icon.png"/></a><center></td>';
    echo '<td><center><a href="delete.php?id='.$row["p_ID"].'"><img src="delete.gif"/></a><center></td>';
    echo "</tr>";
    }
?>

<input type="hidden" name="p_ID" value="<?php echo $row["p_ID"]?>"></input>
<input type="hidden" name="lname" value="<?php echo $row["lname"]?>"></input>
etc..


ユーザーが編集アイコン$row['fname']をクリックすると、それぞれのフィールドに値 ( ) を表示する必要があるフォーム ページにリダイレクトされます。提案された解決策を試しましたが、これを正しく達成する方法がまだわかりません。エラーが発生し続けます。これは私が試したものですform.php

@$submit=$_POST['submit'];
@$lname=$_GET['lname'];
@$gender=$_GET['gender'];
@$city=$_GET['city'];
@$extra=$_GET['extra'];
?>

Last name <input type="text" name="lname" value= <?php echo $lname ?>><br><br>
Gender <input type="radio" name="gender" value="M" <?php if($gender=="M") {echo "checked";} else {echo " ";} ?>/>M&nbsp;
<input type="radio" name="gender" value="F" <?php if($gender=="F") {echo "checked";} else {echo " ";} ?>/>F<br><br>
City <select name="city">
    <option value="x">Select</option>
    <?php
    $db=mysql_connect("localhost","root") or die('Not connected : ' . mysql_error());
    mysql_select_db("my_db",$db) or die (mysql_error());
    $SQL="SELECT * FROM cities"; 
    $result=mysql_query($SQL) or die(mysql_error());
    $num_results=mysql_num_rows($result);
    mysql_close($db);
    for ($i=0;$i<$num_results;$i++)
        {
        $row=mysql_fetch_array($result);
        echo"<option value='".$row['city_id']."'", $row['city_id']==$row['city_ID']? " selected='selected'" : '',">".$row['city']."</option>";
        }
    ?>
    </select><br><br>

Extra <input type="checkbox" name="extra" value="yes" <?php if($extra=="yes") {echo "checked";} else {echo " ";} ?>/><br><br>


そして、私は今のところ、SQL インジェクションなどにはあまり関心がありません。これが機能する必要があるだけです。どんな助けにも感謝します!

エラー: すべての未定義のインデックス

4

2 に答える 2

1

mysql_queryが で使用される前に、接続を閉じようとしていmysql_fetch_arrayます。

行を間違ってフェッチしようとしています。

mysql_closeとにかくスクリプトの実行が終了した後に接続が閉じられるため、クエリの後に多くの処理がない限り必要ありません。

また、変数を次のように宣言して、未定義のインデックス エラーを削除します。

$submit = isset($_POST['submit']) ? mysql_real_escape_string($_POST['submit']) : "";

注: これは sql インジェクションからも保護しmysql_real_escape_string()ますが、接続後にのみ機能します。

<?php

$db=mysql_connect("localhost","root") or die('Not connected : ' . mysql_error());
mysql_select_db("my_db",$db) or die (mysql_error());

$submit = isset($_POST['submit']) ? mysql_real_escape_string($_POST['submit']) : "";
//other vars here

$SQL="SELECT * FROM cities"; 
$result=mysql_query($SQL) or die(mysql_error());
while($row = mysql_fetch_array($result)){
  echo "<option value='".$row['city_id']."'>".$row['city']."</option>";
}
mysql_close(); // now you can close the connection
?>
于 2012-06-16T23:54:34.343 に答える
0

必要なのはフォーム送信チェックです。以下は、単一ページの更新スクリプトの一般的な形式です。

<?php
if(isset($_POST['submit'])) {
    // Form was submitted, process it and display message
    exit(); // Prevent form from being displayed again
}
?>
<!doctype html>
<html>
<body>
   <form method="POST" action="form.php">
       <!-- fields -->
       <input type="submit" name="submit" value="Submit" />
   </form>
</body>
</html>
于 2012-06-17T00:01:54.707 に答える