Как отправить несколько значений в PHP, используя "onchange ="? - PullRequest
3 голосов
/ 24 июня 2011

У меня есть две категории переключателей: color1 и color2. Цвет 1 может быть либо черным, либо белым, а цвет 2 - красным или синим. Я просто хочу, чтобы пользователь мог выбрать только одну категорию или обе категории, а затем повторить выбор с помощью PHP.

Моя проблема в том, что он не будет отображать варианты из обеих категорий одновременно. Например, если я нажму кнопку «белый», а затем кнопку «синий», он будет отображать только «синий», а не «белый» и «синий».

UPDATE:

<?php
session_start();

if(isset($_GET['color1'])){
  $_SESSION['color1'] = $_GET['color1'];
}

if(isset($_GET['color2'])){
  $_SESSION['color2'] = $_GET['color2'];
}

echo $_SESSION['color1']; 
echo $_SESSION['color2'];
?>


select first color:<br/>
<input type="radio" name="color1" value="black" onchange="window.location.href='recom.php?color1='+this.value"> black<br />

<input type="radio" name="color1" value="white" onchange="window.location.href='recom.php?color1='+this.value">  white<br />

select second color:<br/>
<input type="radio" name="color2" value="red" onchange="window.location.href='recom.php?color2='+this.value"> red<br />

<input type="radio" name="color2" value="blue" onchange="window.location.href='recom.php?color2='+this.value">  blue

Ответы [ 5 ]

4 голосов
/ 24 июня 2011

Вам нужно отправить обе переменные, когда вы делаете запрос (как показано в ответе yes123 ).

Или вы можете использовать $_SESSION в своем PHP, чтобы сохранитьсостояние того, что было выбрано и не имеет.

Вы можете прочитать о сессиях здесь http://www.tizag.com/phpT/phpsessions.php

Сессия - это просто массив (я сохраняю его очень простым).Вы можете поместить некоторые значения в этот массив, и каждый раз, когда страница перезагружается, эти значения будут зависать - если вы не закроете окно браузера.

В вашем случае

session_start(); // Remember to have this on top of your php file before any echo or print or any other html is printed out.

if(isset($_GET['color1']){
  $_SESSION['color1'] = $_GET['color1'];
}

if(isset($_GET['color2']){
  $_SESSION['color2'] = $_GET['color2'];
}

echo $_SESSION['color1']; 
echo $_SESSION['color2'];

Я бы также предложил неиспользуя «красный», «синий» и т. д.

Дайте каждому цвету идентификатор - красный = 1, синий = 5 и т. д.

Тогда вы сделаете $_SESSION['color2'] = intval($_GET['color2']); Это означает, что вы храните свои цветакак числа, которые легко дезинфицировать с intval().Когда вам нужно отобразить, какой цвет был выбран, вы можете просто написать метод, который принимает число и возвращает строку с цветом.(простое заявление о переключении).Это помешает людям вводить ваш html с каким-то мусором.

function get_colour($i){
  switch(intval($i)){
    case 1:
      $colour = "blue";
      break;
    case 2:
      $colour = "red";
      break;
    default:
      $colour = "blue"; // default colour when people try to fiddle with injection
      break;
  }
  return $colour;
}
1 голос
/ 24 июня 2011

Вы можете поместить оба переключателя в форму, и в обоих событиях onchange, просто отправьте форму.

1 голос
/ 24 июня 2011
onchange=" window.location.href='recom.php?color1='+this.value+'
           &color2='+document.getElement[..]
         "

Также рассмотрите возможность использования jQuery

0 голосов
/ 30 июня 2011

попробуйте что-то вроде этого:

select first color:<br/>
<input type="radio" name="color1" value="black" onchange="window.location.href='<?php if(isset($_GET['color2'] echo"\'recom.php?color1=\'+this.value+\'&color2=".$_GET['color2'];else echo"\'recom.php\'+this.value";?>> black<br />
0 голосов
/ 24 июня 2011

Просто используйте класс ...

<input type="radio" name="color1" value="black"  class="myElementClass"> Black <br />
<input type="radio" name="color2" value="white"  class="myElementClass"> White <br />


Jquery {


    $(.myElementClass).change(function() {

    //do whatever i want
    });

}
...