2013-04-05 136 views
-5

我想通過在PHP輸入框的數據值,其顯示但是PHP SQL無法識別從數據庫中獲得和顯示可變數據在PHP

<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

如果我替換$ c = $ abc; NO RECORD FOUND

如果我替換$ c ='D50'; RECORD AVAILABLE

+3

問題是...? – Shoe 2013-04-05 13:46:06

+0

嘗試回顯$ abc的長度來診斷,有可能是空值或其他空格。如果是這樣修剪它... – Ihsan 2013-04-05 13:46:33

+0

請指定什麼不工作或你卡在哪裏? – 2013-04-05 13:47:40

回答

1

您需要了解後端和前端如何工作。

您的PHP首先生成HTML服務器端,將其發送給用戶,然後在瀏覽器中運行該用戶並執行Javascript。

所以,當你寫:

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

$abc是你的JavaScript的結果。它實際上是一個包含<script>document.write(jvalue)</script>的字符串。

所以你的方法是完全錯誤的 - 你不能將這樣的變量傳遞給PHP!

您需要做的是將字段值發送到服務器,以便您的腳本可以處理它們。

閱讀一些教程,如this one

+0

謝謝MMM,我想在不提交的情況下製作這個表單,當用戶在輸入框數據中輸入數據時應該顯示在另一個文本框相同的形式。是否有可能將'$ abc'轉換爲php數據文本字符串() – user2235050 2013-04-05 14:40:31

+0

您不明白:您無法讀取JavaScript變量或PHP中JavaScript代碼的結果。期!如果您想讓某個文本顯示在另一個字段的一個字段中,請使用JavaScript **。 JavaScript用於**客戶端**編程,PHP用於**服務器端**編程。您使用PHP來呈現HTML頁面。它運行在**服務器**上,而不是用戶的瀏覽器上。 – MMM 2013-04-05 15:13:22

+0

另外,在不提交數據的情況下進行這項工作在技術上是不可能的。如果你想在PHP中使用這個值,你必須發送一些東西到服務器。絕對沒有辦法解決這個問題。 – MMM 2013-04-05 15:17:32

3

告訴你的代碼是工作在服務器端,以便:

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

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

你寫就會有客戶端上運行的JavaScript,瀏覽器。不要混合使用它們...

好澄清所發生的事情:

本文是在一個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發生....

?讓我們看看未來:

那麼當客戶端(瀏覽器)解析javascripts會發生什麼?

瀏覽器將執行

var jvalue = form1.code1.value; 

線並設置jvalue到D50,當然當瀏覽器遇到

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

它將運行它,並顯示jvalue 的值上的客戶端這是D50 ..

所有這些都會發生在客戶端計算機上t在服務器上。

因此,這將在不久的將來,還沒有發生....

現在回到你的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或P請請...

+0

'$ abc'將爲'',你沒有剝離任何地方的標籤 – MMM 2013-04-05 13:55:46

+0

我們該怎麼做......? – Ihsan 2013-04-05 13:57:57

+0

做什麼? '用strip_tags()'? – MMM 2013-04-05 13:58:27