За последние 24 часа нас посетили 11156 программистов и 840 роботов. Сейчас ищут 310 программистов ...

Все как всегда

Тема в разделе "PHP для новичков", создана пользователем ZlobnyKolob, 25 окт 2016.

Метки:
  1. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Прошу помощи,

    Есть mysql_fetch_array заводов и ещё один mysql_fetch_array сотрудников на этих заводах

    В таблице сотрудников есть поле zavodID к примеру,

    Как мне вывести данные в виде:
    Завод1
    Сотрудник1
    Сотрудник2
    Сотрудник3
    Завод2
    Сотрудник4
    Завод5564
    Сотрудник52204

    Я делал:

    PHP:
    1. do {
    2.      printf( "выводим завод"
    3. do {
    4. if ($zavod["id"] == $sotr["zavodID"])
    5.            {
    6. выводим сотрудника
    7.            }
    8.      }   while ($sotr = mysql_fetch_array(запрос_сотрудников))
    9.              );
    10. } while ($zavod = mysql_fetch_array(запрос_заводов))
    выводит ошибку T_DO, что где-то, что-то не так...

    Прошу помощи
     
    #1 ZlobnyKolob, 25 окт 2016
    Последнее редактирование модератором: 25 окт 2016
  2. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    718
  3. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Есть такое дело,

    Попробую дома ещё посмотреть, но не знаю как получится, если что, так полный код вывод скину,

    Если быть точным то ошибка такова -
    Parse error: syntax error, unexpected T_DO on line 56

    как я понял - это означает неправильное построение циклов
     
  4. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Добрый вечер, помогите разобраться, всё никак не получается,

    PHP:
    1.     do
    2.     {
    3.         printf(
    4.         "<div>"
    5.         .$result_array_zavodov["name"]
    6.         ."</div>"
    7.         //.$result_array_teams["id"]
    8.             do
    9.         {
    10.         if($array_users["zavodID"] == $result_array_zavodov["id"])
    11.            
    12.             echo $teamID;  
    13.         }  while($array_users = mysql_fetch_array($query_users));
    14.         ."<div>"
    15.         ."Люди на заводе"
    16.         ."</div>"
    17.         );
    18.     }  
    19.     while($result_array_zavodov = mysql_fetch_array($query_zavodov))
    Вот при прохождении такого коды, выводит ошибку,

    Parse error: syntax error, unexpected T_DO in Z:\home\localhost\www\project\teams_composition.php on line 58

    Помогите переписать конструкцию, возможно через for,


    За ранее благодарен !
     
  5. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    @ZlobnyKolob Закрой printf, не хватает скобочки и точки с запятой ");"
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.241
    Симпатии:
    1.716
    Адрес:
    Молдова, г.Кишинёв
    @ZlobnyKolob по какой книге изучаешь PHP?
     
  7. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Раньше по Попову изучал, сейчас в другом работаю, а код пишу так, чтоб не забыть)

    16 и 17 строка - это разве не закрытие printf ?
     
  8. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    @ZlobnyKolob printf должен быть закрыт в 6 строке. И не должен в аргументах содержать конструкции типо while, if...
     
  9. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    понял, тогда как мне можно в одном цикле перебрать другой с ифом по ID
     
  10. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    PHP:
    1.     do
    2.     {
    3.         printf(
    4.         "<div>"
    5.         .$result_array_zavodov["name"]
    6.         ."</div>"
    7.         );
    8.             do
    9.         {
    10.         if($array_users["zavodID"] == $result_array_zavodov["id"])
    11.        
    12.             echo $teamID;
    13.         }  while($array_users = mysql_fetch_array($query_users));
    14.     }
    15.     while($result_array_zavodov = mysql_fetch_array($query_zavodov));
    Вот такое код, как я понимаю должен заработать ?
     
  11. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    @ZlobnyKolob Просто перенести из строки 17 ");" в строку 6. В строку 17 добавь точку с запятой.
    --- Добавлено ---
    @ZlobnyKolob проверь свой код. Ошибки есть?
    --- Добавлено ---
    Лучше в место printf использовать echo.
     
  12. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    --- Добавлено ---
    хорошо
    --- Добавлено ---
     
  13. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Которые день сижу и ничего не получается, помогите с кодом,

    Задача: есть два массива mysql_fetch_array
    МассивЗаводов и МассивРабочих

    У массива заводов есть автозаполняемое поле ID, у рабочих есть поле IDзавода,

    Данные необходимо вывести таким образом:
    Завод 1
    Рабочий1,
    Рабочий 2360,
    Рабочий 125,
    Завод 2
    Рабочий 32045,
    Рабочий 40524,
    Завод 3 и так далее...

    Прошу помощи !
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.419
    Симпатии:
    1.744
    Надо сгруппировать рабочих во вложенных массивах
     
    denis01 нравится это.
  15. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    можно хотяб какой-то пример ? буду брагодарен
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.419
    Симпатии:
    1.744
    PHP:
    1. цикл {
    2.   $arr[$row['завод']][] = $row;
    3. }
    4.  
    5. var_dump($arr);
    тогда получится, что они напихались по заводам.

    в идеале даже так:
    PHP:
    1.   $arr[$row['завод']][$row['id']] = $row;
     
    denis01 нравится это.
  17. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Честно говоря, не понял суть Вашего решения,
     
  18. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.128
    Симпатии:
    1.638
    Ну поищи по форуму. Почему do-while? Вот серьёзно, зачем? @igordata правильно подсказывает, сначала собрать всё в массивах потом выводить, но тут бы цикл верный для начала использовать... Здесь 1000 раз обсуждалось, почему неправильно использовать для этих целей do-while
     
    igordata нравится это.
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.419
    Симпатии:
    1.744
    да можно даже не искать, а подумать, хотя это кому-то сложнее.
     
    ZlobnyKolob и denis01 нравится это.
  20. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Я сделал все как Вы и говорили,

    получился массив
    Завод1 в нем массив работников, но только один работник(последний)

    Завод2 в нем массив работников, но тоже только последний работник внесен,

    не подскажите почему может так происходить ?

    do {

    } while ()

    Вот так обхожу запрос из базы
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.419
    Симпатии:
    1.744
    последние пустые квадратные скобки забыл походу. поставь.
     
  22. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    И немного говнокода по вашей задаче как пример:

    Код (Text):
    1. $z = mysql_query("SELECT * FROM zavod");
    2. $za = mysql_fetch_array($z);
    3.  
    4. do {
    5.  
    6. echo $za['zavod'];
    7.  
    8. $r = mysql_query("SELECT * FROM rab WHERE '$za[id]'=zavidid");
    9. $ra = mysql_fetch_array($r);
    10.  
    11. do{
    12. echo $ra['name'];
    13. }
    14. while($ra = mysql_fetch_array($r));
    15. }
    16. while($za = mysql_fetch_array($z));
     
  23. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    запрос в цикле, каеф))
    --- Добавлено ---
    поставил вторую квадратную скобочку(которую пропустил) и волшебство, все работает, создает массивы заводов и заполняет их работниками,

    большое Вам спасибо)
     
  24. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток

    Конечно каеф ))) но прикинь работает )))
     
  25. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    то, это извращение работает, но пощадите сервер)