#php #html
#php #HTML
Вопрос:
Интересная (для меня) проблема здесь. У меня есть некоторые данные, возвращенные обратно из веб-службы. Что я пытаюсь сделать, так это создать страницу, которая при установке флажка автоматически перенаправляется на новую страницу и отображает эти конкретные данные.
Код в настоящее время выглядит следующим образом
<table width="90%">
<thead>
<tr>
<th class="col-md-4 text-center" width="25%">Title</th>
<th class="col-md-2 text-center" width="25%">Venue</th>
<th class="col-md-4 text-center" width="20%">Date</th>
<th class="col-md-1 text-center" width="20%">Length</th>
<th class="col-md-1 text-center" width="10%">View</th>
</tr>
</thead>
<tbody>
<?php
$url = getUrlForMethod("Appointments", $_SESSION["Username"]);
$response = callGetAPI($url);
$decoded = json_decode($response);
foreach($decoded->AppointmentList as $d)
{
?>
<tr>
<td width="25%"><?php echo $d->AppointmentList->MeetingName; ?></td>
<td width="25%"><?php echo $d->AppointmentList->Venue; ?></td>
<td width="20%"><?php echo $d->AppointmentList->DateTimeFrom; ?></td>
<td width="20%"><?php echo $d->AppointmentList->Length; ?></td>
<td width="10%"><input type="checkbox" name="view" value="<?php echo $d->AppointmentList->MeetingId; ?>" onclick="<?php $_SESSION["meetingId"]=$d->AppointmentList->MeetingId;?>; Javascript:window.location.href='showmeeting.php'"></td>
</tr>
<?php
}
?>
</tbody>
</table>
Я не могу использовать форму здесь, хотя (часть спецификаций).
Проблема в том, что независимо от того, какой флажок установлен, это только последний из списка, который когда-либо отображается. Возможно ли установить переменную сеанса в качестве значения для установленного флажка, а затем перенаправить, но без формы?
Комментарии:
1. Вероятно, здесь проблема с html … у каждого флажка есть уникальный идентификатор? если нет — тогда ваш браузер просто предоставит значение последнего. Возможно, вам потребуется изменить свой код, чтобы у каждого флажка был уникальный идентификатор (а не просто уникальное значение)
2. У вас проблема в вашей логике! вы просто не можете использовать
onclick="<?php $_SESSION["meetingId"]=$d->AppointmentList->MeetingId;?>;
и ожидать, что сеанс будет установлен на стороне сервера при нажатии на флажок на стороне клиента! Я не уверен, что вы хотите сделать, или если использоватьsession
для того, что вы хотите сделать, это лучшая практика или нет. но если вы действительно хотите использовать, вы можете использоватьajax
вonclick
событии и отправитьID
вserver-side script
и установить сеанс в этом скрипте, тогда результат ajax вернется, перенаправьте страницу.3. @TarynEast — все идентификаторы уникальны. @EhsanT — Я бы подумал, что этот код ввел бы значение при создании флажка
Ответ №1:
Не совсем уверен, что это действительно то, что вы хотите, но если я буду точно следовать описанию в 1-м абзаце вашего вопроса, вы могли бы просто добавить MeetingId
в качестве параметра запроса к URL, на который вы перенаправляете.
Затем ваш something.php
скрипт должен использовать этот параметр (из $_GET['meetingid']
, а не из некоторых $_SESSION
данных) для создания желаемой страницы, которая заменяет текущую, как вы просили.
Таким образом, это может выглядеть следующим образом:
<table width="90%">
<thead>
<tr>
<th class="col-md-4 text-center" width="25%">Title</th>
<th class="col-md-2 text-center" width="25%">Venue</th>
<th class="col-md-4 text-center" width="20%">Date</th>
<th class="col-md-1 text-center" width="20%">Length</th>
<th class="col-md-1 text-center" width="10%">View</th>
</tr>
</thead>
<tbody>
<?php
$url = getUrlForMethod("Appointments", $_SESSION["Username"]);
$response = callGetAPI($url);
$decoded = json_decode($response);
foreach($decoded->AppointmentList as $d) {
?>
<tr>
<td width="25%"><?php echo $d->AppointmentList->MeetingName; ?></td>
<td width="25%"><?php echo $d->AppointmentList->Venue; ?></td>
<td width="20%"><?php echo $d->AppointmentList->DateTimeFrom; ?></td>
<td width="20%"><?php echo $d->AppointmentList->Length; ?></td>
<td width="10%">
<input type="checkbox" onclick=
"javascript: window.location.href = 'showmeeting.php?meetingid='
'<?php echo $d->AppointmentList->MeetingId; ?>'">
</td>
</tr>
<?php
}
?>
</tbody>
</table>
Вы заметите, что я удалил оба name
и value
атрибуты <input>
, поскольку они здесь бесполезны.
Кстати, я немного удивлен всем этим $d->AppointmentList->...
: написано так, это означает, что ваш $decoded
ответ имеет AppointmentList
свойство, содержащее список объектов, которые сами обладают AppointmentList
свойством… Вы уверены в этом?