0

今、私は多くの調査を行い、$ _ POST isset..foreachなどを含むPHPで多くのメソッドを試しました。

しかし、私はいくつかの助けが必要です!

基本的には、チェックボックスがオンになっているかどうかを確認するだけです。次に、チェックボックスがオンになっている場合に行われる$visitsの数に1を追加します。

チェックボックスがチェックされているかどうかを確認できれば、そこから理解できると思います。

前もって感謝します

(注:$ visitsは、プロパティが訪問された回数です。このコーディングは、ファイルから読み取られたプロパティ情報を表示します)

<?
    $filename = "house.txt";
    $filepointer = fopen($filename,"r");  // open for read
?>

<html>
<head>
    <h1> Search for properties</h1>
    <form method = "post" action= "visit.php">
        Enter max price
        <input type = "text" name = "max" value="<?=$Max;?>">
        <input type = "submit" name = "submit">
        <br><i><p>Properties found</p></i></br>
    </form>
</head>
</html>

<?
    $myarray = file ($filename);
    for ($mycount = 0; $mycount < count($myarray); $mycount++ ) { // one input line at a time
        $aline = $myarray[$mycount];
        $postcode = getvalue($aline,0);
        $value = getvalue($aline,1);
        $image = getvalue ($aline,2);
        $visits = getvalue($aline,3);
        $Max = $_POST['max'];

        if ($value < $Max) {
            print "<table border = 2>";
            print "<FORM METHOD='POST' ACTION='visit.php' >";
            print "<td> <input type='checkbox' name='check' value='Yes' > $postcode </td><BR> \n";
            print "<td>$value <BR>";
            print "<td>$image<BR>";
            print "<td>$visits<BR><p>";
            print "</table>";
            print "</form>";
        }
    }

    function getvalue ($aline, $commaToLookFor) {   
        $intoarray = explode(",",$aline);
        return  $intoarray[ $commaToLookFor];  
    }

    if (isset($_POST['check']) && $_POST['check'] == 'Yes') {
        echo "checked!";
    } else {
        echo "not checked!.";
    }
?>
4

1 に答える 1

1

自分が思っているフォームとは異なるフォームを送信しています...ページには2つのフォームがあり、どちらも「visit.php」に送信しています。この行は存在してはなりません:

print "<FORM METHOD='POST' ACTION='visit.php' >";

...ファイルの先頭にフォームを作成しているため。

これにはコードの少しの再編成が必要になりますが、基本的な考え方は、すべてのフィールドと送信ボタンを含む1つのフォームのみが必要であるということです。それ以外の場合は、最大価格のみを含むフォームを送信します。

または、実際に個別のフォームが必要な場合(確かにユースケースに精通していない場合)、2番目のフォームには独自の送信ボタンが必要になります。

簡略化された作業コード:

 print "<table border = 2>";
print "<FORM METHOD='POST' ACTION='visit.php' >";
  print "<td> <input type='checkbox' name='check' value='Yes' > $postcode </td><BR> \n";
  print "<td> <button type='submit'>Submit</button> </td><BR> \n";
 print "</table>";
 print "</form>";

//personally I would just check for isset($_POST['check']), but it doesn't really matter... 
if (isset($_POST['check']) && $_POST['check'] == 'Yes') 
{
  echo "checked!";
}
else
{
  echo "not checked!.";
}
于 2013-02-25T02:39:27.867 に答える