Php 如何使用Codeigniter在搜索结果中创建URL链接?

Php 如何使用Codeigniter在搜索结果中创建URL链接?,php,mysql,codeigniter,Php,Mysql,Codeigniter,我已经在Codeigniter中创建了一个搜索函数,它工作正常。搜索功能精确显示我想要的内容,但我希望结果链接到另一个页面。我是Codeigniter的新手。谁能帮帮我吗 这是我的模型 public function search($searchterm) { $sql = "SELECT title as title, author as author FROM `edubooks` WHERE title LIKE '$searchterm' OR author

我已经在Codeigniter中创建了一个搜索函数,它工作正常。搜索功能精确显示我想要的内容,但我希望结果链接到另一个页面。我是Codeigniter的新手。谁能帮帮我吗

这是我的模型

public function search($searchterm)
{
    $sql = "SELECT title as title, author as author 
    FROM `edubooks` 
    WHERE title LIKE '$searchterm' OR author LIKE '$searchterm'";


    $q = $this->db->query($sql);
    if($q->num_rows() > 0)
    {
        foreach($q->result() as $row)
        {
            $data[] = $row;
        }
        return $data;
    }
    else
    {
        return 0;
    }
}



/******************Handler for search******************/
    public function searchterm_handler($searchterm)
    {
        if($searchterm)
        {
            $this->session->set_userdata('searchterm', $searchterm);
            return $searchterm;
        }
        elseif($this->session->userdata('searchterm'))
        {
            $searchterm = $this->session->userdata('searchterm');
            return $searchterm;
        }
        else
        {
            $searchterm ="";
            return $searchterm;
        }
    }
控制器

public function search()
{
    $searchterm = $this->search_model->searchterm_handler($this->input->get_post('searchterm', TRUE));

    $data['results'] = $this->search_model->search($searchterm);
    $data['searchterm'] = $searchterm;
    $this->load->view('search',$data);

}
我的看法呢

<h2>Library Search System</h2>
    <div id="formborder">
    <form action ="search" method="post" id="searchform" name="searchform">
    <b> Name of book : </b><input type="text" name="searchterm" id="searchterm" value="<?=$searchterm?>" />
    <input type="submit" value="search" id="submit" />
    </form>
    </div>

    <div id="tablebody">
    <table id="table" width="100%" = border>
        <?php if($results == false):?>
        <tr>
        <td>No records found.</td>
        </tr>
        <?php else:?>

                <tr>
                <th>Title</th>
                <th>Author</th>
                </tr>
            <?php foreach($results as $r):?>
                <tr>
                <td align="center"><a href="#"><?php echo ($r->title); ?></a></td>
                <td align="center"><a href="#"><?php echo ($r->author); ?></a></td>
                </tr>
            <?php endforeach;?>
        <?php endif;?>
        </table>
    </div>

    <p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds</p>
图书馆检索系统

书名:如果您希望每个结果都有一个链接将您重定向到另一个pge,那么您必须将该新页面的URL放置在锚定标记的
href
中,就像任何链接一样 HTML链接。我意识到你有一个表,我要做的是创建另一个带有“了解更多”链接的列

因此,在您的情况下,请更改以下内容:

<?php foreach($results as $r):?>
    <tr>
        <td align="center"><a href="#"><?php echo ($r->title); ?></a></td>
        <td align="center"><a href="#"><?php echo ($r->author); ?></a></td>
    </tr>
<?php endforeach;?>

为此:

<?php foreach($results as $r):?>
    <tr>
        <td align="center"><?= $r->title; ?></td>
        <td align="center"><= $r->author; ?></td>
        <td align="center"><a href="<?= base_url()?>controller_name/controller_method/$r->id">Learn More</a></td>
    </tr>
<?php endforeach;?>

作者;?>
锚现在看起来像这样:

<?= base_url()?>controller_name/controller_method/$r->id
<?= base_url()?>books/about/$r->id
                  ^     ^     ^
                  |     |     |
                  |     |    parameter
                  |    method
               controller
controller\u name/controller\u method/$r->id
您希望将其更改为所选的方法名称,可能类似于以下内容:

<?= base_url()?>controller_name/controller_method/$r->id
<?= base_url()?>books/about/$r->id
                  ^     ^     ^
                  |     |     |
                  |     |    parameter
                  |    method
               controller
books/about/$r->id
^     ^     ^
|     |     |
||参数
|方法
控制器

它将重定向到特定的控制器方法,并将书本的id作为参数传递。您现在的工作是构建该方法,这样您就可以按id检索特定的书籍并将其解析为视图。

print\r($results)在您的视图中,检查结果是什么??我是否应该替换打印($results);使用foreach?我只想检查
print\r($results)的结果是什么我的意思是数据库中的值是否出现在您的视图中。检查您的查询是否返回数据??我的查询返回数据如果我应用了您的代码,我的控制器或模型是否需要任何更改?当然,您必须在控制器中创建新方法。你明白这个概念吗?