使用数组中的值

时间:2014-03-15 01:31:35

标签: php arrays

我是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

2 个答案:

答案 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>

CI URL Helper

好的,我认为我们需要退一步。信不信由你,但我认为你自己也想做太多。让框架帮助你多一点......

在您的项目中,您应该拥有视图,控制器和模型。听起来你有每个,你的模型正在返回结果。

现在,在您的控制器中它看起来应该是这样的:

<?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来检索这些值。