【问题标题】:Hyperlinks is not working right for search result titles超链接不适用于搜索结果标题
【发布时间】:2020-04-12 03:09:12
【问题描述】:

我正在尝试显示来自两个表的搜索结果。我用 union 把它们放在一起。现在它们可以工作,当我搜索某些内容并匹配时,它会从两个表中显示,但我的超链接有问题。现在,对于搜索结果,即使对于来自艺术表的结果,单击标题时它总是重定向到授予个人。请帮忙,我如何确保它进入正确的详细信息页面。

控制器

function searchResult() {
    $keyword    =   $this->input->post('keyword');
    $data['results']    =   $this->products_model->searchResult($keyword);
    $this->load->view($this->header)
    $this->load->view('searchresults.php', $data);
    $this->load->view('footer');
}

查看

<br>
<table>
<?php if (!$results){ ?>

  <h1> No results found. </h1>

<?php 
}

else { ?>
 <h2> Search Results </h2>
<?php

foreach($results as $row){ ?>

<br>
  <table class="table">
 <tr>
    <td><h2><a href="<?=  base_url()?>product/grantindividual/<?=$row->id?>"><?php echo $row->title?> 
  </h2></a></td>
</tr>

<tr>
    <td><h2><a href="<?=  base_url()?>product/artcallindividual/<?=$row->id?>"><?php echo $row- 
    >title?></h2></a></td>
</tr>
</table>
<?php }

 }
?>
<br>

【问题讨论】:

  • 发布控制器代码(产品)可能会有所帮助。

标签: javascript php codeigniter


【解决方案1】:

你需要有一个列来区分结果,不需要在表本身中添加一个实际的列,使用虚拟列

改变这个

$this->db->select($this->db->escape('v_grants') .  ' AS source, id, Title');

$this->db->select($this->db->escape('v_grants') .  " AS source, id, Title, 'grant' as type ");

改变这个

$this->db->select($this->db->escape('v_art_call') . ', id, Title');

$this->db->select($this->db->escape('v_art_call') . ", id, Title, 'art' as type ");

然后您可以轻松地使用 if-else 语句来显示正确的行(授予/艺术)

<table class="table">

    foreach($results as $row){ ?>
        if($row->type == 'grant'){ ?>

                <tr>
                 <td><h2><a href="<?=base_url()?>product/grantindividual/<?=$row->id?>"><?php echo $row->title?> 
                    </h2></a>
                 </td>
                </tr>

        <?php }elseif($row->type == 'grant') { ?>

                <tr>
                  <td><h2><a href="<?=base_url()?>product/artcallindividual/<?=$row->id?>"><?php echo $row->title?></h2></a>
                  </td>
                </tr>

        <?php } ?>

    <?php } ?>

</table>

【讨论】:

  • 我试图用一个关键字显示两个表结果,我试过了,它只显示一个表的结果。编辑:让它工作:)
【解决方案2】:

您没有从两个表中区分项目的条件。

<br>
<table>
<?php if (!$results){ ?>

  <h1> No results found. </h1>

<?php 
}

else { ?>
 <h2> Search Results </h2>
<?php

foreach($results as $row){ ?>

<?php
    if(!empty($row->source)){
        $url = base_url()."product/grantindividual".$row->id;
    }else{
        $url = base_url()."product/artcallindividual".$row->id;
    }
?>

<br>
  <table class="table">
     <tr>
        <td>
            <h2>
                <a href="<?=$url?>"><?php echo $row->title;?></a>    
            </h2>
        </td>
    </tr>
 </table>
<?php }

 }
?>
<br>

【讨论】:

  • If else 中设置$url 中的print_r($row),以便您知道if 条件是否将结果与两个表分开。你在print_r($url) 中得到了什么,为什么它不起作用?你什么意思?
猜你喜欢
  • 2018-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-31
  • 2020-07-17
  • 1970-01-01
相关资源
最近更新 更多