Перебирать результаты $_GET

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

?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 (т.е. qty 1 =1&partno 1 =ipod...)?

Спасибо, что посмотрели.

Ответ 1

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

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

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

Ответ 2

$_ GET - это массив, поэтому вы можете просто перебирать его с помощью foreach

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

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

Если вы хотите сохранить его в db, вы должны рассмотреть 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>";
}

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

Ответ 3

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

?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

примечание: "unitprice" был 102.99 и 45.99, но были изменены на 0.99 и 0.05, я думаю, они продаются сейчас по отличной цене!

Ответ 4

См. 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.