Если бы у меня было что-то вроде этого:
?FormSub=Submit&qty=1&partno=ipod¬es=apple&unitprice=102.99&rowid=1&qty=2&partno=Ear+Buds¬es=Headphones&unitprice=45.99&rowid=2
Возможно ли выполнить цикл через GET, чтобы возвращать результаты в таблицу HTML, а также добавлять в таблицу SQL?
Или мне нужно добавить rowid к концу каждого $_GET
(т.е. qty
1
=1&partno
1
=ipod
…)?
Спасибо, что посмотрели.
Однако вы можете прокручивать $_GET
. Это всего лишь массив:
foreach ($_GET as $key => $value) { }
Когда вы переходите к своим SQL-запросам, не забудьте очистить все ваши входы. Аналогично для отображения значений на странице. Используйте htmlentities
для дезинфекции для отображения HTML. Предполагая, что ваша база данных – это MySQL, используйте mysql_real_escape_string
для SQL.
$ _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>"; }
надеюсь это поможет.
осторожно! кто-то может легко изменить это и отправить:
?FormSub=Submit&qty=1&partno=ipod¬es=apple&unitprice=0.99&rowid=1&qty=2&partno=Ear+Buds¬es=Headphones&unitprice=0.05&rowid=2
примечание: «unitprice» был 102.99 и 45.99, но были изменены на 0.99 и 0.05, я предполагаю, что они продаются сейчас по отличной цене!
См. FAQ Как создать массивы в HTML <form>
?
Поэтому в вашем случае запрос:
?FormSub=Submit&qty[]=1&partno[]=ipod¬es[]=apple&unitprice[]=102.99&rowid[]=1&qty[]=2&partno[]=Ear+Buds¬es[]=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.