MYSQL PHP цикл while, сделайте что-нибудь, если не возвращено заданное количество строк - PullRequest
1 голос
/ 12 января 2012

Я пытаюсь найти лучший способ сделать что-то подобное. По сути, я хочу сделать (в простом примере) запрос к базе данных и вернуть 3 строки, однако если нет 3 строк, скажем, есть 0, 1 или 2, я хочу поместить другие данные в место пропущенных строк.

Скажите, что мой запрос возвращает 2 строки. Тогда должен быть 1 элемент списка, возвращенный с другими данными.

Примерно так: http://i42.tinypic.com/30xhi1f.png

$query = mysql_query("SELECT * FROM posts LIMIT 3");
while($row = mysql_fetch_array($query))
{
  print "<li>".$row['post']."</li>";
}
//(this is just to give an idea of what i would likkeee to be able to do
else
{
  print "<li>Add something here</li>";
}

Ответы [ 4 ]

3 голосов
/ 12 января 2012

Количество элементов в наборе результатов можно получить с помощью mysql_num_rows . Просто создайте разницу, чтобы узнать, сколько предметов «пропало».

2 голосов
/ 12 января 2012

Есть три способа, которыми я могу придумать: получить счетчик строк с помощью mysql_num_rows, простить массив тремя значениями и заменить их при зацикливании результирующего набора, либо отсчитать от трех в качестве вашей работы и завершить подсчет с помощью второй цикл, как это:

$result = db_query($query);
$addRows = 3;
while ($row = mysql_fetch_assoc($result){
    $addRows--;
    // do your stuff
}
while ($addRows-- > 0) {
    // do your replacement stuff
}
1 голос
/ 12 января 2012

Если вы не нашли строку, добавьте дополнительную информацию соответственно.

$query = mysql_query("SELECT * FROM posts");
for($i=0;$i<3;$i++){
    $row = mysql_fetch_array($query);
    if($row){
        print "<li>".$row['post']."</li>";
    }
    //(this is just to give an idea of what i would likkeee to be able to do
    else{
        print "<li>Add something here</li>";
    }
}
0 голосов
/ 12 января 2012

Предполагая, что вы сохраняете строки в массиве или что-то в этом роде, вы можете просто выполнить некоторое заполнение с помощью цикла while (в зависимости от того, как вы генерируете другие данные):

while (count($resultList) < 3) {
    // add another row
}
...