Как реализовать передачу двух параметров ($id) на другую страницу?

Суть такова: есть страница (a.php) на которой выведены циклом (while) элементы из базы данных, напротив каждого элемента стоит checkbox. Нужно чтобы пользователь выбрал 2 элемента, отметив их в checkbox'е и нажал кнопку перейти, далее происходит переход на другую страницу (b.php), где принимаются два параметра $id и далее уже осуществляется выборка из базы используя эти параметры.

Буду очень благодарен за помощь

checkbox'ы рядом с элементами:
<input type='checkbox' id='prod' value='$id' >

кнопка подтверждения:
<input name="go" onclick="send();" type="submit" value="перейти">


Кстати если делаю простую проверку, возвращаемого значения вот так:

<input type='submit' onclick="check();" id='prod' value='$id' > 
  
	function check() {
	  var id = $("#prod").val();
		$.ajax({
            type: "POST",
            url: "m.php",
            data: {id: id},
            success: function (html) {
			$("#result").append(html);
				}
        }); 
}


m.php

$id = $_POST['id'];

echo "$id";


То всегда возвращается значение $id первого элемента, независимо от того куда кликнуть.
  • Вопрос задан
  • 5142 просмотра
Решения вопроса 1
WooDFox
@WooDFox
<input type='checkbox' name='prod[]' value='$id' >
<input type='checkbox' name='prod[]' value='$id' >


// Получаем массив элементов
$prod = $_POST['prod'];
// $prod - это массив со всеми отмеченными элементами
// Его можно обработать, например, так:
foreach ($prod as $item) {
     echo $item;
}


Если вам обязательно надо получить два поля, надо изменять обработку в JS

UPDATE: Source
<?php
			if (!empty($_POST['prod'])) {
				// Получаем массив элементов
				$prod = $_POST['prod'];
				// $prod - это массив со всеми отмеченными элементами
				// Его можно обработать, например, так:
				echo 'Recieved: '.implode(', ', $prod).'<br />';
				
				exit();
			}
?>

<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	</head>
	<body>
		<form method="post" action="" onsubmit="send(this); return false;">
			<input type='checkbox' name='prod[]' value='value1' /><br />
			<input type='checkbox' name='prod[]' value='value2' /><br />
			<input type='checkbox' name='prod[]' value='value3' /><br />
			<input type='checkbox' name='prod[]' value='value4' /><br />
			<br />
			<input type="submit" value="Отправить" />
		</form>
		
		<script src="http://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script>
		<script>
			function send (form) {
				var count = $(form).find(':checked').length;
				if (count == 2) {
					var prods = $(form).serialize();
					$.ajax({
						type: "POST",
						url: "toster.php",
						data: prods,
						success: function (html) { $("body").append(html); }
					}); 
				} else if (count > 2) {
					alert('Много выделено');
				} else {
					alert('Мало выделено');
				}
			}
		</script>
	</body>
</html>
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@m0rd
Ну так у Вас все checkbox'ы с одинаковым id = 'prod', в этом и проблема.
Сделайте форму, в нее поместите checkbox'ы с разными именами и потом уже обрабатывайте форму ajax'ом.
Ответ написан
Комментировать
@RageXL Автор вопроса
Меня в основном интересует реализация самого метода описанного в вопросе. Про ошибку - там не чекбоксы, там субмиты, все выводистя в цикле while, value в любом случае у всех разные.
Ответ написан
Комментировать
добавьте счётчик в цикле while, и подставляйте номер в input ,
чтоб получилось так:
<input type='checkbox' id='prod-1' value='$id' >
<input type='checkbox' id='prod-2' value='$id' >
<input type='checkbox' id='prod-3' value='$id' >
..и так далее
Ответ написан
arutyunov
@arutyunov
Mooza.ru — Делаем сайты
<input type='checkbox' name="ids_arr[]" value="1" />
<input type='checkbox' name="ids_arr[]" value="2" />
<input type='checkbox' name="ids_arr[]" value="3" />


Соответственно, дальше уже работаете с массивом, как вам надо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы