2013-04-05 100 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