-6

php で入力ボックスのデータから値を渡したいのですが、その表示が php sql で認識されません

<form name="form1"/>
<input type="text" name="code1" value="D50" size="7" maxlength="10" onblur="chkidpro(this.value,'provider1');" />
<input type="text" name="code2" value="" size="7" maxlength="10"/>
<form/>

<script type="text/javascript">

var jvalue = form1.code1.value;

<?php $abc = "<script>document.write(jvalue)</script>"?> 

</script>

<?PHP 
$con = mysql_connect("localhost","abc_one","pass");
mysql_select_db("abc_one", $con);

echo $abc;// ITS PRINT AS D50

$c = 'D50';

//$c = $abc;

$result2 = mysql_query("SELECT * FROM tblmycode where code='$c';");

$tab = mysql_fetch_array($result2);

if($result2 === false)

{
die("Database Error");
}

if(mysql_num_rows($result2) == 0)

{
die("No Record Found");
}

エコー $abc; AS D50を印刷する

IF I REPLACE $c = $abc; レコードが見つかりません

IF I REPLACE $c = 'D50'; 利用可能なレコード

4

2 に答える 2

3

あなたが示すコードはSERVER側で動作しているので:

 <?php $abc = "<script>document.write(jvalue)</script>"?> 

$abcに設定"<script>document.write(jvalue)</script>"

そこに書いた JavaScript は、クライアント側であるブラウザで動作します。それらを混ぜないでください...

何が起こっているのかを明確にするためにOK:

このテキストはサーバーの php ファイルにあるため、呼び出されると次のようになります。

Line                                       Action on Server
<form name="form1"/>                       //->sent to client
<input type="text" name="code1" value="D50"//->sent to client
<input type="text" name="code2" value=""   //->sent to client
<form/>                                    //->sent to client 
<script type="text/javascript">            //->sent to client
var jvalue = form1.code1.value;            //->sent to client(will run on client) 

<?php                                      //->php takes control on server

 $abc = "<script>document.write(jvalue)</script>"; //php runs this on server 
 //php sets $abc to "<script>document.write(jvalue)</script>" on server...
 //php does not process javascript, php sees it as text...

?>                                         //->ends php control

</script>                                  //->sent to client

<?PHP                                      //->php takes control on server again

$con = mysql_connect("localhost","abc_one","pass"); // php runs this on server
mysql_select_db("abc_one", $con);                   // php runs this on server

echo $abc;                                          // php echoes $abc

を含む行を意味します

<script>document.write(jvalue)</script> 

クライアントに送信されます。

それはあなたのクライアント文書に書かれています...

サーバーではなく、クライアント コンピューターで評価されます。

そして、それはまだではなく、近い将来に起こるでしょう....

ブラウザに D50 が表示されるのはなぜですか? 未来を見てみましょう:

では、CLIENT (ブラウザ) が JavaScript を解析するとどうなるでしょうか?

ブラウザが実行されます

var jvalue = form1.code1.value;

行してjvalueをD50に設定し、もちろんブラウザが遭遇したとき

<script>document.write(jvalue)</script>

それを実行し、D50であるクライアントの jvalue の値を表示します。

これはすべて、サーバーではなくクライアントコンピューターで発生します。

したがって、これは近い将来、まだではありません....

phpファイルに戻ります

//$c = 'D50';    // lets ignore this   

$c = $abc;                                    // php runs this on server. 

// guess what now $c is '<script>document.write(jvalue)</script>'     

// then php tries to run this:

$result2 = mysql_query("SELECT * FROM tblmycode where code='$c';");

今、あなたのクエリは本当に興味深いものになりました:

SELECT * FROM tblmycode where code='<script>document.write(jvalue)</script>';

何が起こっているのか今理解していただければ幸いです...

PS: mysql インターフェースは非推奨です。mysqli または PDO を使用してください...

于 2013-04-05T13:54:18.150 に答える
1

バックエンドとフロントエンドの仕組みを理解する必要があります。

PHP は最初に HTML サーバー側を生成し、それをユーザーに送信します。ユーザーはそれをブラウザで実行し、Javascript を実行します。

したがって、これを書くとき:

$abc = "<script>document.write(jvalue)</script>"

$abcJavaScript の結果ではありません。文字通り、 を含む文字列になります<script>document.write(jvalue)</script>

したがって、あなたのアプローチは完全に間違っています-そのような変数をPHPに渡すことはできません!

必要なのは、フィールド値をサーバーに送信して、スクリプトで処理できるようにすることです。

このようなチュートリアルを読んでください。

于 2013-04-05T13:52:25.520 に答える