Фильтрация массива в PHP

#php #sql #arrays

#php #sql #массивы

Вопрос:

у меня есть скрипт, который берет данные из базы данных и отображает их на странице.

Он сортирует строки по идентификационному номеру и отображает их в этом порядке

вот сценарий

 // get the info from the db 
$sql = "SELECT showtime, html FROM showfeed ORDER BY showtime ASC LIMIT $offset, $rowsperpage";
$result = mysql_query($sql, $conn) or trigger_error("SQL", E_USER_ERROR);

// while there are rows to be fetched...
while ($list = mysql_fetch_assoc($result))
{ 
   // echo data
   echo $list['html'] . "<hr />";
} // end while
  

что я хочу сделать, так это отфильтровать эти данные так, чтобы, если идентификационный номер строки меньше заданного числа, он не отображался. И если оно больше определенного числа, оно будет отображаться нормально.

Комментарии:

1. О каком идентификаторе вы говорите? Если вам нужен идентификатор для каждой вставки в базу данных, используйте первичный ключ auto_incremented .

2. Не могли бы вы, пожалуйста, четко сформулировать, чего вы хотите? Меньше определенного числа? И больше определенного числа? Тот же номер?

3. В их базе данных уже есть идентификаторы, что не проблема.

Ответ №1:

Сделайте это в запросе к базе данных.

 SELECT ... WHERE id > $certainNumber ...
  

Если по какой-либо причине вы хотите сделать это на PHP:

 while ($list = mysql_fetch_assoc($result)) {
    if ($list['id'] < $certainNumber) {
        continue;
    }
    ...
}
  

Ответ №2:

Предполагая, что ID — это поле в вашей таблице:

 $sql = "SELECT id, showtime, html FROM showfeed ORDER BY showtime ASC LIMIT $offset, $rowsperpage";
$result = mysql_query($sql, $conn) or trigger_error("SQL", E_USER_ERROR);

// while there are rows to be fetched...
$targetID = 120;
while ($list = mysql_fetch_assoc($result))
{ 
   // echo data
   if ($list['id'] < $targetID) continue;
   echo $list['html'] . "<hr />";
} // end while
  

Однако, если это сработает для вас, то, вероятно, лучше изменить ваш запрос на

 $sql = "SELECT showtime, html FROM showfeed WHERE id > 120 ORDER BY showtime ASC LIMIT $offset, $rowsperpage";
  

Комментарии:

1. Хорошо, что это работает, я использовал второй скрипт. Спасибо всем остальным!

Ответ №3:

Фильтровать sql-запрос (слово «массив» здесь не подходит).

вы должны фильтровать запрос с помощью sql вместо вашего приложения Что-то вроде этого

 SELECT showtime, html FROM showfeed WHERE ID > ?? AND ID < ?? ORDER BY showtime ASC