просмотреть результаты $ _GET - PullRequest
13 голосов
/ 03 августа 2009

Если бы у меня было что-то вроде этого:

?FormSub=Submit&qty=1&partno=ipod&notes=apple&unitprice=102.99&rowid=1&qty=2&partno=Ear+Buds&notes=Headphones&unitprice=45.99&rowid=2

Можно ли выполнить цикл по GET, чтобы вернуть результаты в таблицу HTML, а также добавить в таблицу SQL?

Или мне нужно будет добавить rowid к концу каждого $_GET (т.е. qty1=1&partno1=ipod .. .)

Спасибо за внимание.

Ответы [ 4 ]

42 голосов
/ 03 августа 2009

Вы можете пройти через $_GET, хотя. Это просто массив:

foreach ($_GET as $key => $value) { }

Когда вы будете выполнять SQL-запросы, не забудьте санировать все ваши входные данные. Аналогично для отображения значений на странице. Используйте htmlentities для очистки для отображения HTML. Предполагая, что ваша база данных - MySQL, используйте mysql_real_escape_string для SQL.

7 голосов
/ 03 августа 2009

$ _ GET - это массив .. так что вы можете просто перебрать его, используя foreach

foreach($_GET as $query_string_variable => $value) {
   echo "$query_string_variable  = $value <Br />";
}

Вы также можете сделать extract($_GET), чтобы сделать их все переменными ... но я не буду этого предлагать.

Если вы хотите сохранить его в БД, вам следует рассмотреть mysql_real_escape_string($value).

Чтобы напечатать таблицу HTML .. Вы хотите что-то вроде этого?

$count = count($_GET);
if($count > 0) {
  echo "<table>";
    foreach($_GET as $query_string_variable => $value) {
       echo "<tr><td>$query_string_variable</td><td>$value</td></tr>"
    }
  echo "</table>";
}

надеюсь, это поможет.

6 голосов
/ 03 августа 2009

остерегайтесь! кто-то может легко изменить это и отправить:

?FormSub=Submit&qty=1&partno=ipod&notes=apple&unitprice=0.99&rowid=1&qty=2&partno=Ear+Buds&notes=Headphones&unitprice=0.05&rowid=2

примечание:"цена за единицу товара" составляла 102,99 и 45,99, но была изменена на 0,99 и 0,05, я думаю, они сейчас продаются по отличной цене!

1 голос
/ 03 августа 2009

См. FAQ Как создать массивы в HTML <form>?

Так что в вашем случае запрос:

?FormSub=Submit&qty[]=1&partno[]=ipod&notes[]=apple&unitprice[]=102.99&rowid[]=1&qty[]=2&partno[]=Ear+Buds&notes[]=Headphones&unitprice[]=45.99&rowid[]=2

создаст массив вида:

array(
    'FormSub' => 'Submit',
    'qty' => array(
        0 => '1',
        1 => '2'
    ),
    'partno' => array(
        0 => 'ipod',
        1 => 'Ear Buds'
    ),
    'notes' => array(
        0 => 'apple',
        1 => 'Headphones'
    ),
    'unitprice' => array(
        0 => '102.99',
        1 => '45.99'
    ),
    'rowid' => array(
        0 => '1',
        1 => '2'
    )
)

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

Дополнительно GET предназначен для использования только для извлечения данных :

В частности, было установлено, что методы GET и HEAD НЕ ДОЛЖНЫ иметь значение действия, отличного от извлечения.

Для запросов с побочными эффектами (изменение данных на сервере) следует использовать POST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...