PHP: создайте ‘поддельный’ / пользовательский оператор в while

#php #pdo

#php #pdo

Вопрос:

У меня есть этот цикл while.

while($show = $queryActivities->fetch()){ echo $show["name"]."<br>"; }

Это берет данные из запроса и выводит имена..

Теперь возможно ли создать пользовательские / поддельные данные? Я хотел бы создать один, если в $queryActivities нет данных / оператора, тогда он должен создать пользовательский оператор с именем «name» со значением «Здесь ничего ..»

Возможно ли это? Вы можете это сделать?

Я знаю, что могу сделать if($queryActivities->rowCount == 0){ echo "Nothing here" ; }

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

Что-то вроде..:

 if($queryActivities->rowCount == 0){
 # ..MAKE CUSTOM DATA..
 # ..SOMETHING LIKE THIS MAYBE:  .. 
 # $queryActivities = MAKE ARRAY WITH name => 'Nothing here'.. (just a thought)
}
while ($show = $queryActivities->fetch()){
echo $show["name"]."<br>";
}
  

Что-то вроде этого, именно то, что я представляю, хотя я действительно не знаю, как.

Спасибо

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

1. Итак, если в $queryActivities нечего извлекать (строк 0), то создайте поддельный / пользовательский оператор с name = ‘nothing here’, чтобы он мог запустить цикл хотя бы один раз и сказать, что там ничего нет..

2. вы можете просто сделать это if($queryActivities->rowCount == 0) { echo ...; return; } , не кажется необходимым подделывать цикл

Ответ №1:

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

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

У вас может быть либо if / else, который проверяет, пуст ли массив, и печатает сообщение по умолчанию, либо создает запись по умолчанию со свойством ‘name’, которая затем отображается с тем же циклом вывода, что и обычные данные. Я бы предпочел первый, но мы сделаем второй стиль, поскольку это то, о чем вы спрашивали.

Вот одно простое решение.

 $activities=array();
while($show = $queryActivities->fetch()){ $activities[]=$show; }

if(empty($activities)){ $activities=array(array('name'=>'None Found')); }

foreach($activities as $activity){
   echo $activity['name']."<br>";
   }
  

Я думаю, что лучшим решением будет просто использовать if / else. Однако, в зависимости от вашего стиля вывода, это может потребовать большего количества повторений кода.

 $activities=array();
while($show = $queryActivities->fetch()){ $activities[]=$show; }

if(empty($activities)){ 
   echo "None found <br>";
   }

else{
   foreach($activities as $activity){
     echo $activity['name']."<br>";
     }
   }
  

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

1. Спасибо за ответ, правда в том, что у меня есть не просто echo $show[«name»].»<br>»; но с css-полем, с именем, картинкой, датой, сообщением и т.д. из $ show. И я подумал, что вместо дублирования (кода в while) всего поля и т.д. (и вставки в if (пустой)), возможно, просто создайте пользовательские данные и заполните эти поля (имя, изображение) и т.д., чтобы закодировать его умнее. думаю, вы не можете этого сделать

2. @Karem Конечно, я понимаю, что ты имеешь в виду. Это то, о чем я думал, когда упомянул ‘это может потребовать большего повторения кода.’. Затем используйте первый стиль и создайте набор данных по умолчанию.