[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: заполнить массив
Rachel
я хочу отфильтровать полученные с формы данные , затем записать их в базу.
я создаю новый массив, его заполняю элементами массива $_POST, обрабатываю в цикле.
Что в результате?
Код
$controls = array( );
$controls[] = $_POST ;
foreach ($controls as $v){
foreach ($v as $key => $val){
$val = mysql_escape_string($val);
$val = addslashes($val);
$val = strip_tags($val);
}
}


Код
print_r ($controls) //выводит следующее:

Array
(
[0] => Array
(
[index] =>
[name] => Саша
[lastname] => Иванов
[patronymic] => Викторович
[add] => Добавить
)

)
я не могу обратиться к элементу массива, например так
Код
print $controls['name'];

выводит
Undefined index: name



Спустя 57 минут, 44 секунды (4.06.2008 - 09:59) n1tr0k1ll3r написал(а):
Зачем массив $controls создавать?? Делайте сразу проход по $_POST
Если все-таки хотите сделать так, то уберите [] после controls.
А вообще - почитайте Дока по Foreach и уделите внимание тому, что создается копия массива! Да и написать можно по-другому

Например:
Код
$controls = array();
foreach ($_POST as $k => $v)
{
  //издеваемся над $v
  $v = my_super_puper_clean_function($v);
  //присваиваем итоговое значение:
  $controls[$k] = $v;
}

Спустя 24 минуты, 42 секунды (4.06.2008 - 10:24) Rachel написал(а):
Вы мне очень помогли,спасибо!

Спустя 4 часа, 50 минут, 12 секунд (4.06.2008 - 15:14) Rachel написал(а):
почему у меня не получается сделать это в функции?

Код
function security(){
$controls = array();
foreach ($_POST as $k => $v){
$v = mysql_escape_string($v);
$v = addslashes($v);
$v = strip_tags($v);
$controls[$k] = $v;
}
return $controls;
}
security();

Спустя 4 минуты, 50 секунд (4.06.2008 - 15:19) n1tr0k1ll3r написал(а):
Цитата(Rachel @ 4.6.2008, 16:14) [snapback]39907[/snapback]
почему у меня не получается сделать это в функции?

Код
function security(){
$controls = array();
foreach ($_POST as $k => $v){
$v = mysql_escape_string($v);
$v = addslashes($v);
$v = strip_tags($v);
$controls[$k] = $v;
}
return $controls;
}
security();

Что именно не получается? Что выводится?
вы же должны присваивать результат какой-то переменной, например:
Код
$secure = security();

Спустя 45 минут, 7 секунд (4.06.2008 - 16:04) Rachel написал(а):
я хочу использовать элементы массива $controls.т.е. функция фильтрует данные, полученные с формы и записывает в базу, например так

$sql = "INSERT INTO `isers` (name,lastname,patronymic)
VALUES ('{$controls['name']}','{$controls['lastname']}','{$controls['patronymic']}')";
mysql_query($sql);
ругаетя на переменную
Undefined variable: controls in(в строке запроса)

Спустя 16 часов, 22 минуты, 37 секунд (5.06.2008 - 08:27) n1tr0k1ll3r написал(а):
Цитата(Rachel @ 4.6.2008, 17:04) [snapback]39913[/snapback]
я хочу использовать элементы массива $controls.т.е. функция фильтрует данные, полученные с формы и записывает в базу, например так

$sql = "INSERT INTO `isers` (name,lastname,patronymic)
VALUES ('{$controls['name']}','{$controls['lastname']}','{$controls['patronymic']}')";
mysql_query($sql);
ругаетя на переменную
Undefined variable: controls in(в строке запроса)

Почитайте про области видимости. В вашем примере $controls существует только в пределах функции security().
просто добавьте тогда строку:
Код
$controls = $security();
перед
Код
$sql = ...

Не очень здорово, когда имена совпадают, но все же...

Спустя 12 часов, 5 минут, 41 секунда (5.06.2008 - 20:33) Alchemist написал(а):
Цитата(n1tr0k1ll3r @ 5.6.2008, 8:27) [snapback]39968[/snapback]
просто добавьте тогда строку:
Код
$controls = $security();
перед
Код
$sql = ...

Не очень здорово, когда имена совпадают, но все же...


Только бакс перед функцией убрать надо:

Код
$controls = security();

Спустя 11 часов, 49 минут, 37 секунд (6.06.2008 - 08:22) n1tr0k1ll3r написал(а):
Цитата(Alchemist @ 5.6.2008, 21:33) [snapback]40030[/snapback]
Только бакс перед функцией убрать надо:

Код
$controls = security();

ну да smile.gif Поторопился я smile.gif


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.