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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
мэлс
Отправлено: 13 Января, 2016 - 23:19:28
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




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



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




мэлс пишет:
как добавлять значение которое мы получаем
Добавлять куда?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
мэлс
Отправлено: 14 Января, 2016 - 09:42:17
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




Viper пишет:
мэлс пишет:
как добавлять значение которое мы получаем
Добавлять куда?

))) в массив, последним элементом
 
 Top
google_funny
Отправлено: 14 Января, 2016 - 10:36:04
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




мэлс пишет:
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

(Отредактировано автором: 14 Января, 2016 - 10:40:19)

 
 Top
мэлс
Отправлено: 14 Января, 2016 - 11:05:38
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




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[]= одно и тоже в данном случае.

В массив записывается только одно последнее значение. Как сделать, чтобы предыдущие значения сохранялись?
 
 Top
google_funny
Отправлено: 14 Января, 2016 - 11:48:30
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




$tmp[] = $_POST['id'];
$_POST = array_merge($tmp, $_POST);
 
 Top
Prizma
Отправлено: 14 Января, 2016 - 12:20:07
Post Id



Посетитель


Покинул форум
Сообщений всего: 463
Дата рег-ции: Июнь 2012  
Откуда: Санкт-Петербург


Помог: 5 раз(а)




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. }
 
My status
 Top
мэлс
Отправлено: 14 Января, 2016 - 12:35:42
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




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'];
}
 
 Top
Prizma
Отправлено: 14 Января, 2016 - 12:40:35
Post Id



Посетитель


Покинул форум
Сообщений всего: 463
Дата рег-ции: Июнь 2012  
Откуда: Санкт-Петербург


Помог: 5 раз(а)




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

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

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

Для того, чтобы собирать все значения, Вам нужно записывать их в файл или базу данных и потом оттуда доставать
 
My status
 Top
мэлс
Отправлено: 14 Января, 2016 - 12:56:28
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




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

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

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

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


Ну я в принципе так и думал))) Надежда умирает последней. Я пытался с сессией повозится - та же канитель. Хотя $_SESSION должно сохраняться, нет?
 
 Top
Sail
Отправлено: 14 Января, 2016 - 13:14:17
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




мэлс пишет:
В массив записывается только одно последнее значение. Как сделать, чтобы предыдущие значения сохранялись?

Для начала давайте определимся, что представляет из себя $_POST['id']?
Массив идентификаторов, или один идентификатор?
И действительно ли в html-форме передаваемое ею значение передаёт массив, а не одно значение?
 
 Top
мэлс
Отправлено: 14 Января, 2016 - 13:24:28
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




Sail пишет:
мэлс пишет:
В массив записывается только одно последнее значение. Как сделать, чтобы предыдущие значения сохранялись?

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

$_POST['id'] один из трех идентификаторов, в каждом 1 значение приходит.
 
 Top
мэлс
Отправлено: 14 Января, 2016 - 20:38:56
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




УРА! Я забыл открыть сессию в обработчике. И еще код изменил (подсмотрел).
И все заработало.

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

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

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

(Отредактировано автором: 14 Января, 2016 - 20:40:11)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB