Как я могу поместить PHP и HTML в массив PHP? - PullRequest
0 голосов
/ 24 июня 2010

как я могу сделать так, чтобы это не возвращало ошибку:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

.

$day[$i++] = "<tr><?php if(isset($schedule['00:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['00:00'] ?></td><?php } if(isset($schedule['02:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['02:00'] ?></td><?php } if(isset($schedule['03:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['03:00'] ?></td><?php } if(isset($schedule['04:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['04:00'] ?></td><?php } if(isset($schedule['05:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['05:00'] ?></td><?php } if(isset($schedule['06:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['06:00'] ?></td><?php } if(isset($schedule['07:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['07:00'] ?></td><?php } if(isset($schedule['08:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['08:00'] ?></td><?php } if(isset($schedule['09:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['09:00'] ?></td><?php } if(isset($schedule['10:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['10:00'] ?></td><?php } if(isset($schedule['11:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['11:00'] ?></td><?php } if(isset($schedule['12:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['12:00'] ?></td><?php } if(isset($schedule['13:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['13:00'] ?></td><?php } if(isset($schedule['14:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['14:00'] ?></td><?php } if(isset($schedule['15:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['15:00'] ?></td><?php } if(isset($schedule['16:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['16:00'] ?></td><?php } if(isset($schedule['17:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['18:00'] ?></td><?php } if(isset($schedule['19:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['19:00'] ?></td><?php } if(isset($schedule['20:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['20:00'] ?></td><?php } if(isset($schedule['21:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['21:00'] ?></td><?php } if(isset($schedule['22:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['22:00'] ?></td><?php } if(isset($schedule['23:00'])) { ?><td style=\"width:32px\"><?php echo $schedule['23:00'] ?></td><?php } ?></tr>"

Ответы [ 4 ]

3 голосов
/ 24 июня 2010

Вы дважды ошиблись:

  1. Вы пытаетесь использовать код PHP в качестве данных . Пока вы должны использовать код результата вместо
  2. Ваш PHP-код далеко не оптимален.

Вот, пожалуйста,

$str = '';
for ($h=0;$h<24;$h++) {
  $sched = "&nbsp;";
  $hour  = str_pad($h, 2, 0, STR_PAD_LEFT);
  if (isset($schedule["$hour:00"])) $sched = $schedule["$hour:00"]; 
  $str  .= "<td style=\"width:32px\">$sched</td>";
}
$day[$i++] = $str;

Почувствуй силу программирования!

3 голосов
/ 24 июня 2010

точка с запятой отсутствует;)

0 голосов
/ 24 июня 2010

Используйте вот так,

<?php
$day[$i++] = "<tr>";
if(isset($schedule['00:00'])) { 
   $day[$i++] .= "<td style=\"width:32px\">".$schedule['00:00']."</td>";
}
if(isset($schedule['02:00'])) {
   $day[$i++] .= "<td style=\"width:32px\">".$schedule['02:00']."</td>";
} if(isset($schedule['03:00'])) { 
    $day[$i++] .= "<td style=\"width:32px\">".$schedule['03:00']."</td>";
} ......................

?>
0 голосов
/ 24 июня 2010

Редактировать: удалил пример NOWDOC после прочтения связанного вопроса , объясняющего UseCase.

Вы можете легко решить вашу проблему следующим образом:

if(count($schedule) > 0) {
    $rows = '<tr></th>' 
          . implode('</td><td>', $schedule) 
          . '</td></tr>';
}

Для заголовков таблиц вы можете использовать аналогичный подход:

if(count($schedule) > 0) {
    $head = '<tr><th>' 
          . implode('</th><th>', array_keys($schedule)) 
          . '</td></tr>';
}

Поскольку вы запрашиваете базу данных только для тех столбцов со значением и не хотите, чтобы отображались полные 24 часа, нет необходимости проверять, содержат ли строки db что-либо еще в PHP. Они делают. В противном случае они не были бы возвращены из запроса. А поскольку вам нужно только обернуть содержимое в ячейки и заголовки таблицы, все, что вам нужно сделать, это наложить на них разметку для этого.

В дополнение не добавляйте встроенные стили, так как они делают ваш код менее доступным. Некоторые пользователи переопределяют стили с помощью пользовательских таблиц стилей, и встроенные стили могут нарушить это. Просто добавьте таблицу стилей CSS или <style> с помощью команды td { width:32px }. Заставляет страницу весить меньше.

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