PHP - CodeIgniter

7 Cevap php

Ben CodeIgniter ile bir site yazmaya çalışıyorum ama ben PHP ile bir sorunu var. Ben bu kadar basit olduğunu eminim ve yanlış olamaz. Ama, gelen CodeIgniter sadece bir acemi hataları bilmiyorum :)

    <html>  
    <head>  
        <title><?=$page_title?></title>  
    </head>  
    <body>  
        <?php foreach($result as $row):?>  
        <h3><? echo $row->title; ?></h3>  
        <p><? echo $row->text; ?></p>  
        <?php endforeach;?>  
    </body>  
</html> 

Ben bu dosyadan bir hata var:

Bir PHP hata ile karşılaşıldı

Önem: Uyarı

Message: Invalid argument supplied for foreach()

Dosya adı: izleme / helloworld_view.php

Satır sayısı: 6

Bu :) okumak için şimdiden teşekkürler

7 Cevap

Eğer foreach döngü tedarik değişken bir dizi olmalıdır. Verilen değişkenin değeri aşağıda çözümü ile bir dizi değilse foreach atlayabilirsiniz.

<?php if(is_array($result)): ?>
<?php foreach($result as $row):?>  
<h3><? echo $row->title; ?></h3>  
<p><? echo $row->text; ?></p>  
<?php endforeach;?>  
<?php endif; ?>

Try foreach($result->result() as $row) - sen CodeIgniter'ın aktif rekor tarafından döndürülen nesne yineleme yapmak için çalışıyoruz olabilir.

Eğer merak ediyorsanız ne değişken, çıktı o olabilir!

var_dump($result);

Yani anında neler olduğunu size söyleyecektir. Benim tahminim, herhangi bir yerden modelinden YANLIŞ döndü, ya da (Alex önerdiği gibi) sonucu () veya result_array () DB nesnesi kullanarak ve değildir.

$ Sonuç dizisi değil.

Önce is_array bunu kontrol etmek için try foreach.

Ve $ sonuç dizi değil neden hata ayıklama: P

Sen empty php fonksiyonu kullanmak ve böyle bir şey yapabilir

<?
    if(!empty($results)){
      echo "
      foreach($result as $row){
       <h3>".$row->title."</h3>  
       <p>".$row->text".</p>
           "; 
      }
    }else{
       echo "<p>no results<p/>";
    }
?>

If you are using the tutorial at : http://net.tutsplus.com/tutorials/php/codeigniter-basics/

Sonra helloworld_model.php hattı 5'tir, bu olmalıdır:

if ($query->num_rows() == 0)

değil

if ($query->num_rows() > 0)

Öncelikle, size görünümüne geçiyoruz veri dizi gerçekten $data['result'] denir emin olmak gerekir.

Kontrolör sayfasında, bu gibi görünmelidir:

// you need to put some data here for checking the number of results returned

if($numberOfRows > 0 ){
$data['result'] = $this->Yourmodel->methodName($arguments);

$this->load->view('yourView');
}

else{
$this->load->view('yourCustomMissingOrErrorView');
}

Görünüm sayfasında olmalıdır

<?php

// note if you are just intitialiizing variables, remove the echo statements and put it     before all of your html. if you are looping for output then put it where it needs to go in the html

foreach($result as $value){
$title = $this->value->title; // just makes it easier to use if you need to use  elsewhere
$text = $this->value->text;    // just makes it easier to use if you need to use elsewhere  

echo "<h3>" . $title . "</h3>";
echo "<p>" . $text . "</p>";  
}
?>