Jump to content
php.lv forumi

function output


scvaer

Recommended Posts

Tātad, lai katru reizi nerakstītu query, lai iegūtu informāciju, kas tas ir par nickname, izdomāju uztaisīt funkciju:

 

function nickname($userid){
   $id = mysql_real_escape_string($userid);
   $query = mysql_query("SELECT * FROM `users` WHERE id='$userid'");
   $nick = mysql_fetch_assoc($query);
   echo $nick['username'];
   return;
}

un

 

<?php
           $id = $news['id'];
               $comments = mysql_query("SELECT * FROM `news_comments` WHERE `news_id`='$id' ORDER BY `id` DESC");
               while($com = mysql_fetch_assoc($comments))
               {
                   $nick = nickname($com['author']);
                   echo '<div class="comments"><div class="title">Posted by '.nickname($nick).'</div>'.$com['text'].'</div>';
               }

           }
?>

e1nxst87o874szipo6.jpg

Un tagadiņ tas rezultāts izskatās šādi. Kā es varētu to nick uzmest tur, kur tam vajadzētu būt? Paldies jau iepriekš! :)

Link to comment
Share on other sites

Pirmkārt jau nevajag echo mainīgo, bet atgriezt šo nick name.

Otrkārt kādēļ izmanto mysql_escape_string, ja vari vienkārši pārbaudīt vai tiek padots int?

 

Bet par to kādēļ Tev šādi tiek izvadīts niks, pieļauju domu ka varētu būt vainīgs echo, jo vajag return pašu value, ja ne, tad skaties CSS.

Link to comment
Share on other sites

Paldies veči, atkal jau palīzējāt! :) Pārveidoju funkciju uz šo un viss iet.

function nickname($userid){
   $id = mysql_real_escape_string($userid);
   $query = mysql_query("SELECT * FROM `KGH_USERS` WHERE id='$userid'");
   $nick = mysql_fetch_assoc($query);

   return $nick['username'];;
}

Labi, tagad pastudēšu arī to mysql.join ;)

Link to comment
Share on other sites

sakarā ar to, ka pašlaik paralēli iet diskusija par OOP Vs. proc., normālā FW, šis izskatītos aptuveni šādi:

 

//kontrolerī:
$this['comments']=db::q('SELECT * FROM news_comments nc LEFT JOIN users u ON u.id=nc.author WHERE id=%s ORDER BY id DESC',$newsid)->rows();

//templeitā
<? foreach($comments as $com){ ?>
 <div class="comments"><div class="title">Posted by <?=$com['username']?></div><?=$com['text']?></div>
<? } ?>

Edited by codez
Link to comment
Share on other sites

Mr.Key, tev ir kaut kādi komplekis, vai vienkārši prasta skaudība?

 

daGrevis, piekrītu

 

//modelī vai ORM gadījumā pat nebūs vajadzīgs vispār:
return db::q('SELECT * FROM news_comments nc LEFT JOIN users u ON u.id=nc.author WHERE id=%s ORDER BY uc.id DESC',$newsid)->rows();

//kontrolerī:
$this['comments']=Model('post')->loadByID($id)->comments();

//templeitā
<? foreach($comments as $com){ ?>
 <div class="comments"><div class="title">Posted by <?=$com['username']?></div><?=$com['text']?></div>
<? } ?>

Edited by codez
Link to comment
Share on other sites

Ko funkcija "atgriež" ? - Vērtību, kā angliski būtu "atgriezt kaut ko " - "return".

Tad topika sākuma funkcijā beigās ir tiaki - "atgriež", bet vaidzētu "atgriež vārdu" kur "vārdu" ir mainīgā vērtībā.

 

Tur bija arī tā viņa lielākā problēma ;)

Link to comment
Share on other sites

Labi, nedaudz palasīju par sql inner join un tad sapratu, ka tik tiešām vajadzētu to izmantot, nevis to nickname funkciju. Taču, man radās pāris jautājumi arī ar šo fīču.

SELECT news.author, news.text, users.nickname FROM news INNER JOIN user ON news.author = users.id

vai šo var kaut kādā veidā saīsināt, lai nebūtu jāraksta visas tabulas, izmantojot to pašu zvaigznīti *.

Un tālāk nesanāca arī šo fīču nekur atrast, kā šo SQ: JOIN INNER var izmantot vēl ar WHERE id='$id', jo piemetot šo klāt, nezin kāpēc man izmet expects parameter 1 to be resource, boolean given in .

 

Atbildot uz to Mr.Key komentāru, gribētos tik teikt, ka esmu jau pagodināts par to, ka šeit dzīvoju un ar mani viss ir kārtībā, kur ta vēl par to, ka vispār par to, ka man kāds vispār palīdz ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...