Search code examples
phpmysqlsearchjoingroup-concat

Search running spatially with PHP, MYSQL, GROUP_CONCAT and 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)


Solution

  • 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