0

同じ名前のラジオ ボタンが 5 つあるページに必須フィールドの検証を追加しようとしています。ユーザーがボタンをクリックして次のページに進むと、エラーが表示されます。以下は現在使用しているコードですが、何もしていません

<?php
if (empty($_POST) === false) {
$required_fields = array('q1');
foreach($_POST as $key=>$value) {
if (empty($value) && in_array($key, $required_fields) === true) {
    $errors[] = 'Please select a number between 1-5';
    break 1;
    }
}
if (empty($errors) === true) {
    if(!isset($_POST['q1'])){ 
    $errors[] = "Please select a number between 1-5"; 
} 

}
}
?>      

<h1>Assessment</h1>

<?php
if (isset($_GET['success']) && empty($_GET['success'])) {

} else {
if (empty($_POST) === false && empty($errors) === true) {
$updateassessment = array(
    'q1'                => $_POST['q1'],
);

updateassessment($updateassessment);
header ('Location: question2.php');
exit();

} else if(empty($errors) === false){
echo output_errors($errors);
}
?>

<form action="" method="post">

<p class="p1">
Question 1</p>
<p class="p4">
<?php
$result = mysql_query("SELECT * FROM traits WHERE Question = 'q1'");

while($row = mysql_fetch_array($result))
  {
  echo $row['fromtrait'] . ' - ' . $row['totrait'];
  echo "<br />";
  }


?></p>

<p class="p3">
<input type="radio" name="q1" value="1" />
1
<input type="radio" name="q1" value="2" />
2
<input type="radio" name="q1" value="3" />
3
<input type="radio" name="q1" value="4" />
4
<input type="radio" name="q1" value="5" />
5


</p><br><br>
  <input type="image" src="Images/image1.png" name="submit" align="right"/>
</form>

追加することでこれを機能させました

if (empty($errors) === true) {
    if(!isset($_POST['q1'])){ 
    $errors[] = "Please select a number between 1-5"; 
} 

}
4

2 に答える 2

0

(フォームで) action="" を action=" " に設定する必要があり<filename>ます。そうしないと、ユーザーがフォームを送信した後、PHP はどこに「移動」するかわかりません。ファイル名はphpファイルを参照します。

于 2013-04-23T00:02:54.747 に答える
-1

その性質上、PHP チェックを行うにはページをリロードする必要があるため、PHP はフォームを検証する非効率的な方法です。おそらくクライアント側のソリューションを実装できますが、そうでない場合は、これを試して、探していることができるかどうかを確認してください...

$required_fields = array('q1');
foreach ($required_fields as $field) {
    if (isset($_POST[$field]) && !empty($_POST[$field])) {
         echo $field." was set<br>\n";
    } else {
        echo "validation for $field failed!<br>\n";
    }
}

また... Javascriptはオプションですか?jquery ValidationEngine は非常に便利で、フィールド要件の多くをチェックし、フォームが送信される前に検証して、PHP がチェックを行う必要性を軽減します。

于 2013-04-23T00:16:42.873 に答える