0

送信時にデータを外部 .php スクリプトに送信するフォームが 1 つあります。同じ名前の 2 人の学生をデータベースに挿入する可能性を無効にしたいと考えています。したがって、入力が無効な場合は、フォームの入力フィールドに最後に入力された値が必要です。私はそれを解決しましたが、最後に選択したオプションを取得する方法がわかりませんか? これは私のコードです:

<form action="student.php" name="add-student" method="post" onSubmit="return Validate()">
Firstname:<input type="text" name="firstname" value="<?php  if(isset($_GET['firstname'])){echo $_GET['firstname'];}

Degree:<select name="degree" value="<?php if(isset($_GET['degree'])){echo '<option value=$_GET[["degree"]></option>';} ?>"> **//This is what i can't solve!!!**
<option value="1">First degree</option>
<option value="2">Second degree</option>
<option value="3">Third degree</option>
</select>
</form>

私の外部phpスクリプト:

<?php
$firtsname=$_POST['firstname'];
$degree=$_POST['degree'];

$duplicate=mysqli_query($con,"SELECT * FROM student WHERE firstname='$firstname'");
if(mysqli_num_rows($duplicate)>0)
{
$row = mysqli_fetch_assoc($duplicate);

echo '<script type="text/javascript">';
echo 'alert("Name already exists in db.")';
echo '</script>'; 
echo "<script>window.location.assign('http://localhost/administrator.php?firstname=".$firstname."&degree=".$degree."'); </script>";
}
else{
$sql="INSERT INTO student (firstname,degree) VALUES('$firstname','$degree')";
?>
4

5 に答える 5

0

引用符の問題。この行

<?php if(isset($_GET['degree'])){echo '<option value=$_GET[["degree"]></option>';} ?>

する必要があります -

<?php if(isset($_GET['degree'])){ $v = $_GET['degree']; echo '<option value="$v"></option>';} ?>

ノート

  • 二重引用符 ( ) 内の変数にアクセスできます"$foo"
  • 一重引用符 (' ') 内で変数にアクセスすることはできません$foo。値が $foo の文字列になります。( '$foo'=="\$foo")。

更新- マークアップの形式が正しくありません。

<select name="degree" value="<?php if(isset($_GET['degree'])){echo '<option value=$_GET[["degree"]></option>';} ?>">

実際に次のようなものを印刷します-

<select name="degree" value="<option value=x</option>"> <!-- Wrong! -->

これを試して -

    <select name="degree">
    <?php if(isset($_GET['degree'])){$deg = $_GET["degree"]; echo "<option selected="selected" value=\"$deg\"></option>";} ?>">
于 2013-03-30T12:18:25.847 に答える
0

私はこれを解決しました、とにかく助けてくれてありがとう、それは次のようになるはずです:

Degree:<select name="degree">
<option value="1" <?php if($_GET['degree']=='1') {?> selected="selected" <?php }; ?> >First degree</option>
<option value="2" <?php if($_GET['degree']=='2') {?> selected="selected" <?php }; ?> >Second degree degree</option>
<select>
于 2013-11-10T20:49:23.053 に答える
0

データベースが機能するようになったら、そのままにしておきます。あなたの場合、実際のデータベース操作の多くに PHP を使用します。

  1. データベース内の列 firstname のキーが一意に設定されていることを確認してください。
  2. クエリでパラメーターを使用する (SQL インジェクションを回避するため)

私はこのようなことをします:(私はテストしていません)

<?php
$firstname=$_POST['firstname'];
$degree=$_POST['degree'];

$stmt = $mysqli->prepare("INSERT IGNORE INTO student (firstname,degree) VALUES(?, ?)");
$stmt->bind_param($firstname, $degree);
$result = $stmt->execute();
$lastInsertID = $stmt->insert_id;

//lastInsertID would be 0 if no execution of INSERT has been made (based on the IGNORE keyword)
if($lastInsertID == 0)  
{
    echo '<script type="text/javascript">';
    echo 'alert("Name already exists in db.")';
    echo '</script>'; 
    echo "<script>window.location.assign('http://localhost/administrator.php?firstname=".$firstname."&degree=".$degree."'); </script>";
}

?>

正しくない場合にオプションを取得するという問題を解決するには、行を次のように変更します。

Firstname:<input type="text" name="firstname" value="<?php if(isset($_GET['firstname'])){echo $_GET['firstname'];}?> " />
Degree:<select name="degree" value="<?php if(isset($_GET['degree'])){echo '<option value="' . $_GET["degree"] . '"></option>';} ?>">

また、リダイレクトを次のように変更します。

echo "<script type=\"text/javascript\">window.location.assign('http://localhost/administrator.php?firstname='.$firstname.'&degree='.$degree); </script>";
于 2013-03-30T12:57:49.750 に答える
0

これに変更

   Degree:<select name="degree" value="<?php if(isset($_GET['degree'])){echo '<option
    value='".$_GET["degree"]."' selected></option>';} ?>">
于 2013-03-30T11:49:58.673 に答える
0

入力フォームとドロップダウン フォームを一緒に誤って使用する。これを試して

<form action="student.php" name="add-student" method="post" onSubmit="return Validate()">
Firstname:<input type="text" name="firstname" value="<?php  if(isset($_GET['firstname'])){echo $_GET['firstname'];}?>">
</form>
Degree:<select name="degree"> 
<option value="<?php if(isset($_GET['degree'])){echo $_GET["degree"];}?>"></option>
<option value="1">First degree</option>
<option value="2">Second degree</option>
<option value="3">Third degree</option>
</select>
于 2013-03-30T12:10:06.677 に答える