Получить данные из URL-адреса, если несколько существует с одним и тем же именем
У меня есть форма с флажками, которая публикует данные в URL для следующей страницы. Я знаю, что это небезопасно и не используется ни в одном проекте. Это только для целей обучения.
Я выдвигаю задачи, которые извлекаются из моей базы данных.
Мой URL выглядит так:
submitted.php?id=?12345
В зависимости от того, сколько из флажков задач я установил, мне нужно, чтобы идентификаторы были перенесены на следующую страницу.
вот моя форма:
<form action="Billing.php?id=<?PHP echo $customerid;?>" method="post">
<?php $query = "SELECT * FROM Service";
$result = mysqli_query($con,$query);
while ($line = mysqli_fetch_array($result, MYSQL_ASSOC)) { ?>
<input type="checkbox" name="service" value="<?php echo $line['Service_ID']?>"><?php echo $line['Service_Type']?> <br> <?php } ?>
<input type="submit" name="next" value="Check Out" style="bottom:3%;Right:3%;position:absolute;background-color:#B2B2B2;font-weight:bold;border-style:double;border-color:black;float:right;" >
</form>
</div><!--serviclist-->
<div id="cust">
<h3>Customer Information</h3>
<table style="left: 7%;right: 5%;top: 20%;position: absolute;">
<tr>
<td>Name:<input class="rightText" name="customername" type="text" value="<?PHP echo $name; ?> "></td>
</tr>
<tr>
<td>Make: <input name="make" type="text" value="<?PHP echo $make; ?>"></td><td>Model: <input class="rightText" name="model" type="text" value="<?PHP echo $model; ?>"></td>
</tr>
<tr>
<td>Color: <input name="color" type="text" value="<?PHP echo $color; ?>" ></td><td>VIN: <br><input class="rightText" name="VIN" type="text" value="<?PHP echo $vin; ?>" ></td>
</tr>
</table>
в основном я пытаюсь заставить его опубликовать мой идентификатор клиента и мои услуги, которые были проверены на следующей странице.
3 ответа
Я не знаю, как вам удалось завершить эту строку запроса, но давайте предположим, что у вас есть:
index.php?asd=1&asd=2&asd=3
Вы можете поймать его через
var_dump($_SERVER['QUERY_STRING']);
Выходstring 'asd=1&asd=2&asd=3' (length=17)
Затем разделить его на &
ограничитель
var_dump(explode('&', $_SERVER['QUERY_STRING']));
Выход:
array (size=3)
0 => string 'asd=1' (length=5)
1 => string 'asd=2' (length=5)
2 => string 'asd=3' (length=5)
Затем разделите на =, чтобы найти пары ключ => значение.
Однако такой подход я считаю очень непривлекательным и неэффективным.
Если у вас есть контроль над именами флажков, создайте строку запроса, например:
index.php?asd[]=1&asd[]=2&asd[]=3
затем
var_dump($_GET['asd']);
вернет массив
array (size=3)
0 => string '1' (length=1)
1 => string '2' (length=1)
2 => string '3' (length=1)
Вы неправильно написали свой URL, он должен выглядеть так:
submitted.php?taskid[]=1&taskid[]=7
Поставить флажок в качестве массива, например
input type="checkbox" name="taskid[]" value="любое значение, которое вам нравится"
и в php на стороне сервера используйте FOR-EACH LOOP для получения всех задач
<?php
$tasks = $_GET['taskid'];
foreach($tasks as $values)
{
// do your operations here
echo $values;
}