Jump to content
  • 0

ссылка, которая меняет checked в радиокнопке


apexis
 Share

Question

Есть 2 ссылки на 1 страницу заказа. Каждая ссылка для заказа своего продукта (Паркес 7 и Паркес 77). На странице с формой заказа есть две радиокнопки для смены товара. По умолчанию стоит первый (Паркес 7). Мне нужно чтобы при переходе по ссылке для заказа Паркес 77 радиокнопка менялась с положения Паркес 7 на Паркес 77. Такое возможно?

Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

опять прописные истины придётся описывать...

если ссылка имеет вид на страницу заказа: page.php?article_name=Паркес7 ,

Тогда на странице заказа мы должны принять значение переменной. Данный метод передачи называется GET.


<?PHP
$article_name = $_GET[article_name];
?>

HTML предоставляет нам возможность делать активными, нужные нам Чекбоксы либо радио-кнопки, с помощью атрибута checked, этим и пользуемся...


<?PHP
if ($article_name == "Паркес7"){ //Если нам пришло Паркес 7, то:
$radio_button_1 = "checked='checked'";
}
if ($article_name == "Паркес77 "){ //Если нам пришло Паркес 77, то:
$radio_button_2 = "checked='checked'";
}

echo <<<HERE
// echo - функция вывода информации в документ. Я пользуюсь HERE(т.е. выводим информацию от сюда до HERE;),
// хотя видел как многие люди используют вместо этого обычные кавычки, и начинается... массовое
//экранирование других кавычек )))))))


<input type="radio" name="article_name" value="1" $radio_button_1 />
<input type="radio" name="article_name" value="2" $radio_button_2 />
HERE;


?>

Все предельно просто.. )))

Edited by Николя223
Link to comment
Share on other sites

  • 0

опять прописные истины придётся описывать...

если ссылка имеет вид на страницу заказа: page.php?article_name=Паркес7 ,

Тогда на странице заказа мы должны принять значение переменной. Данный метод передачи называется GET.


<?PHP
$article_name = $_GET[article_name];
?>

HTML предоставляет нам возможность делать активными, нужные нам Чекбоксы либо радио-кнопки, с помощью атрибута checked, этим и пользуемся...


<?PHP
if ($article_name == "Паркес7"){ //Если нам пришло Паркес 7, то:
$radio_button_1 = "checked='checked'";
}
if ($article_name == "Паркес77 "){ //Если нам пришло Паркес 77, то:
$radio_button_2 = "checked='checked'";
}

echo <<<HERE
// echo - функция вывода информации в документ. Я пользуюсь HERE(т.е. выводим информацию от сюда до HERE;),
// хотя видел как многие люди используют вместо этого обычные кавычки, и начинается... массовое
//экранирование других кавычек )))))))


<input type="radio" name="article_name" value="1" $radio_button_1 />
<input type="radio" name="article_name" value="2" $radio_button_2 />
HERE;


?>

Все предельно просто.. )))

что-то не работает. Все сделал по плану, но checked не хочет ставиться

  <?PHP
$parkes = $_GET[parkes];
?>
<?

error_reporting(0);
$errors = array();

if (@$_POST['submit']) {
$name = preg_replace ('/\s+/', ' ', $_POST['name']) ;
$name = trim($name) ;
if(!@$_POST['name'] || count(explode(' ', $name)) <3) {
$errors['name'] = 1;
}

if (!@$_POST['phone']) {
$errors['phone'] = 1;
}
if (!preg_match('/^([a-z0–9\+_\-]+)(\.[a-z0–9\+_\-]+)*@([a-z0–9\-]+\.)+[a-z]{2,6}$/ix', $_POST['email'])) {
$errors['email'] = 1;
}
if (!@$_POST['parkes']) {
$errors['parkes'] = 1;
}


}


if (!empty($errors) || @!$_POST['submit']) {

echo ((empty($errors)) ? '' : '<span id="frmError" class="errormessage">Заполните все поля</span><br /><br />') .

'<form action="#" method="post">';


echo '<div style="padding:0; ' . (($errors['name'])?'color:red':'').'">ФИО</div><input type="text"name="name" size="40"value="' . @$_POST['name'] . '"class="formfields" />';

echo' <div '.(($errors['phone'])?'style="color:red"':'').'>Телефон</div><input type="text" name="phone"size="30" value="'.@$_POST['phone'] . '"class="formfields "/>';

echo' <div '.(($errors['email'])?'style="color:red"':'').'>E-mail</div><input type="text" name="email"size="30" value="' . @$_POST['email'].'"class="formfields"/>';

echo' <div '.(($errors['quantity'])?'style="color:red"':'').'>Количество</div><input type="text" name="quantity" size="3" value="'. @$_POST['quantity'].'"class="formfields"/>';


if ($parkes == "parkes7"){ //Если нам пришло Паркес 7, то:
$radio_button_1 = "checked='checked'";
}
if ($parkes == "parkes77"){ //Если нам пришло Паркес 77, то:
$radio_button_2 = "checked='checked'";
}

echo '<div id="input_parkes"><input type="radio" name="parkes" value="1" $radio_button_1>Паркес 7</input><br /> <input type="radio" name="parkes" value="2" $radio_button_2>Паркес 77</input></div>';


echo '<div id="input_cargo"><input type="radio" name="cargo" value="1" checked>Новая почта</input><br /> <input type="radio" name="cargo" value="2" >Интайм</input></div>';

echo ' <input type="submit" value="Отправить" name="submit" class="sendbtn" id="submit_position"/>

</form></div>';

Если использовать here возникает ошибка "Parse error: syntax error, unexpected T_SL"

Edited by apexis
Link to comment
Share on other sites

  • 0

ну да, это моя ошибка, сразу не подсказал: в $_GET $_POST и т.д значения пишуться в кавычках ))

$parkes = $_GET['parkes']; так попробуйте

Не работает.

Ссылку проверил - zakaz_courier.php?parkes=parkes77

Link to comment
Share on other sites

  • 0

Нда, сегодня явно не мой день... ))) вот, проверил - переменные так и передавайте на латыне ))

if ( $parkes == "parkes7"){      //Если нам пришло Паркес 7, то:
$radio_button_1 = "checked='checked'";
}
if ( $parkes == "parkes77"){ //Если нам пришло Паркес 77, то:
$radio_button_2 = "checked='checked'";
}

Edited by Николя223
Link to comment
Share on other sites

  • 0

Нда, сегодня явно не мой день... ))) вот, проверил - переменные так и передавайте на латыне ))

if ( $parkes == "parkes7"){      //Если нам пришло Паркес 7, то:
$radio_button_1 = "checked='checked'";
}
if ( $parkes == "parkes77"){ //Если нам пришло Паркес 77, то:
$radio_button_2 = "checked='checked'";
}

А что изменилось?

Link to comment
Share on other sites

  • 0

ну, во-первых вот так не правильно писать:


<input type="radio" name="parkes" value="1" $radio_button_1>Паркес 7</input>
<br />
<input type="radio" name="parkes" value="2" $radio_button_2>Паркес 77</input>

1) радио не закрывается инпутом, его обычно в лейбл оборачивают

2) в вэлью пишется то значение, которое вы хотите передать, а вы его передаете между инпутами...

3) что там вообще забыли переменные? и почему они ни эхом не выведены, ни конкатенацией не пристыкованны?

4) зачем везде в коде вы перед переменной пишете собаку? на сколько я знаю, в некторых случаях это делают для подавления вывода ошибок..., так у вас дебаггинг тогда не будет алле...

Link to comment
Share on other sites

  • 0

Написал вместо $radio_button_1 -'.$radio_button_1.' и все заработало.

Как по мне дело вкуса - использовать label или нет. Убрал </input> - тоже самое. Похоже этот тег не учитывается. Насчет дебаггинга не понял. Сколько людей ни нанимал, все делали формы используя собаку.

Спасибо за совет

Обнаружил еще одну ошибку. Когда отправляешь форму и нажимаешь назад(javascript:history.back();"). Кнопка отправить не возвращается в исходное положение - так и остается нажатой.

Вот стиль кнопки, может в нем нужно что-то подкрутить


.sendbtn {
font:italic 12px Trebuchet MS;
font-weight:bold;
height:31px;
padding:0 10px;
color:#565e62;
border:3px solid gray;
outline:none;
background: -moz-linear-gradient(top, #fff, #C0C0C0);
background: -o-linear-gradient(top, #fff, #C0C0C0);
background: -webkit-linear-gradient(top, #fff, #C0C0C0);
text-shadow: 0 1px white;
border-radius: 4px;
letter-spacing:0.8px;
margin-top:15px


}

input.sendbtn:hover {
color: #6B8E23;
}

input.sendbtn:focus {
background: -moz-linear-gradient(top, #C0C0C0, #fff);
background: -o-linear-gradient(top, #fff, #C0C0C0);
background: -webkit-linear-gradient(top, #C0C0C0, #fff);
}

Link to comment
Share on other sites

  • 0

rus, только сейчас зашёл на сайт... а можете мне теперь пояснить... (я в сонном состоянии предыдущие посты отписывал, много проглядел)))

Почему в данном случае потребовалось ставить переменные через конкатенацию?

Я достаточно много скриптов написал для двух сайтов (для одного движок с нуля сделал, торможение джумлы не нравилось)))

Ну вывод информации , в основном,делал через echo <<<HERE(кода очень много выводил) ну и местами с использованием конкатенации где требовалось.

Если не ошибаюсь, конкатенация нужна только если выводится информация через кавычки? )))

P.S:или может быть, я пока не настолько знаток PHP чтоб с легкостью в чужом коде ошибки находить )))

А всё, я понял . можно не отвечать ))

Edited by Николя223
Link to comment
Share on other sites

  • 0

хотя... скорее всего это от версии PHP зависит:

У меня на сайте и такой случай проходит, всё работает)))

print "<dl id='dl$preperid' name='dl$preperid'>";

Проблему со стилями решил. Изменил :focus на :active

Рад за вас)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy