1

チェックボックスが正しく機能していません。3つのチェックボックスがあります。3 つのチェックボックスをすべて選択しても、エラーは発生しません。しかし、1つまたは2つのチェックボックスを選択すると、次のようなエラーが発生します:

注意: 未定義のインデックス: C:\wamp\www\test\secpage.php の 16 行目の chke

<html>
<body>
<table>
    <form method="post" action="secpage.php">
        <tr>
            <td colspan="2"><center><h4>Registartion Form</h4></center></td>
        </tr>

        <tr>
            <td>Username : </td>
            <td><input type="text" name="txtname" value=""/></td>
        </tr>

        <tr>
            <td>Password : </td>
            <td><input type="password" name="txtpass" vale=""/></td>
        </tr>

        <tr>
            <td>Email : </td>
            <td><input typ="text" name="txtemail" value=""/></td>
        </tr>

        <tr>
            <td>Address : </td>
            <td><textarea name="add" /></textarea></td>
        </tr> 

        <tr>
            <td>Subjects : </td>
            <td><input type="checkbox" name="chkm" value="Maths"</td>Maths
            <td><input type="checkbox" name="chks" value="Science"</td>Science
            <td><input type="checkbox" name="chke" value="English"</td>English 
        </tr>

        <tr>
            <td>Gender : </td>
            <td><input type="radio" name="gen" value="Male"/>Male
                <input type="radio" name="gen" value="Female"/>Female
             </td>
         </tr>

         <tr>
            <td colspan="2"><center><input type="submit" value="Submit"/></center></td>
         </tr>



</body>
</html>

これはphpページです:

<html>
<body>
<?php
    $uname=$_POST["txtname"];
    $pass=$_POST["txtpass"];
    $email=$_POST["txtemail"];
    $add=$_POST["add"];
    $subm=$_POST["chkm"];
    $subs=$_POST["chks"];
    $sube=$_POST["chke"];   
    $gen=$_POST["gen"];
?>

<table>
<tr>
    <td>Username : </td>
    <td><?php echo $uname; ?></td>
</tr>

<tr>
    <td>Password : </td>
    <td><?php echo $pass; ?></td>
</tr>

<tr>
    <td>Email : </td>
    <td><?php echo $email; ?></td>
</tr>

<tr>
     <td>Address : </td>
     <td><?php echo $add; ?></td>
</tr>

<tr>
    <td>Subject Selected : </td>
    <td><?php echo $subm." ".$subs." ".$sube; ?></td>
</tr>

<tr>
    <td>Gender : </td>
    <td><?php echo $gen ?></td>
</tr>

</table>
</body>
</html>

どんな助けでも大歓迎です。

4

5 に答える 5

1

あなたは閉じるのを忘れますcheckbox.

また、チェックボックスをオンにせずにフォームを投稿すると、現在取得しているエラーが発生します。

@このエラーを無視するために使用できますが、これはベストプラクティスではありません。

また

if(isset($_POST["chkm"]))
{
  $subm=$_POST["chkm"];
}

if上記の条件を使用して、値が設定されているかどうかを確認できます。

于 2013-03-15T08:02:47.747 に答える
0

チェックされていないチェックボックスは、その値を投稿に送信しません。したがって$_POST["chke"]、実際には存在しません。投稿から値を取得する前に、存在を確認する必要があります。

if(isset($_POST["chke"]))
  $sube = $_POST["chke"];
于 2013-03-15T08:02:06.357 に答える
0

入力チェックボックスタグが不完全です。したがって、PHPは投稿値を読み取ることができません。

また、「チェック」されていない場合、POST値は送信されません。

于 2013-03-15T08:02:44.347 に答える
0

あなたのHTMLでは、各チェックボックスに同じ名前を設定したいと思うでしょう

<td><input type="checkbox" name="chk[]" value="Maths"</td>Maths
<td><input type="checkbox" name="chk[]" value="Science"</td>Science
<td><input type="checkbox" name="chk[]" value="English"</td>English

次に、phpファイルでこれを行うことができます

$checkbox = $_POST['chk'];

$checkbox は、選択された各チェックボックスの配列になります。

POSTを使用したPHPおよびHTMLチェックボックスでの同様の問題

于 2013-03-15T08:13:07.860 に答える
0

undefined index次のようなものでエラーが修正されます。

<?php
  $uname = array_key_exists("txtname", $_POST)  ? $_POST["txtname"]  : NULL;
  $pass  = array_key_exists("txtpass", $_POST)  ? $_POST["txtpass"]  : NULL;
  $email = array_key_exists("txtemail", $_POST) ? $_POST["txtemail"] : NULL;
  $add   = array_key_exists("add", $_POST)      ? $_POST["add"]      : NULL;
  $subm  = array_key_exists("subm", $_POST)     ? $_POST["subm"]     : NULL;
  $subs  = array_key_exists("subs", $_POST)     ? $_POST["subs"]     : NULL;
  $sube  = array_key_exists("sube", $_POST)     ? $_POST["sube"]     : NULL;
  $gen   = array_key_exists("gen", $_POST)      ? $_POST["get"]      : NULL;
?>

ただし、通常は、これを処理する関数を作成する方が適切です。

<?php

  function get_expected_post( $expected = array() ){
    $ret = (object) NULL;
    foreach ( $expected as $key ) {
      $ret->{$key} = array_key_exists($key, $_POST) ? $_POST[$key] : NULL;
    }
    return $ret;
  }

  $post = get_expected_post(array(
    'txtname', 
    'txtpass',
    'txtemail', 
    'add',
    'subm',
    'subs',
    'sube',
    'get'
  ))

?>

そうすれば、フォーム内の項目をより簡単に展開でき、次の項目にアクセスするたびに、それが存在することが保証されるため、エラーが発生することはありません。

<?php echo $post->subm; ?>

スクリプトで投稿名を別の名前に変換したい場合は、上記を拡張できます。さらに、期待値の値を解析するなど、追加のセキュリティを追加することもできます。

于 2013-03-15T08:06:38.357 に答える