1

私はこの種の初心者なので、これが本当にばかげた質問である場合はご容赦ください。ただし、コードの変更に問題があり、ガイダンスが必要です。

とにかく、ユーザーが 3 つの異なる値を入力できるフォームを作成する必要があります。1 番目の入力は、1 ~ 99 の整数である必要があります。2 番目の入力は、0.0 ~ 10.0 の実数である必要があります。そして、最後の入力は任意のタイプの文字列入力である必要があります (入力は文字通り何でも構いませんが、空白のままにすることはできません)。

これが私がこれまでに持っているものです:

<?php

if 
(is_numeric($_POST['number1'])&& 

is_numeric($_POST['number2']))

{
    $number1 = $_POST['number1'];
    $number2 = $_POST['number2'];
    $string1 = $_POST['string1'];   
    echo "<p>Int Number =
        $number1</p>\n";
    echo "<p>Real Number = 
        $number2</p>\n";
    echo "<p>String = 
        $string1</p>\n";

    } 
else {
echo 'Error. Integer Number must be an integer (1-99), Real Number must 
        be a real number (0.0-10.0), and String cannot be left blank. 
    Please go back and fill out the form again.';
}       

?>

したがって、このコードでは明らかにルールが設定されていません (つまり、最初の数字は 1 ~ 99 の整数でなければならないなど)。

ルールを実装するために if-else ステートメントを追加する必要があることはわかっていますが、それを行う正しい方法がわかりません。

アドバイス/ヘルプは本当に感謝しています。

ありがとうございました!

4

2 に答える 2

1

1 番目の入力は 1 ~ 99 の整数である必要があります。

if (is_numeric($_POST['number1']))
...
$number1 = +$_POST['number1'];
if (is_int($number1) && $number1 >= 1 && $number1 <= 99)

2 番目の入力は、0.0 ~ 10.0 の実数である必要があります。

if (is_numeric($_POST['number2']) && strlen(substr(strrchr($_POST['number2'], "."), 1)) === 1)
...
$number2 = +$_POST['number2'];
if ($number2 >= 0 && $number2 <= 10)

そして、最後の入力は任意のタイプの文字列入力である必要があります (入力は文字通り何でもかまいませんが、空白のままにすることはできません):

$string1 = $_POST['string1'];
if (strlen($string1) > 0)

組み合わせると、次のような状態になります。

$error = true;

if (is_numeric($_POST['number1'])
    && is_numeric($_POST['number2'])
    && strlen(substr(strrchr($_POST['number2'], "."), 1)) === 1) {

    $number1 = +$_POST['number1'];
    $number2 = +$_POST['number2'];
    $string1 = $_POST['string1'];

    if (is_int($number1) 
        && $number1 >= 1 
        && $number1 <= 99
        && $number2 >= 0
        && $number2 <= 10
        && strlen($string1) > 0) {

        echo "<p>Int Number =
        $number1</p>\n";
        echo "<p>Real Number = 
        ".number_format($number2, 1)."</p>\n";
        echo "<p>String = 
        $string1</p>\n";
        $error = false;

    }
}

if ($error) {
    echo 'Error. Integer Number must be an integer (1-99), Real Number must 
          be a real number (0.0-10.0), and String cannot be left blank. 
          Please go back and fill out the form again.';
}
于 2013-05-04T03:26:39.167 に答える
0

どうですか:

 //first rule
function setRule1($var){
  if (is_numeric($var)){
     if($var < 1 || $var > 99){
        return false; 
     } else return true;
  } else return false;
}

//second rule if you need check number of decimal place
function setRule2($var){
    if (is_numeric($var)){
     if(strlen(array_pop(explode('.',$var))) > 1){//<-- change 1 to desired decimal places.
        return false;
      } else return true;
    } else return false;
}

使用法:

if (setRule1($_POST['number1']) && setRule2($_POST['number2']) && $_POST['string1'] != '')//third condistion check if string is blank or not.
{
  $number1 = $_POST['number1'];
  $number2 = $_POST['number2'];
  //and soon...
于 2013-05-04T03:28:38.787 に答える