Как отобразить массив несколько раз на одной странице? - PullRequest
4 голосов
/ 21 мая 2011

Мне было интересно, может ли кто-нибудь помочь мне с этой проблемой. Я хочу напечатать / повторить решение функции несколько раз на одной странице. Это возможно?

Вот моя функция:

public function getFeedback($p_iUserid) {

    include("Connection.php"); //open db

    try
    {
        $sql = "select DiaryOpmerkingen, DiaryDoctorcomment from tblDiary 
                WHERE fk_UserId = ".$p_iUserid."
                AND DiaryDay = '".$this->Day."';";
        $rResult = mysqli_query($link, $sql);
        return $rResult;
    }
    catch(Exception $e)
    {
        // no connection database
        $feedback = $e->getMessage();
    }
    mysqli_close($link);
}

И вот как мне сейчас удается вызвать функцию. Но это работает только один раз:

if(mysqli_num_rows($feedbackPatient) > 0)
                    {
                        while($oUser = mysqli_fetch_assoc($allUsers))
                        {
                            echo $oUser['DiaryOpmerkingen'];
                        }
                    }

Я надеюсь, что кто-то может помочь! В любом случае, спасибо.

Ответы [ 3 ]

1 голос
/ 21 мая 2011

Самый простой способ сделать это, вероятно, получить весь набор результатов за один раз, а затем передать его.

Это может быть дорого с точки зрения производительности, если набор результатов большой, но этовероятно, не будет иметь существенного значения.Это особенно легко с расширением mySqli, потому что вы можете использовать mysql_fetch_all.

public function getFeedback($p_iUserid) {

    include("Connection.php"); //open db

    try
    {
        $sql = "select DiaryOpmerkingen, DiaryDoctorcomment from tblDiary 
                WHERE fk_UserId = ".$p_iUserid."
                AND DiaryDay = '".$this->Day."';";
        $rResult = mysqli_query($link, $sql);
        return mysqli_fetch_all($rResult, MYSQLI_ASSOC);
    }
    catch(Exception $e)
    {
        // no connection database
        $feedback = $e->getMessage();
    }
    mysqli_close($link);
}

. Затем вы получите ассоциативный массив, возвращаемый из getFeedback, и можете пройти через этокак обычно:

$feedback = getFeedback($id);
foreach ($feedback as $item) {
    echo $item['DiaryOpmerkingen'];
}
1 голос
/ 21 мая 2011

Создайте функцию для своей задачи печати, затем вызывайте ее столько раз, сколько захотите:

function print_the_stuff($feedbackPatient){

if(mysqli_num_rows($feedbackPatient) > 0)
                    {
                        while($oUser = mysqli_fetch_assoc($allUsers))
                        {
                            echo $oUser['DiaryOpmerkingen'];
                        }
                    }
}

Затем, куда вам нужно напечатать:

print_the_stuff($feedbackPatient);
0 голосов
/ 21 мая 2011

Я думаю, что это должно быть:

$feedbackPatient = getFeedback($p_iUserid);
    if(mysqli_num_rows($feedbackPatient) > 0)
                        {
                            while($oUser = mysqli_fetch_assoc($feedbackPatient))
                            {
                                echo $oUser['DiaryOpmerkingen'];
                            }
                        }

почему вы используете diff для mysqli_num_rows и sqli_fetch_assoc?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...