Php Class Function Return Sorunu
-
class.php
<?php class lists { function list_article() { $page = isset($_GET['page']) ? (int) $_GET['page'] : 1; $pageof = 10; $limit = ($page - 1) * $pageof; $query = mysql_query('select * from article order by id desc limit ' . $limit . ', ' . $pageof); while($results= mysql_fetch_assoc($query)) { $raw = '<a href="'.$results['url'].'.html">'.substr(trim(strip_tags($results['title'])),0,30).'</a>'; return $raw; } } ?>model.php
<?php include('class.php'); $lists = new lists; $article_list = $lists->list_article(); ?>view.php
<?php include('model.php'); print $article_list; ?>evet hacılar yukardaki sınıfı bu şekilde kullanıyorum ama bana 10 tane değil 1 tane makale yazdırıyor problem nerde acaba ?
not : db bağlantı fonksiyonunu falan yazmadım kafa karıştırmasın sorun salt çıksın diye -
$raw.='<a href="'.$results['url'].'.html">'.substr(trim(strip_tags($results['title'])),0,30).'</a>';böyle dener misin hocam.Ayrıca return'ü de while'ın içinden çıkart.
sokoban tarafından 26/Ağu/13 15:24 tarihinde düzenlenmiştir -
sokoban bunu yazdı
$raw.='.$results['url'].'.html">'.substr(trim(strip_tags($results['title'])),0,30).'';böyle dener misin hocam.Ayrıca return'ü de while'ın içinden çıkart.
Böyle tek değişkende biriktirmezmi?
@realist:
eğer yanlış düşünmüyorsam belirttiğin limit değerindeki en son articleı yazdırıyordur, return while içinde olduğu için döngü boyunca atama yapar ve en son alınan değer kalır ekrana yazdıracağın değişkende.
böyle yapmak yerine model.phpyi boşver, fonksiyondan değer döndürmeyede uğraşma, geçerli sayfa değerine göre gerekli limit değerlerini fonksiyona parametre olarak gönder ve direk while döngüsünde yazdır.
-
sokoban bunu yazdı
$raw.='.$results['url'].'.html">'.substr(trim(strip_tags($results['title'])),0,30).'';böyle dener misin hocam.Ayrıca return'ü de while'ın içinden çıkart.
aynen hacı çalıştı nokta operatorunun burdaki görevi nedir acaba
-
Realist bunu yazdısokoban bunu yazdı
$raw.='.$results['url'].'.html">'.substr(trim(strip_tags($results['title'])),0,30).'';böyle dener misin hocam.Ayrıca return'ü de while'ın içinden çıkart.
aynen hacı çalıştı nokta operatorunun burdaki görevi nedir acaba
nokta ile iki stringi birbirine bağlayabilirsin hocam php'de.
$c+=1 demek ile $c.="XYZ" demenin bir farkı yok ikiside sonucu aynı değişkenin içine ekliyor. -
@sokoban olayi cozmus zaten ama
@realist hocam fonksiyonun icinde return kullandiginda php o fonksiyondan cikar hocam, while icinde return yaparak birden fazla kez return yapamazsin. orda return yerine echo kullansanda olabilirdi mesela, ama fonksiyonlarin icinde echo kullanmakta pek tercih edilen birsey degil
sokoban in cozumu disinda da soyle birsey yapabilirsin :
$temp = array();
$i = 1;
while($i < 10){
$temp[] = $i;
++$i;
}
dersen $temp arrayinin icine sirayla 1,2,3 ...... 10 a kadar atacaktir, [] arrayin icinde yeni bi satir acar
