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 :: Вопрос по функции из курса Специалиста

 PHP.SU

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


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

> Без описания
arimanecro
Отправлено: 30 Апреля, 2015 - 11:19:00
Post Id



Частый гость


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


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




Всё никак не могу понять в чем дело...

Функция заключается в том, чтобы сделать выборку как из БД, так и из файла.

Вот функция, перепроверил ее раза 4, все точь-в-точь как у препода:

PHP:
скопировать код в буфер обмена
  1.  
  2. function getorders() {
  3.         global $connection;
  4.         if(!is_file('ORDERS_LOG.txt'))
  5.         return false;
  6.         $orders = file('ORDERS_LOG.txt');
  7.         $allorders = array();
  8.         foreach($orders as $order) {
  9.                 list($oid, $name, $email, $address, $phone, $time) = explode('|', $order);
  10.                 $orderinfo = array();
  11.                 $orderinfo['oid'] = $oid;
  12.                 $orderinfo['name'] = $name;
  13.                 $orderinfo['email'] = $email;
  14.                 $orderinfo['address'] = $address;
  15.                 $orderinfo['phone'] = $phone;
  16.                 $orderinfo['time'] = $time;
  17.                 $sql = "SELECT t_name, size, qua, price FROM z_orders WHERE order_id = '$oid'";
  18.                 if(!$result = mysqli_query($connection, $sql))
  19.                 return false;
  20.                 $items = mysqli_fetch_assoc($result);
  21.                 mysqli_free_result($result);
  22.                 $orderinfo['goods'] = $items;
  23.                 $allorders[] = $orderinfo;
  24.         }
  25.         return $allorders;
  26. }
  27.  


Проблема заключается в следующем. У него каким-то образом, при итерации цикла, при выборке, в $orderinfo['goods'] заносятся все записи с одинаковым order_id, у меня только одна, что и логично.

Вот мои 2 записи с одинаковым order_id:


Нажмите для увеличения


вот, что возвращает ф-ия:

PHP:
скопировать код в буфер обмена
  1.  
  2. array (size=1)
  3.   0 =>
  4.     array (size=7)
  5.       'oid' => string '5541da886fe2c' (length=13)
  6.       'name' => string 'Serghey' (length=7)
  7.       'email' => string 'arimanecro@gmail.com' (length=20)
  8.       'address' => string 'str. B. Bodoni 57, ap.47' (length=24)
  9.       'phone' => string '2122441445' (length=10)
  10.       'time' => string '1430379219
  11. ' (length=12)
  12.       'goods' =>
  13.         array (size=4)
  14.           't_name' => string 't-shirt №2' (length=12)
  15.           'size' => string 'XL' (length=2)
  16.           'qua' => string '2' (length=1)
  17.           'price' => string '3.00' (length=4)
  18.  


а должно быть:

PHP:
скопировать код в буфер обмена
  1.  
  2. array (size=1)
  3.   0 =>
  4.     array (size=7)
  5.       'oid' => string '5541da886fe2c' (length=13)
  6.       'name' => string 'Serghey' (length=7)
  7.       'email' => string 'arimanecro@gmail.com' (length=20)
  8.       'address' => string 'str. B. Bodoni 57, ap.47' (length=24)
  9.       'phone' => string '2122441445' (length=10)
  10.       'time' => string '1430379219
  11. ' (length=12)
  12.       'goods' => array
  13. [0] => array
  14.         array (size=4)
  15.           't_name' => string 't-shirt №2' (length=12)
  16.           'size' => string 'XL' (length=2)
  17.           'qua' => string '2' (length=1)
  18.           'price' => string '3.00' (length=4)
  19.  
  20. [1] => array
  21.        
  22.           't_name' => string 't-shirt №3' (length=12)
  23.           'size' => string 'XL' (length=2)
  24.           'qua' => string '3' (length=1)
  25.           'price' => string '3.00' (length=4)
  26.  
  27.  
 
 Top
esterio
Отправлено: 30 Апреля, 2015 - 11:53:11
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $sql = "SELECT t_name, size, qua, price FROM z_orders WHERE order_id = '$oid'";
  3. if(!$result = mysqli_query($connection, $sql))
  4. {
  5.         return false;
  6. }
  7.  
  8. $orderinfo['goods'] = array();
  9. while ($items = mysqli_fetch_assoc($result))
  10. {
  11.         $orderinfo['goods'][] = $items;
  12. }
 
 Top
DeepVarvar Супермодератор
Отправлено: 30 Апреля, 2015 - 11:54:12
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




arimanecro пишет:
global $connection;

arimanecro пишет:
explode('|', $order);

arimanecro пишет:
order_id = '$oid'

arimanecro пишет:
if(!$result = mysqli_query($connection, $sql))
return false;

arimanecro пишет:
$orderinfo['goods'] = $items;
$allorders[] = $orderinfo;

arimanecro пишет:
из курса Специалиста

arimanecro пишет:
курса Специалиста

arimanecro пишет:
Специалиста

arimanecro пишет:
Специалиста

arimanecro пишет:
Специалиста

Специалиста?!!!!!!!
 
 Top
esterio
Отправлено: 30 Апреля, 2015 - 12:02:14
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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





DeepVarvar
Жопова Радость . скинь ссилку на свою статью и ТС сразу станет понятно к чему ты
 
 Top
DeepVarvar Супермодератор
Отправлено: 30 Апреля, 2015 - 12:04:28
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




esterio из указанных мной касяков этого "специалиста" в статье разбирается всего один из них. Смысл давать ссылку?
 
 Top
arimanecro
Отправлено: 30 Апреля, 2015 - 12:11:12
Post Id



Частый гость


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


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




esterio

я тоже думал про while, но его там нету и меня это удивило. Но больше всего удивило, что у него без whil'a работает как-то Не понял
Я подумал, может кто-то вырезал из видео кусок с while'om и смонтировал, но потом посмотрел в методичку и там все тоже самое, без whil'a А? Что?? Где???
 
 Top
esterio
Отправлено: 30 Апреля, 2015 - 12:16:07
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




Значит у Вас не специалист а урокы Попова в которых такое часто
 
 Top
arimanecro
Отправлено: 30 Апреля, 2015 - 12:20:09
Post Id



Частый гость


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


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




esterio

как это уроки не Специлаиста??? я про учебный центр говорю -- http://www[dot]specialist[dot]ru/
про И.Борисова
=====
сейчас проверил предложенный Вами вариант...не работает, выдает три точки:

array (size=1)
0 =>
array (size=7)
'oid' => string '5541da886fe2c' (length=13)
'name' => string 'Serghey' (length=7)
'email' => string 'arimanecro@gmail.com' (length=20)
'address' => string 'str. B. Bodoni 57, ap.47' (length=24)
'phone' => string '2122441445' (length=10)
'time' => string '1430379219
' (length=12)
'goods' =>
array (size=2)
0 =>
array (size=4)
...
1 =>
array (size=4)
...

(Отредактировано автором: 30 Апреля, 2015 - 12:23:07)

 
 Top
exlant
Отправлено: 30 Апреля, 2015 - 12:26:13
Post Id



Посетитель


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


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




$orderinfo = array(); в цикле Не понял Не понял
вы туда, как что то записали, так на следующей итерации все от туда и удалили!
Каждый раз создавая новый массив!
 
 Top
esterio
Отправлено: 30 Апреля, 2015 - 12:27:48
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




Ухх сложно будет но попитаюсь.
У вас установлен xdebug который перезаписивает стандартную функцию. В нем же есть настройка
Цитата:
xdebug.var_display_max_depth

... в даном случае оно урезало чтобы улучшить читаемость вывода
 
 Top
exlant
Отправлено: 30 Апреля, 2015 - 12:31:17
Post Id



Посетитель


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


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




а понял последнюю строчку не увидел!
 
 Top
arimanecro
Отправлено: 30 Апреля, 2015 - 12:36:54
Post Id



Частый гость


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


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




esterio
ок, и какое значение поставить, чтобы не урезало?
У меня в local value и master value стоит 3.
 
 Top
esterio
Отправлено: 30 Апреля, 2015 - 12:43:10
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




для вас подойдет даже такой вариант
 
 Top
arimanecro
Отправлено: 30 Апреля, 2015 - 12:54:46
Post Id



Частый гость


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


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




esterio

проверил, выдало все правильно:

PHP:
скопировать код в буфер обмена
  1. array (size=2)
  2.   0 =>
  3.     array (size=4)
  4.       't_name' => string 't-shirt two' (length=11)
  5.       'size' => string 'XXL' (length=3)
  6.       'qua' => string '3' (length=1)
  7.       'price' => string '3.00' (length=4)
  8.   1 =>
  9.     array (size=4)
  10.       't_name' => string 't-shirt three' (length=13)
  11.       'size' => string 'XL' (length=2)
  12.       'qua' => string '2' (length=1)
  13.       'price' => string '3.00' (length=4)


но при var_dump($orders = getorders()); выдает троеточие и в дальнейшем переборе через foreach, естественно, не отображает

PHP:
скопировать код в буфер обмена
  1. array (size=1)
  2.   0 =>
  3.     array (size=7)
  4.       'oid' => string '5541dad34b3e0' (length=13)
  5.       'name' => string 'Serghey' (length=7)
  6.       'email' => string 'arimanecro@gmail.com' (length=20)
  7.       'address' => string 'str. B. Bodoni 57, ap.47' (length=24)
  8.       'phone' => string '2122441445' (length=10)
  9.       'time' => string '1430386257
  10. ' (length=12)
  11.       'goods' =>
  12.         array (size=2)
  13.           0 =>
  14.             array (size=4)
  15.               ...
  16.           1 =>
  17.             array (size=4)
  18.               ...

(Отредактировано автором: 30 Апреля, 2015 - 13:06:01)

 
 Top
Panoptik
Отправлено: 30 Апреля, 2015 - 14:55:50
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




да кстати в данном случае лучше использовать print_r вместо var_dump. Будет меньше ненужных в данном случае данных (тип переменной и размер)


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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB