2017-09-13 5 views
0

Je crée ma première application Codeigniter pour un blog avec des nouvelles. Dans la page principale, il n'y a que le titre de l'actualité qui est aussi un lien vers une vue avec les informations détaillées et le corps des nouvelles. J'ai du mal à accéder à l'URL qui doit passer par-dessus une fonction qui reçoit l'ID du nouveau en tant que paramètre. Je peux juste que ça marche. Est-ce que quelqu'un peut m'aider? Le problème ne réside pas dans la fonction elle-même, car elle fonctionne correctement lorsque j'attribue une valeur statique à l'URL, mais pour une raison quelconque, je peux envoyer l'objet $ row-> id en tant que Get through the URL avec la bonne valeur pour chacune des nouvelles.Vous pouvez accéder à des informations détaillées via l'URL avec les paramètres de la fonction (Codeigniter)

MODÈLE

class Post extends CI_Model{ 


    public function getPost(){ 

     $this->load->database('fintech_blog'); 
     $data = $this->db->get('post'); 
     return $data->$result(); 

    } 

CONTRÔLEUR

public function getPost($id){ 

    $query = $this->db->query("select * from post where id = '$id' "); 
    $rows = $query->result(); //method for putting into an array format 
    $data=array('result'=>$rows); 

    $this->load->view('view',$data); 

} 

VIEW

foreach ($result as $row): 

$id = $row->id; 
$post = site_url('welcome/getPost/$row->id'); 

?> 

<!-- Main Content --> 
<div class="container"> 
    <div class="row"> 
     <div class="col-lg-8 col-md-10 mx-auto"> 
      <div class="post-preview"> 
       <a href="<?php echo $post; ?>"> 
        <h2 class="post-title"> 
         <?php echo $row->title; ?> 
        </h2> 
        <h3 class="post-subtitle"> 
         <?php echo $row->calling; ?> 
        </h3> 

       </a> 
       <p class="post-meta">Posted on 
        <!-- <a href="#">Start Bootstrap</a> --> 
        <?php echo time_elapsed_string($row->created); ?></p> 

       </div> 
       <hr> 

      </div> 
     </div> 
    </div> 

<?php endforeach; ?> 
+0

Dans la vue, après $ = site_url ('accueil/getPost/$ ligne-> id'); ici la variable ne va pas analyser parce que l'utilisation de guillemets simples (''). Remplacer les guillemets simples ('') avec des guillemets doubles (""), puis essayez. – Rohit

+0

Vous pouvez essayer ce premier '$ post = site_url ('bienvenue/getPost /'. $ Row-> id);' pour être sûr – chad

Répondre

0

Le problème vient de la façon dont vous créez la chaîne pour $post. Comme un intervenant suggère que le problème est l'utilisation de guillemets simples et d'utiliser des guillemets doubles à la place. La caractéristique la plus importante des chaînes entre guillemets doubles est le fait que les noms de variables seront développés. Ce qui signifie que le symbole de la variable ($test dans ce cas) est remplacé par la valeur de la variable.

À titre d'illustration:

$test = "blue"; 
//first, a string created with single quotes 
echo 'The sky is $test today.'; //outputs: The sky is $test today. 

Mais en utilisant des guillemets doubles pour créer la chaîne ...

echo "The sky is $test today."; //outputs: The sky is blue today. 

Le var $test obtenir d'après le contenu qu'elle détient. Par conséquent, les deux premières lignes de la boucle foreach dans la vue doivent être.

$id = $row->id; 
$post = site_url("welcome/getPost/$row->id"); 

Cependant, vous n'utilisez jamais $id et que vous utilisez uniquement $post une fois. Cela me dit que ces deux lignes ne sont pas nécessaires. Supprimez-les tous les deux.

Modifier la ligne

<a href="<?php echo $post; ?>"> 

à

<a href="<?php echo site_url("welcome/getPost/$row->id"); ?>"> 
+0

Merci beaucoup pour votre aide @DFriend –