【问题标题】:executing a php function in html [duplicate]在html中执行一个php函数[重复]
【发布时间】:2014-07-22 18:44:58
【问题描述】:

我是 php 新手。我在 php 中有一个函数,执行时会从数据库返回结果。当我使用 onclick 方法在我的 html 页面中使用此功能时,它不起作用。你能帮帮我吗? 下面是包含函数的页面 author.php 的代码-

<?php

function author_list()
{
global $con;
$con=mysqli_connect("localhost","root","","project");
if(mysqli_connect_errno())
{
echo "failed to connect".mysqli_connect_errno();
}

$author=mysqli_query($con,"select * from english where author='".$SBA."' ");


echo"<table>";
 while($data=mysqli_fetch_array($author))
 {
   echo"<tr>";
   echo"<td>".$data['genre'];
   echo"<td>".$data['author'];
   echo"<td>".$data['title'];
   echo"<td>".$data['year'];
   echo"<td>".$data['avail'];
 }

echo"</table>";
mysqli_close($con);
}
?>

下面是html页面的部分代码,我必须在onclick上设置上述功能:

<form action="author.php" method=GET>
Search By Author:<input type="text" name="SBA" value=""><br>
<input type="submit" value="submit" onclick= "author_list()">

它只是在页面上按原样打印函数的“while 循环”部分。我也被允许使用 javascript(如果有帮助的话)。 你能帮帮我吗?

【问题讨论】:

  • 你需要了解服务端和客户端的区别。
  • 使用isset() 并命名您的提交按钮。
  • onclick 属性用于执行 Javascript。请对客户端和服务器端编程之间的差异进行一些研究。
  • 另外,你最好使用 POST 而不是 GET(使用你正在使用的东西),除此之外还有可能的 SQL 注入。我倾向于回避 GET,而且使用准备好的语句是给定的。
  • 在 author.php 中,你不应该在某个时候从表单中恢复值吗?由于您使用的是 GET,因此您的代码中应该有某处 $SBA = $_GET['SBA'] 将从提交的表单中恢复值。您必须先转义该值,然后再在查询中使用它,或者最好使用准备好的查询来避免 sql 注入。

标签: javascript php html mysqli


【解决方案1】:

使用 isset() 函数执行应用程序的特定部分/主体/功能 Javascript 支持前端和 php 在后端运行..如果你喜欢通过 javascript 调用,你可以调用 ajax

<form action="author.php" method=GET>
Search By Author:<input type="text" name="SBA" value=""><br>
<input type="submit" value="submit" name="author_list">



<?php

if(isset($_GET['author_list'))
{
global $con;
$con=mysqli_connect("localhost","root","","project");
if(mysqli_connect_errno())
{
echo "failed to connect".mysqli_connect_errno();
}

$author=mysqli_query($con,"select * from english where author='".$SBA."' ");


echo"<table>";
 while($data=mysqli_fetch_array($author))
 {
   echo"<tr>";
   echo"<td>".$data['genre'];
   echo"<td>".$data['author'];
   echo"<td>".$data['title'];
   echo"<td>".$data['year'];
   echo"<td>".$data['avail'];
 }

echo"</table>";
mysqli_close($con);
}
?>

【讨论】:

  • 很好的答案,但如果您不介意,请解释原因,以便 OP 从他们的错误中吸取教训。
  • 是的,请这样做..这将非常有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 1970-01-01
  • 2016-08-16
相关资源
最近更新 更多