Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Запись в массив значения из POST
Форумы портала PHP.SU » » Вопросы новичков » Запись в массив значения из POST

Страниц (1): [1]
 

1. мэлс - 13 Января, 2016 - 23:19:28 - перейти к сообщению
Доброй ночи.
Подскажите, пожалуйста, как добавлять значение которое мы получаем из массива POST?
Мне кроме этого на ум ничего не пришло...
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. if($_POST['id']){
  5.  
  6. $arr[]=$_POST['id'];
  7.  
  8. }
  9.  
  10.  
2. Viper - 14 Января, 2016 - 00:20:41 - перейти к сообщению
мэлс пишет:
как добавлять значение которое мы получаем
Добавлять куда?
3. мэлс - 14 Января, 2016 - 09:42:17 - перейти к сообщению
Viper пишет:
мэлс пишет:
как добавлять значение которое мы получаем
Добавлять куда?

))) в массив, последним элементом
4. google_funny - 14 Января, 2016 - 10:36:04 - перейти к сообщению
мэлс пишет:
Viper пишет:
мэлс пишет:
как добавлять значение которое мы получаем
Добавлять куда?

))) в массив, последним элементом


К примеру, есть первоначальный массив данных. $MAIN_DATA; В общем случае примерно так..

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. if (isset($_POST['id']) && is_array($MAIN_DATA) &&  count($MAIN_DATA)) {
  4. array_push($MAIN_DATA, $_POST['id']);
  5. }
  6. ?>
  7.  


Почитайте.. http://php.net/manual/ru/function.array-push.php
5. мэлс - 14 Января, 2016 - 11:05:38 - перейти к сообщению
google_funny пишет:
мэлс пишет:
Viper пишет:
мэлс пишет:
как добавлять значение которое мы получаем
Добавлять куда?

))) в массив, последним элементом


К примеру, есть первоначальный массив данных. $MAIN_DATA; В общем случае примерно так..

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. if (isset($_POST['id']) && is_array($MAIN_DATA) &&  count($MAIN_DATA)) {
  4. array_push($MAIN_DATA, $_POST['id']);
  5. }
  6. ?>
  7.  


Почитайте.. http://php.net/manual/ru/function.array-push.php


Это вроде бы тоже самое, что у меня в первом посте.
array_push() и array[]= одно и тоже в данном случае.

В массив записывается только одно последнее значение. Как сделать, чтобы предыдущие значения сохранялись?
6. google_funny - 14 Января, 2016 - 11:48:30 - перейти к сообщению
$tmp[] = $_POST['id'];
$_POST = array_merge($tmp, $_POST);
7. Prizma - 14 Января, 2016 - 12:20:07 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $arr = [1,25,12,48];
  2. if(isset($_POST['id']) || die('Значение не передано')) {
  3.    $arr[] = $_POST['id'];
  4. }

В первом примере у вас всё было верно, так и надо добавлять. Только проверку лучше ставить на существование, потому что если допустим id будет равно 0, тогда условие не пройдет.
Так же рекомендую проверять post-данные, если это число int то как то так:
PHP:
скопировать код в буфер обмена
  1. if((isset($_POST['id']) && preg_match('#^[0-9]{1,10}$#', $_POST['id']) || die('Передано не корректное значение')) || die('Значение не передано')) {
  2.    $arr[] = $_POST['id'];
  3. }
8. мэлс - 14 Января, 2016 - 12:35:42 - перейти к сообщению
Prizma пишет:
PHP:
скопировать код в буфер обмена
  1. $arr = [1,25,12,48];
  2. if(isset($_POST['id']) || die('Значение не передано')) {
  3.    $arr[] = $_POST['id'];
  4. }

В первом примере у вас всё было верно, так и надо добавлять. Только проверку лучше ставить на существование, потому что если допустим id будет равно 0, тогда условие не пройдет.
Так же рекомендую проверять post-данные, если это число int то как то так:
PHP:
скопировать код в буфер обмена
  1. if((isset($_POST['id']) && preg_match('#^[0-9]{1,10}$#', $_POST['id']) || die('Передано не корректное значение')) || die('Значение не передано')) {
  2.    $arr[] = $_POST['id'];
  3. }


Проверки это хорошо, конечно, но у меня просто меняется значение с каждым новым POST, хоть убейте.

$arr = [1,25,12,48, вот сюда добавляет, а потом только меняет];
if(isset($_POST['id']) || die('Значение не передано')) {
$arr[] = $_POST['id'];
}
9. Prizma - 14 Января, 2016 - 12:40:35 - перейти к сообщению
мэлс пишет:
Проверки это хорошо, конечно, но у меня просто меняется значение с каждым новым POST, хоть убейте.

$arr = [1,25,12,48, вот сюда добавляет, а потом только меняет];
if(isset($_POST['id']) || die('Значение не передано')) {
$arr[] = $_POST['id'];
}

ахах) ну конечно, же... потому, что каждый новый раз, при отправке POST данных у вас запускается новый скрипт, который не может иметь прямого доступа к данным из уже отработавшего скрипта.

Для того, чтобы собирать все значения, Вам нужно записывать их в файл или базу данных и потом оттуда доставать
10. мэлс - 14 Января, 2016 - 12:56:28 - перейти к сообщению
Prizma пишет:
мэлс пишет:
Проверки это хорошо, конечно, но у меня просто меняется значение с каждым новым POST, хоть убейте.

$arr = [1,25,12,48, вот сюда добавляет, а потом только меняет];
if(isset($_POST['id']) || die('Значение не передано')) {
$arr[] = $_POST['id'];
}

ахах) ну конечно, же... потому, что каждый новый раз, при отправке POST данных у вас запускается новый скрипт, который не может иметь прямого доступа к данным из уже отработавшего скрипта.

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


Ну я в принципе так и думал))) Надежда умирает последней. Я пытался с сессией повозится - та же канитель. Хотя $_SESSION должно сохраняться, нет?
11. Sail - 14 Января, 2016 - 13:14:17 - перейти к сообщению
мэлс пишет:
В массив записывается только одно последнее значение. Как сделать, чтобы предыдущие значения сохранялись?

Для начала давайте определимся, что представляет из себя $_POST['id']?
Массив идентификаторов, или один идентификатор?
И действительно ли в html-форме передаваемое ею значение передаёт массив, а не одно значение?
12. мэлс - 14 Января, 2016 - 13:24:28 - перейти к сообщению
Sail пишет:
мэлс пишет:
В массив записывается только одно последнее значение. Как сделать, чтобы предыдущие значения сохранялись?

Для начала давайте определимся, что представляет из себя $_POST['id']?
Массив идентификаторов, или один идентификатор?
И действительно ли в html-форме передаваемое ею значение передаёт массив, а не одно значение?

$_POST['id'] один из трех идентификаторов, в каждом 1 значение приходит.
13. мэлс - 14 Января, 2016 - 20:38:56 - перейти к сообщению
УРА! Я забыл открыть сессию в обработчике. И еще код изменил (подсмотрел).
И все заработало.

PHP:
скопировать код в буфер обмена
  1.  
  2. if (!isset($_SESSION['id'])) {
  3.     $_SESSION['id'] = array();
  4.    
  5. }
  6. array_push($_SESSION['id'], $id);
  7.  

Решение очень простым оказалось. Инициализация происходит 1 раз и потом не затирает массив.
Работает как надо. Записывает значение каждый раз последним элементом сохраняя предыдущие.

Всем спасибо!

 

Powered by ExBB FM 1.0 RC1