Пустые результаты, когда я сохраняю записи в массиве, повторяю их для достижения определенного числа и использую foreach для их отображения - PullRequest
0 голосов
/ 06 февраля 2011

Это то, что делает мой код: он получает 4 строки из моей таблицы, сохраняет их в массиве, повторяет их до тех пор, пока они не достигнут 20 внутри этого массива, а затем отображает их в цикле foreach ... проблема в том, что я получаю пустой результатв конце каждого цикла foreach из 4 результатов.

$result = mysql_query("SELECT * FROM ".$table."");
            $row_nr = mysql_num_rows($result); // Find out how many rows I have in the table, lets say 4


        while($rows = mysql_fetch_assoc($result)){
            $arrayrows[] = $rows; // Put my 4 rows in the array
            }   

        // Now I multiply nr. of rows to reach desired number which is 20
        $dbRow=0;
        for($n=0; $n <= 20; $n++)
        {
        if($dbRow > $row_nr) $dbRow = 0;
        $fullarrayrows[$n] = $arrayrows[$dbRow];
        $dbRow++;
        }

        // after some php pagination code I slice the array:
        $arrayslice = array_slice($fullarrayrows, $offset, $rowsperpage);

        // Now i display my array
        foreach($arrayslice as $slice) 
        {
            echo ''.$slice['name'].'';
            echo '<br />';
        }

Проблема в том, что я получаю несколько пустых записей в foreachname1name2name3NAME4ЗДЕСЬ Я ПОЛУЧИЛ ПУСТОЙ ВХОДname1name2name3NAME4Снова я получил пустую запись... и так далее, в конце каждого цикла

Большое спасибо, пожалуйста, дайте мне представление о том, что не так:)

1 Ответ

0 голосов
/ 06 февраля 2011

$dbRow индексы начинаются с 0 и заканчиваются на 3, но $row_nr равняется 4

, поэтому измените эту строку

if($dbRow > $row_nr) $dbRow = 0;

на

if($dbRow >= $row_nr) $dbRow = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...