0

こんにちは誰かがここで私の間違いを指摘してください。2つのPHPファイルがあります。最初のview.phpは次のようになります。2番目はprocessor.phpで、if(constant('SELECTitem')== $ i)行は、$ iと比較する目的の入力をキャプチャしないため、「else」検証に直接進みます。訂正してください。ありがとう。

view.php

<?php
$con=mysql_connect('localhost','root') or die ("Server connection failure!");
$db=mysql_select_db('regional_data',$con) or die ("Couldn't connect the database");
$SQL="SELECT sbstart, sbend FROM newchk";
$run=mysql_query($SQL,$con) or die ("SQL Error");
$nor=mysql_num_rows($run);

define("SELECTitem", form.options.value);
?>
<html>
<head><title></title>
<script type="text/javascript">
function ValidateData(form) 
{
var TextIn = document.getElementById('txtN');
if(form.txtN.value == "")
{
alert("Text field is empty"); 
return false;
}else{
alert ((form.options[form.options.selectedIndex].value) + (form.txtN.value));
}
}
</script>
</head>
<body>
<form onsubmit="return ValidateData(this)" method="POST" action="processor.php">
<select STYLE='width:90px' name="options"><?php
while ($rec = mysql_fetch_array($run))
{
    for($i=$rec['sbstart']; $i<=$rec['sbend']; $i++)
    {
    echo "<option id='options' value='$i'>$i<br></option>";
    }
}
?>
</select>
<input type="text" id="txtN">
<input type="submit" name="subN" value="Save">
</form>

</body>
</html> 

Processor.php

<?php
$con=mysql_connect('localhost','root') or die ("Server connection failure!");
$db=mysql_select_db('regional_data',$con) or die ("Couldn't connect the database");
$SQL="SELECT * FROM newchk";
$run=mysql_query($SQL,$con) or die ("SQL Error");
$nor=mysql_num_rows($run);

while ($rec = mysql_fetch_array($run))
{
for($i=$rec['sbstart']; $i<=$rec['sbend']; $i++)
    {
    if(constant('SELECTitem') == $i)
     {
        if($rec['totsb'] <= "0")
        {
        echo "You have already entred this cheque number."; 
        return false;
        } else {
        echo "You can proceed withi this entry"; 
        return false;
        }
     }
     else 
     { echo "Error: Cant find choosen in the databse"; 
      return false;
     }
    }
}
?>
4

3 に答える 3

2

Processor.phpに送信すると、前のページで作成した定数は引き継がれません。また、定数を定義している場合、PHPでJavaScriptにアクセスすることはできません。だからあなたが作成した定数...

define("SELECTitem", form.options.value);
echo SELECTitem; // returns "formoptionsvalue" (form concatenated with options and value)

あなたがすべきことは、form.options.valueを送信し、$_POSTを介してそれにアクセスすることです。

于 2012-09-09T17:49:58.233 に答える
0
 define("SELECTitem", form.options.value);

「form.options.value」とはどういう意味ですか?私がそれを正しく理解していれば、それはあなたのJSコードです。しかし、それはそのようには機能しません。

また、uは他のプロセスから定数にアクセスできません。

最初にいくつかのPHPの本を読む必要があります。

于 2012-09-09T17:50:45.040 に答える
0

質問のタイトルは適切で一般的です:一定のエラーを見つけることができませんでした-PHPですが、その本文は非常に特殊です

一般的な答えのためにここに来るすべての人にとって、労働者階級の定数が機能しないためにここに来るときは、クラスの完全修飾名を使用しているかどうかを確認してください。そうでない場合は機能しません。

NOK:constant('MyClass::MY_CONST');

わかった:constant(MyClass::class . '::MY_CONST');

于 2021-10-20T09:11:32.313 に答える