dsgwdigu84950 2015-12-08 22:01
浏览 120
已采纳

使用PHP,MYSQL,GROUP_CONCAT和JOIN进行空间搜索

I made some changes in the code and now it's working. But there is a new problem. In the database, I have registered 3 Company Cods: G-1001, G-1002 and G-1004.

If I type "g", "g-", or for instance "g-100" and click search, it returns me all the results correctly. But if I type just "g-1001" or even "01", "001", it returns no results.

Why it's not working when I search the last characters of the registered code?

<?php  
if(isset($_POST['action']) && $_POST['action'] == 'send'){
    $codsearch = preg_replace('#[^a-z 0-9?()!-]#i', '', $_POST['searchcompanycod']);

    $getresultsquery = mysql_query('SELECT p.*, a.idProduct, a.idVehic, a.year, v.nameVehic, GROUP_CONCAT(a.year SEPARATOR "<br>"), GROUP_CONCAT(a.idVehic SEPARATOR "<br>"), GROUP_CONCAT(v.nameVehic SEPARATOR "<br>")
    FROM products p
    INNER JOIN application a ON p.idProduct = a.idProduct
    INNER JOIN vehic v ON a.idVehic = v.idVehic
    WHERE codCompany LIKE "%'.$codsearch.'%"
    GROUP BY p.codCompany') or die(mysql_error());

    $resultsrow = mysql_num_rows($getresultsquery);
    if($resultsrow > 1){
        echo "$codsearch";
        echo "<table class='table table-bordered' border=1>";
        echo "<tr>";
        echo "<th>Company Code</th><th>Original Code</th><th>Descr.</th><th>idProduct</th><th>idVehic</th><th>Vehic Name</th><th>Year</th>";
        echo "</tr>";

        while($getresultsline = mysql_fetch_array($getresultsquery)) {
            echo "<tr>";  
            echo "<td>" . $getresultsline['codCompany'] . "</td>";
            echo "<td>" . $getresultsline['codOriginal'] . "</td>";
            echo "<td>" . $getresultsline['typeDesc'] . "</td>";
            echo "<td>" . $getresultsline['idProduct'] . "</td>";
            echo "<td>" . $getresultsline['GROUP_CONCAT(a.idVehic SEPARATOR "<br>")'] . "</td>";
            echo "<td>" . $getresultsline['GROUP_CONCAT(v.nameVehic SEPARATOR "<br>")'] . "</td>";
            echo "<td>" . $getresultsline['GROUP_CONCAT(a.year SEPARATOR "<br>")'] . "</td>";  
            echo "</tr>";
        }
    }   else{
            echo "No results";}
}
?>  
</tbody>
</table>

Any ideas? My testing page is: http://flyingmail.com.br/test/produtos.php (only Company Code filter working)

  • 写回答

2条回答 默认 最新

  • dongpao5658 2016-01-13 03:30
    关注

    Found it. Hahaha terrible... it could never be if($resultsrow > 1){ because if I search for something specific, it will return only 1 row. So, it must be if($resultsrow >= 1){

    LOL

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何制作永久二维码,最好是微信也可以扫开的。(相关搜索:管理系统)
  • ¥15 delphi indy cookie 有效期
  • ¥15 labelme打不开怎么办
  • ¥35 按照图片上的两个任务要求,用keil5写出运行代码,并在proteus上仿真成功,🙏
  • ¥15 免费的电脑视频剪辑类软件如何盈利
  • ¥30 MPI读入tif文件并将文件路径分配给各进程时遇到问题
  • ¥15 pycharm中导入模块出错
  • ¥20 Ros2 moveit2 Windows环境配置,有偿,价格可商议。
  • ¥15 有关“完美的代价”问题的代码漏洞
  • ¥15 请帮我看一下这个简易化学配平器的逻辑有什么问题吗?