我是PHP框架的新手,我遇到了一个问题,我试图将数组的值放入Codeigniter中的网站URL。我正在查询数据库并获得结果没有问题。我试图使用每个结果来创建使用网站网址的链接。
这是我到目前为止所拥有的
if (is_array($results))
{
if( !empty($results) )
{
foreach($results as $row)
{
$venue_name = $row->venue_name;
$venue_town = $row->venue_town;
$venue_county = $row->venue_county;
echo '<div class="col-sm-12 col-md-6">';
echo '<tr>';
echo '<h4>';
echo '<td>'.$row->fixture_round.'</td>'."</br></br>";
echo '<td >'.'<img src="'."$row->team_logo".'"> '.$row->fixture_text.' <img src="'."$row->team_logo_2".'"> '.'</td>'."</br></br>";
echo '<td>'.$row->fixture_comp.'</td>'."</br>";
echo '</h4>';
echo '<td>'.$row->fixture_time.' '.$row->fixture_date.'</td>'."</br></br>";
echo '<td>'.$row->venue_name.', '.$row->venue_town.'</td>'."</br></br>";
echo '</tr>';
}
}
else echo "Not Array";
}
我正在尝试创建一个链接,该链接使用数组中的值并将它们连接在一起以创建链接 - 我已启用查询字符串并尝试使用$ _GET执行此类操作但我无法使其工作< / p>
<a href="<?php echo site_url('user/reviews?venue_name=$venue_name&venue_town=$venue_town&venue_county=$venue_county') ?>Link to item</a>
这将转到页面,但它显示变量名称而不是其中包含的值。
Welcome to $venue_name, $venue_town, $venue_county
答案 0 :(得分:1)
这很有效。您需要先加载网址助手:
$this->load->helper('url');
然后你可以这样做:
<?php echo anchor('user/reviews?venue_name='.$venue_name.'&venue_town='.$venue_town.'&venue_county='.$venue_county, 'Link to item', 'title="Link to item"'); ?>
或传统方式(在这种情况下您不需要加载帮助程序):
<a href="<?php echo site_url('user/reviews?venue_name='.$venue_name.'&venue_town='.$venue_town.'&venue_county='.$venue_county) ?>Link to item</a>
好的,我认为我们需要退一步。信不信由你,但我认为你自己也想做太多。让框架帮助你多一点......
在您的项目中,您应该拥有视图,控制器和模型。听起来你有每个,你的模型正在返回结果。
现在,在您的控制器中它看起来应该是这样的:
<?php
// load venue model
// load review model
// load user model
// load any other helpers
public function index(){
$venues = [];
$venues = $this->venue_model->get_all_venues();
$data[ 'venues' ] = ( $venues ) ? $venues : NULL;
$this->load->view( 'path-to-your-view', $data );
}
<p>Venues</p>
<?php
if ( $venues )
{
?>
<table>
<?php
foreach($venues as $venue)
{
?>
<tr><td><?php echo anchor( 'user/reviews/'.$venue->venue_id, $venue->venue_name); ?></td></tr>
<?php
}
?>
</table>
<?php
}
?>
... rest of your markup here ....
然后你会有一个类似的路径(控制器名称是例子):
$route['user-reviews/(:num)'] = 'your_controller/get_user_review/$1';
然后在控制器中,您将有一个匹配的方法:
<?php
public function get_user_review($userID) {
$user_reviews = $this->your_model->get_user_reviews('$user_id);
$data[ 'user_reviews' ] = ( $user_reviews ) ? $user_reviews : NULL;
$this->load->view( 'path-to-your-view', $user_reviews );
}
最后,您的观点:
<h1>Reviews</h1>
<?php
if($user_reviews) {
// loop through reviews.
}
else {
?>
<p>No reviews found for user.</p>
<?php
}
?>
答案 1 :(得分:0)
我在问题示例代码中注意到的一些事情:
获取变量名称的原因是因为您在单引号中包含变量(例如:$venue_name
)。
在单引号内使用变量时,必须将变量置于其外部。
我在您的示例中注意到的另一件事是<a>
标记未正确关闭。
(您可能已在代码中修复此问题?)
你有:
...$venue_county) ?>Link to item</a>
应该是:
Notice
VV
...$venue_county) ?>">Link to item</a>
试试这个:
<a href="<?php echo site_url('user/reviews?venue_name='.$venue_name.'&venue_town='.$venue_town.'&venue_county='.$venue_county) ?>">Link to item</a>
创建正确的链接将允许您将这些变量传递到另一个页面,您可以使用$_GET
来检索这些值。