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 :: Версия для печати :: Массивы И Foreach
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Массивы И Foreach

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

1. vasnihaev - 29 Июня, 2011 - 18:57:42 - перейти к сообщению
Здравствуйте! Помогите пожалуйста с кодом, уже делал всё что можно, но не работает. Этот код обрабатывает ajax-запрос в динамических селекторах .
Т.е. выбираем страну, во втором селекторе подгружаются регионы.
PHP:
скопировать код в буфер обмена
  1. <?
  2. $country_id = @intval($_GET['country_id']);
  3.  
  4. if (file_exists(dirname(__FILE__) . '/' . $country_id . '.txt')) {
  5.     $regions = array();
  6.     $regs = file(dirname(__FILE__) . '/' . $country_id . '.txt');
  7.     $i=1;
  8.     foreach ($regs as $r) {
  9.         $regions[] = array('id'=>$i, 'title'=>trim($r));
  10.         $i++;
  11.     }
  12.    
  13.     $result = array('type'=>'success', 'regions'=>$regions);
  14. }
  15. else {
  16.     $result = array('type'=>'error');
  17. }
  18.  
  19.  
  20. print json_encode($result);
  21.  
  22. ?>


Get параметром передается id страны, потом открывается соответствующий текстовый файл со списками городов.
Ну и дальше пляски с массивами, в который помещаются данные. Этот код я понял.

Мне нужно сделать выборку городов и их id не из текстового файла, а из базы.
Я сделал запрос в базу, а вот дальше не пойму в какой массив помещать выборку, и как обработать это циклом foreach, ведь из текстового файла брались только города, а id счетчик делал, а беря из базы получаем и id и city name.

PHP:
скопировать код в буфер обмена
  1. <?
  2. $country_id = @intval($_GET['country_id']); // получил id города
  3.  
  4. $regs = mysql_query("SELECT id, city_name FROM jb_city WHERE parent=".$country_id." ORDER by sort_index"); cq(); // сделал запрос
  5. $regs = mysql_fetch_assoc($regs); // это правильно?
  6.  
  7.      // дальше не трогаю, так как уже трогал - не получилось
  8.     $regions = array();
  9.    
  10.     $i=1;
  11.     foreach ($regs as $r) {
  12.         $regions[] = array('id'=>$i, 'title'=>trim($r)); // как вот сюда вставить $regs['id'] и $regs['city_name']
  13.                                                                 // или так не получится?
  14.         $i++;
  15.     }
  16.    
  17.     $result = array('type'=>'success', 'regions'=>$regions);
  18.  
  19.  
  20.  
  21.  
  22. print json_encode($result);
  23.  
  24. ?>


4 часа с этим проковырялся, помогите пожалуйста.
2. Slavenin - 29 Июня, 2011 - 19:53:47 - перейти к сообщению
подправить ваш код легко, но попробуйте сделать это сами, маленькая подсказка: сделайте

и
PHP:
скопировать код в буфер обмена
  1. foreach ($regs as $r)
  2.    {
  3.         print_r($r);
  4.         $regions[] = array('id'=>$i, 'title'=>trim($r));
  5.         $i++;
  6.     }


надеюсь все сразу встанет на свои места Подмигивание
3. vasnihaev - 30 Июня, 2011 - 09:44:49 - перейти к сообщению
Спасибо Вам за подсказку!
Была проблема в том, что скрипт не мог соединиться с БД, я положил скрипт в другой каталог и сделал вот так
PHP:
скопировать код в буфер обмена
  1. <?
  2.  include("admin/conf.php");
  3.  
  4.  
  5.  
  6.  
  7. $country_id = @intval($_GET['country_id']);
  8.  
  9. $regs = mysql_query("SELECT id, city_name FROM jb_city WHERE parent=".$country_id." ORDER by sort_index");
  10.  
  11.  
  12. $regions = array();
  13.  
  14.  
  15. while ($regs2 = mysql_fetch_assoc($regs)){
  16.        
  17.         $regions[] = array('id'=>$regs2['id'], 'title'=>$regs2['city_name']);
  18.        
  19.         }
  20.  
  21.  
  22.        
  23.     $result = array('type'=>'success', 'regions'=>$regions);
  24.  
  25. print json_encode($result);
  26.  
  27.  
  28. ?>

и всё заработало. До этого так делал, но не работало из-за проблемы коннекта с БД - о чем я и не догадывался.
Еще раз Спасибо!
4. komprenda - 30 Июня, 2011 - 10:47:50 - перейти к сообщению
vasnihaev пишет:
Спасибо Вам за подсказку!
Была проблема в том, что скрипт не мог соединиться с БД, я положил скрипт в другой каталог и сделал вот так
PHP:
скопировать код в буфер обмена
  1. <?
  2.  include("admin/conf.php");
  3.  
  4.  
  5.  
  6.  
  7. $country_id = @intval($_GET['country_id']);
  8.  
  9. $regs = mysql_query("SELECT id, city_name FROM jb_city WHERE parent=".$country_id." ORDER by sort_index");
  10.  
  11.  
  12. $regions = array();
  13.  
  14.  
  15. while ($regs2 = mysql_fetch_assoc($regs)){
  16.        
  17.         $regions[] = array('id'=>$regs2['id'], 'title'=>$regs2['city_name']);
  18.        
  19.         }
  20.  
  21.  
  22.        
  23.     $result = array('type'=>'success', 'regions'=>$regions);
  24.  
  25. print json_encode($result);
  26.  
  27.  
  28. ?>

и всё заработало. До этого так делал, но не работало из-за проблемы коннекта с БД - о чем я и не догадывался.
Еще раз Спасибо!


error_reporting(E_ALL); всегда
5. vasnihaev - 30 Июня, 2011 - 11:09:59 - перейти к сообщению
Спасибо, буду знать. Я не ... , я только учусь.

 

Powered by ExBB FM 1.0 RC1