Я знаю, что делаю что-то не так, используя комбинацию isset(), $_POST и $_GET, но мне интересно, какой самый простой и безболезненный способ решить мою проблему.
Проблема возникает, когда я отправляю HTML-форму... Она перезагружает страницу с данными публикации. Я фиксирую отправку с помощью функции php isset(), обрабатываю данные $_POST, а затем запускаю window.location, чтобы обновить страницу с некоторыми данными $_GET.
Например...
//example.php
...
<form action="" method="post">
<input name="stage1name" type="text" class="textfield" size="22" value="<?php echo $ClaimRow['ClaimantName']; ?>">
<input name="VehicleEngine" type="text" class="textfield" size="20" value="<?php echo $vehiclerow['VehicleEngine']; ?>">
<input name="VehicleFuel" type="text" class="textfield" size="20" value="<?php echo $vehiclerow['VehicleFuel']; ?>">
<input name="submitInfo" type="submit" value="<?php echo $LANG_Claims_Change_Info; ?>" />
</form>
...
<?php
if (isset($_POST['submitInfo']))
{
$stage1name= mysqli_real_escape_string($db, $_POST['stage1name']);
$VehicleEngine= mysqli_real_escape_string($db, $_POST['VehicleEngine']);
$VehicleFuel= mysqli_real_escape_string($db, $_POST['VehicleFuel']);
mysqli_query($db, "DO SOME COOL SQL HERE");
//I've done what I need to do so lets reload the page with the updated data
echo "<script>window.location='example.php?vehicle=" . $vehicleID . "&claimTab=Personal'</script>";
}
?>
Как я уже говорил, этот метод прекрасно работает, однако пользователь получает эффект «двойной нагрузки» и вызывает очень эпилептические припадки.
Есть идеи, как лучше с этим бороться?
Спасибо
ИЗМЕНИТЬ – Дополнительный пример
Я понял, что этот пример может не иметь полного смысла, поэтому я собрал другой пример, который, надеюсь, будет.
...
<form action="" method="post">
<select name="addresstype[]" id="multiselectfrom" onchange='this.form.submit();' size="9" style="width:110px; text-align:center;">
<option style="<?php if ($AddType == 'Claimant') { echo'background-color:#9AD3F1 !important;'; } ?>" value="Claimant"><?php echo $LANG_Claims_Claimant; ?></option>
<option style="<?php if ($AddType == 'Vehicle') { echo'background-color:#9AD3F1 !important;'; } ?>" value="Vehicle"><?php echo $LANG_Claims_Vehicle; ?></option>
<option style="<?php if ($AddType == 'Repairer') { echo'background-color:#9AD3F1 !important;'; } ?>" value="Repairer"><?php echo $LANG_Claims_Repairer; ?></option>
<option style="<?php if ($AddType == 'Insurer') { echo'background-color:#9AD3F1 !important;'; } ?>" value="Insurer"><?php echo $LANG_Claims_Insurer; ?></option>
<option style="<?php if ($AddType == 'Fleet') { echo'background-color:#9AD3F1 !important;'; } ?>" value="Fleet"><?php echo $LANG_Claims_Fleet; ?></option>
</select>
</form>
...
<?php
if (isset($_POST['addresstype']))
{
foreach ($_POST['addresstype'] as $addresstype) {
$addresstype2 = $addresstype;
}
echo "<script>window.location='claims.php?claimID=" . $claim . "&claimTab=Addresses&AddressType=" . $addresstype2 . "'</script>";
}
?>
Предполагается, что в приведенном выше примере принимается результат формы и изменяется window.location в зависимости от результата формы. Это работает, однако при этом дважды загружает страницу.
header('Location: example.php?vehicle=' . $vehicleID . '&claimTab=Personal');
затемdie();
- person cmorrissey   schedule 08.02.2016example.php
, и я не видел никакого использования отправки значений параметра в виде строки запроса. - person Anant Kumar Singh   schedule 08.02.2016