0

ユーザーが整数値(文字列、浮動小数など)を入力した場合にのみテーブルを印刷しようとしていますが、このコードが機能していないため、フロントエンドでno使用せずに整数値のみを取得するために不足しているものがあります。JAVASCRIPTロジックが不足している場合はお知らせください。

これは私のphpコード(index.php)です -

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>table Data</title>
</head>

<body>

<table width="29%" border="1">
<form name="mytableform" id="mytableform" action="mytabledata.php" method="POST">
  <tr>
    <td width="42%">Enter any munber :&nbsp;</td>
    <td width="58%"><input type="text" name="mynumber" id="mynumber" />&nbsp;</td>
  </tr>
  <tr>
    <td>Enter limit :&nbsp;</td>
    <td><input name="limit" type="text" id="limit" />&nbsp;</td>
  </tr>
  <tr>
    <td colspan="2"><input type="submit" value="Submit" name="submit" />&nbsp;</td>
    </tr>
 </form> 
</table>

</body>
</html>

私のmytabledata.phpコンテンツ ファイル --

<?php

$number = $_POST['mynumber'];
$limit = $_POST['limit'];

//var_dump($number);
//var_dump($limit);

if( is_int($number) )
{
    for($i=1;$i<=$limit;$i++)
    {
    $p= $number * $i;
    echo $number." X ".$i." = "." ".$p.";";
    echo "<br />";
    }
}
else{
echo "Please check the type of data you are entering.";
}
4

7 に答える 7

3

HTTP からの入力 ( $_POST$_GETなど) は、常にstringphp ランドの型になります。その文字列を数値として解釈できるかどうかを検証する場合は、使用できるis_numericフィルターライブラリを使用できます。

于 2012-08-16T09:08:43.180 に答える
2

あなたの値POSTは文字列のタイプです。それを使用するには、これを行うことができます:

$number = intval( $_POST['mynumber'] );
于 2012-08-16T09:08:07.860 に答える
1

問題は、$_POST値が常に ASCII テキスト (つまり、文字列) として送信されることです。関数を使用intvalして文字列を整数に変換します。

于 2012-08-16T09:07:59.353 に答える
1

整数型をチェックする必要がある場合、通常、以下の条件を使用します

if(is_numeric($val) && intval($val)==$val) {
/*Place your code here*/
}
于 2012-08-16T09:30:46.307 に答える
1

の値$_POSTは常に文字列であり、数値への自動変換はありません。

スクリプトで使用したいのはおそらく ではなくis_int()、変数の型をチェックしますがis_numeric()、変数に数値 (int または string) が含まれているかどうかをチェックします。

于 2012-08-16T09:10:32.563 に答える
0

is_numericの代わりに を使用しis_intます。上記の回答も良いですが、すぐに true または false を返す is_numeric の方が優れています。

 if( is_numeric($number) )
于 2012-08-16T09:17:52.837 に答える
0

これを試して、

if(((int) $number) == $number)
{
    echo "is integer";
}

編集:または、このように正規表現を使用できます

if(preg_match("/^\d+$/", $number))
{
    echo "is integer";
}
于 2012-08-16T09:20:13.373 に答える