0

content.phpにwhileループがあり、パラメーターのように$resultを使用したいと思います。content.phpファイルから関数を呼び出して$resultを取得してwhileループで使用するにはどうすればよいですか?

  while ($row = mysql_fetch_array($result)) 
                {
                    $ename = stripslashes($row['name']);
                    $eemail = stripslashes($row['email']);
                    $ebox = stripslashes($row['lund']);
                    $ecategori = stripslashes($row['LundaBlogg']);
                    $epost = stripslashes($row['post']);
                    $grav_url = "http://www.gravatar.com/avatar.php?gravatar_id=".md5(strtolower($eemail))."&size=70";

                    echo
                    (
                        '<li> 
                            <div class="datum">'.$row['date'].'</div>
                            <div class="meta"><img src="'.$grav_url.'" alt="Gravatar" /><p>'.$ename.'</p></div>
                            </br>
                            <div class="categori"><p>Kategori: '.$ecategori.'</p></div>
                            <div class="topic"><p>'.$ebox.'</p></div>   
                            <div class="shout"><p>'.$epost.'</p></div>
                            <div class="raderaknapp"><a href="../delete_ac.php?id=' . $row['id'] . '"class=\"icon-2 info-tooltip\">Radera Inlägg</a></div>
                            <div class="raportpost"><p><a href="mailto:someone@example.com?Subject=Hello%20again">Rapportera inlägg</a></p></div>
                        </li>'
                    );

                    ?>
                        <h4>
                        <form action="<?php echo $self?>" method="POST">
                            <input type="hidden" name="id" value="<?php echo $row['id']?>"/>
                            <input type = "submit" name="Gilla" value = 'Gilla'"/>
                        </form>
                        </h4>

                        <div id="radera-infotwo">
                            <span onmouseover="ShowText('Messagetwo'); return true;" onmouseout="HideText('Messagetwo'); return true;" href="javascript:ShowText('Messagetwo')">
                                <img src="http://www.wallpaperama.com/forums/post-images/20081107_6718_question-mark.gif">
                            </span>
                        </div>  

                        <div id="radera-info">
                            <span onmouseover="ShowText('Message'); return true;" onmouseout="HideText('Message'); return true;" href="javascript:ShowText('Message')">
                                <img src="http://www.wallpaperama.com/forums/post-images/20081107_6718_question-mark.gif">
                            </span>
                        </div>

                        <?
                        ?>
                    <?

                    echo ("Antal Gilla: " .$row['likes']); 

                    if(isset($_POST['Gilla']) && $_POST['id'] == $row['id']){echo '<h5><img src="../images/tummen-upp.png"/>Du har Gillat detta inlägg.</h5>';}

                    echo "<hr>";  
                }   

これは、関数blogPosts_get()があるfunctions.phpファイルです。

function blogPosts_get(){ 
  $query = "SELECT * FROM shouts ORDER BY `id` DESC LIMIT 8;";
  $result = mysql_query($query) or die('<p class="error">Wrong.</p>');   
}

関数blogPosts_get()でreturnを試してみましたが、その動作を理解できません。関数blogPosts_get()から$ result variabelを取得して、whileループで使用できるようにするのを誰かが手伝ってもらえますか?

4

2 に答える 2

1

まず、functions.php を content.php 内に含めますrequire_once(./'your path'/functions.php');。ファイル content.php の先頭に配置してから、すべてをロードする必要があります。その後、functions.php のコードを次のように変更します。

function blogPosts_get(){ 
  $query = "SELECT * FROM shouts ORDER BY `id` DESC LIMIT 8;";
  $result = mysql_query($query) or die('<p class="error">Wrong.</p>');  
return $result; 
}

次のように content.php のループの前に呼び出すと:

$result = blogPosts_get();
于 2013-03-13T18:15:49.267 に答える
0

まず、関数を変更して結果を取得し、MySQL クエリ オブジェクトを返すのではなく、操作する配列オブジェクトを作成するのが簡単な方法です。

function blogPosts_get(){
    $query = "SELECT * FROM shouts ORDER BY `id` DESC LIMIT 8;";
    $result = mysql_query($query);
    if(!$result)
        return array();
    else{
        while($row = mysql_fetch_array($result))
            $posts[] = $row;
       return $posts;
   }  
}

これにより、投稿の取得が処理され、作業用の配列オブジェクトが常に返されます。

次に、requireまたはを使用して関数を含めていることを確認する必要がありますrequire_once。これを次のように呼び出すことができます

$posts = blogPosts_get();

次に、

foreach ($posts as $post){

注意: MySQL_* は PHP 5.5 で非推奨になりました。MySQLi_* または PDO を使用します。

于 2013-03-13T18:09:52.280 に答える