如何显示连接到数据库的表单搜索的结果


How to display results from form search, connected to database?

我要呈现给你的代码不起作用。未显示 IF 条件的结果。但对于其他是。当我单独调用 $service_id 时,它会给我搜索的 ID,但在 WHERE 关闭中使用时:service_id = '$service_id',什么都不显示。

<form method="GET" name="pesquisa" id="inserrifo" action="/services.php">
    <input class="procurasalgo" id='pesqSign' name="keyword" value="<?php echo $keyword;?>" placeholder="Inserir palavra"/><label for="pesqSign" id="pesqSigne"><img class="lupapesquisa" src="/img/search-26.png" /></label>
    <select name="services">
        <option disabled selected value=''>Serviços</option>
        <?php
            $res = $DAL->mysqlQuery("SELECT * FROM services");
            while($row = mysql_fetch_assoc($res)){
                echo "<option value='".$row['serv_id']."'>".$row['serv_name']."</option>";
            }
        ?>
    </select>
    <select name='distritos'>
        <option disabled selected value=''>Portugal</option>
        <?php
            $res = $DAL->mysqlQuery("SELECT * FROM distritos");
            while($row = mysql_fetch_assoc($res)){
                echo "<option value='".$row['d_id']."'>".$row['d_nome']."</option>";
            }
        ?>
    </select>
    <button>Procurar</button>
</form>

" 占位符="Inserir palavra"/> 塞尔维索斯 mysqlQuery("SELECT * FROM services"); while($row = mysql_fetch_assoc($res)){ 回显 ".$row['serv_name']."; } ?> 葡萄牙 mysqlQuery("SELECT * FROM distritos"); while($row = mysql_fetch_assoc($res)){ 回显 ".$row['d_nome']."; } ?> 采购

<?php   
    $service_id = $_GET['services'];
    $district_id = $_GET['distritos'];
    $keywords = $_GET['keyword'];

    if ($service_id != '' || $district_id != '' || $keywords != '') {
    $result = $DAL->mysqlQuery("SELECT * FROM users, services, distritos, users_services WHERE u_id = user_id && service_id = '$service_id' && distrito_id = '$district_id' ");
    $row = mysql_fetch_assoc($result);
    while($row = mysql_fetch_assoc($result)) {
    $img_user = $row['u_foto'];

        echo "<div class='Services'><img src='http://mufip.pt/images/userimages/avatars/".$img_user."' /><br /><h5>".$row['u_name']."<h5><h6>".substr($row['u_descricao'],0, 140)."</h6></div>";
        } //while
    } //if
    else {
    $result = $DAL->mysqlQuery("SELECT * FROM users, services, distritos, users_services WHERE u_id = user_id && service_id = serv_id && distrito_id = d_id ORDER BY RAND()");
    $num = mysql_numrows($result);
    echo $num." resultados<br />";
    while($row = mysql_fetch_assoc($result)) {
    $img_user = $row['u_foto'];
    echo "<div class='Services'><img src='http://mufip.pt/images/userimages/avatars/".$img_user."' /><br /><h5>".$row['u_name']."<h5><h6>".substr($row['u_descricao'],0, 140)."</h6></div>";
        } //while
    } //else
    ?>
if ($service_id != '' || $district_id != '' || $keywords != '') {

行正在检查是否存在三个之间的任何字段。换句话说,当 $service_id 或 $district_id 或 $keywords 不为空时,此逻辑检查将给出 TRUE。假设,用户只输入了"关键字"的值,在此页面中,您将获得仅$keywords的值,$service_id 和 $district_id 将为空。

由于其中一个(此处$keywords)不为空,IF 语句将返回 true,程序控制将在其中移动。

但是,在SQL查询中,您使用的是AND条件,并且需要在service_id和distrito_id列中使用有效或非空值。由于其中一个可能保持为空,因此此查询不会产生任何结果。

若要调试这种情况,请仅从其中一个下拉列表中选择值,并使用 echo 语句在 IF 块内打印查询。

我得到了朋友的帮助:)

public function returnSelectService($nomeSelect,$idSelect,$nomeCampo,$stringSQL,$selected = null)
{       
    $list = "<select class='"selectServicesList'" id='"$idSelect'" name='"$nomeSelect'">";
    $list .="<option value='"'">Serviços</option>";
    $res = $this->mysqlQuery($stringSQL);
    $select = "";

    while ($linha = mysql_fetch_object($res)) 
    {
        if($selected != null && $selected == $linha->serv_id)
            $select = 'selected="selected"';            
        $list .="<option $select  value='"$linha->serv_id'">".$linha->$nomeCampo."</option>";
        $select = "";
    }
    $list .= "</select>";
    return  $list;
}

public function returnSelectDistrict($nomeSelect,$idSelect,$nomeCampo,$stringSQL,$selected = null)
{       
    $list = "<select class='"selectServicesList'" id='"$idSelect'" name='"$nomeSelect'">";
    $list .="<option value='"'">Portugal</option>";
    $res = $this->mysqlQuery($stringSQL);
    $select = "";

    while ($linha = mysql_fetch_object($res)) 
    {
        if($selected != null && $selected == $linha->d_id)
            $select = 'selected="selected"';            
        $list .="<option $select  value='"$linha->d_nome'">".$linha->$nomeCampo."</option>";
        $select = "";
    }
    $list .= "</select>";
    return  $list;
}


    <form method="GET" name="pesquisa" id="inserrifo" action="/services.php">
            <br />
            <?php
            echo $DAL->returnSelectService('services','services','serv_name',"SELECT * FROM services ",$service_id);
            ?>          
            <?php
            echo $DAL->returnSelectDistrict('distritos','distritos','d_nome',"SELECT * FROM distritos ",$d_id); 
            ?>  
            <button class="btn btn-default">Procurar</button>
        </form>

    <?php   

$stringSQL ="SELECT * FROM users, services, distritos, users_services WHERE u_id = user_id AND service_id = serv_id AND distrito_id = d_id ";
if($service_id != "")
    $stringSQL .=" AND serv_id = '{$service_id}'  ";
if($district_id != "")
    $stringSQL .="AND d_id = '{$district_id}' ";
$stringSQL .="ORDER BY RAND()";

        $result = $DAL->mysqlQuery($stringSQL);
        $num = mysql_numrows($result);
            echo $num." resultados<br />";      
            while($row = mysql_fetch_assoc($result)) {
            $img_user = $row['u_foto'];
            echo "<div class='services'>
            <div class='servicesBox'>
            <img src='http://mufip.pt/images/userimages/avatars/".$img_user."' />
            <h4>".$row['u_name']."</h4><br />
            <h5>".$row['serv_name'].", ".$row['d_nome']."</h5><br />
            <p>".substr($row['u_descricao'],0, 200)." ...</p>
            </div>
            </div>
            <div style='clear: both; background-color: white; height: 15px'>
            </div>";
                }
            ?>