【问题标题】:PHP search with letter带字母的PHP搜索
【发布时间】:2016-02-24 13:07:32
【问题描述】:

我是 php 的初学者,我需要一些帮助。 我有这个学校任务,我需要在医院的网站上放置字母表,并且当点击它们开头的字母时,所有的咨询都需要出现。

我只用字母“a”试过,但我不工作。我确信这真的很容易,但我已经在网上搜索了一段时间,找不到任何东西。

感谢我能得到的任何帮助。

提前致谢。

附:我的母语显然不是英语。

<HTML>
    <HEAD>
        <TITLE></TITLE>
    </HEAD>
<BODY>
    <p><a href="" name="searchCons">A </a>
    <a href="">B </a><a href="">C </a><a href="D"></a>
    <a href="">D </a><a href="">E </a><a href="">F </a>
    <a href="">G </a><a href="">H </a><a href="">I </a>
    <a href="">J </a><a href="">K </a><a href="">L </a>
    <a href="">M </a><a href="">N </a><a href="">O </a>
    <a href="">P </a><a href="">Q </a><a href="">R </a>
    <a href="">S </a><a href="">T </a><a href="">U </a>
    <a href="">V </a><a href="">W </a><a href="">X </a>
    <a href="">Y </a><a href="">Z </a><a href="">Everything</a></p>

    <?php
    if(isset($_POST['toon']))
    {
      include('dbconnect.php');

      if(!empty($_POST['searchCons']))
      {
        $type  = $_POST['searchCons'];
        $query = "SELECT * FROM consultaties WHERE Naam LIKE '%A%'";
        $res   = mysql_query($query,$cn) or die('Uitvoeren query mislukt');
        $count = mysql_num_rows($query);
        while($rij=mysql_fetch_array($res))
        echo $rij['Naam']."<BR>";    
       } 

      mysql_close($cn);
    }

    ?>
    </BODY>
</HTML>

【问题讨论】:

  • 您需要一个表单来将数据 POST 到服务器。或者你也可以使用 AJAX。
  • Ajax 对于这个目的可能有点矫枉过正,我猜。 OP 需要处理 Javascript,如果他刚开始开发动态网站,这可能会令人困惑
  • 如果您有错误,or die('Uitvoeren query mislukt') 不会帮助您。将错误报告添加到您打开 PHP 标记之后的文件顶部,例如 &lt;?php error_reporting(E_ALL); ini_set('display_errors', 1);,然后是其余代码,以查看它是否产生任何结果。还要将or die(mysql_error()) 添加到mysql_query()

标签: php html database


【解决方案1】:

这样写你的链接:

<a href="?searchCons=A">A</a>

不要使用 POST,而是使用 GET:

$_GET['searchCons']

您现在可以将变量分配给 GET 数组并在查询中使用它:

$search = $_GET['searchCons'];

在您的查询中:

WHERE Naam LIKE '%$search%'";

但是,这会使您面临 SQL 注入。因此,您需要转义该数据。

即:

$search = mysql_real_escape_string($_GET['searchCons']);

旁注问题:$_POST['toon'] 做什么?如果我正确理解您的代码,您可以删除 if 语句。

【讨论】:

  • @DreamsInHD 这 ^ 表示您需要在安装了 PHP 和 MySQL 的网络服务器上作为 PHP 运行。您可能在浏览器中使用c:///file.php,而不是http://localhost/file.php
  • 运行它是不够的。您的 php 文件必须放在 htdocs 文件夹中,并且您需要使用 http://localhost/... 访问该文件,如 @Fred-ii- 写的
  • @DreamsInHD Wamp 在默认安装期间会创建一个名为 www 的文件夹。您需要将该文件放在该文件夹中并使用.php 扩展名。然后将 http://localhost/file.php 粘贴到 Web 浏览器中作为示例。无需添加www,Wamp 已经知道如何处理它了。
  • @DreamsInHD 呵呵,我认为我们已经“成功”了! - 不客气 ;-)
  • @DreamsInHD 如果它解决了您的问题,请考虑接受答案。以下是meta.stackexchange.com/questions/5234/… 然后返回此处并对勾号/复选标记执行相同操作直到它变为绿色的方法。这会通知社区,找到了解决方案。否则,其他人可能会认为问题仍然悬而未决,可能想要发布(更多)答案。欢迎来到 Stack ;-)
【解决方案2】:

POST 与表单一起工作。由于您没有在代码中使用任何形式,因此您应该使用 GET。 GET 也适用于表单,但有一种方法可以克服这个问题,因为 GET 在链接中发送数据。

所以您应该将链接更改为:

<a href="#"></a> 

(将# 更改为filename.php?searchCons=A

所以您的代码应该类似于:

<?php


      include('dbconnect.php');

      if(!empty($_GET['searchCons']))
      {
        $type  = $_GET['searchCons'];
        $query = "SELECT * FROM consultaties WHERE Naam LIKE '%A%'";
        $res   = mysql_query($query,$cn) or die('Uitvoeren query mislukt');
        $count = mysql_num_rows($query);
        while($rij=mysql_fetch_array($res))
        echo $rij['Naam']."<BR>";    
       } 

      mysql_close($cn);


    ?>


<HTML>
<HEAD><TITLE></TITLE></HEAD>
<BODY>

      <a href="?searchCons=A" >A </a>
      <a href="?searchCons=B">B </a>
      <a href="?searchCons=C">C </a>

</BODY>
</HTML>

【讨论】:

  • if(!empty($_GET['searchCons'])) 并且您正在使用 $type = $_POST['searchCons']; 这将失败。那应该读作$type = $_GET['searchCons'];
【解决方案3】:

查看以下可能对您有所帮助的链接 http://www.w3schools.com/php/php_ajax_livesearch.asp

check the link

【讨论】:

  • 在 Stack Overflow 上,仅链接的答案不是一个好习惯。如果链接页面更改或离线,答案可能会丢失其信息。请引用页面中最相关的部分,而不仅仅是链接它。谢谢 ;) 无论如何,我认为 Ajax 可能会使 OP 混淆太多 - 我猜在这种情况下简单的 html 会更好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多