За последние 24 часа нас посетили 15230 программистов и 1671 робот. Сейчас ищут 793 программиста ...

Проблемка с выводом данных на странице.

Тема в разделе "MySQL", создана пользователем Serghter, 20 окт 2014.

  1. Serghter

    Serghter Новичок

    С нами с:
    7 сен 2013
    Сообщения:
    42
    Симпатии:
    0
    Здравствуйте,подскажите пожалуйста,как правильно написать код php?
    Задачка не из легких,для меня,т.к. я новичок,читаю литературу php, но есть вопросы,над которыми я думаю уже 2 недели((

    Есть 4 таблицы с такими данными:

    Таблица Prom1 хранит в себе все значения полей для связи таблиц.

    Как сделать так,чтобы на странице появилась таблица с таким содержанием?

    и вместо id_plat и id,fio появилось соотвественно не номер,а слова(вместо id_plat 5,8 - E,B, а вместо id_fio 2,3 - Мукатин, Абаза)? Помогите пожалуйста. Если нужно выслать код,могу выслать,сразу не выслал,так как читать сложно этот пост будет.
    Жирным шрифтом я выделил те фрагменты таблицы в БД,данные которых необходимо показать для наглядности в итоге на странице.
     
  2. deblogger

    deblogger Новичок

    С нами с:
    11 июл 2013
    Сообщения:
    200
    Симпатии:
    0
    Это не PHP, а mySQL.
     
  3. Serghter

    Serghter Новичок

    С нами с:
    7 сен 2013
    Сообщения:
    42
    Симпатии:
    0
    подскажите как правильно сделать запрос в mysql?
     
  4. Serghter

    Serghter Новичок

    С нами с:
    7 сен 2013
    Сообщения:
    42
    Симпатии:
    0
    Код (Text):
    1. <?php
    2. $q = mysql_query( "SELECT p.id_gen, GROUP_CONCAT(p.id_plat SEPARATOR ' , ') as o ,
    3. SUM(p.kolichestvo) as l
    4. FROM Prom_1 p
    5. GROUP BY p.id_gen");
    6. $r = mysql_query( "SELECT generators.id_gen, generators.nazvanie, Prom_1.id_plat
    7. FROM generators
    8. INNER JOIN Prom_1 ON generators.id_gen = Prom_1.id_gen
    9. GROUP BY generators.id_gen");
    10.  
    11. $id_gen[] = array();
    12. $id_gen1[] = array();
    13. $kolichestvo[] = array();
    14. $id_plat[] = array();
    15. $nazvanie[] = array();
    16. $i = '00';
    17. $n = '00';
    18.  
    19. while ($row = mysql_fetch_array($q, MYSQL_ASSOC)) {
    20. $id_gen[] = $row['id_gen'];
    21. $kolichestvo[] = $row['l'];
    22. $id_plat[] = $row['o'];
    23. $n++;
    24. // echo $row['id_gen'], "--", $row['l'], "--", $row['o'], "<BR>";
    25. }
    26. foreach ($kolichestvo as $z ) {settype($z, "integer");}
    27. foreach ($id_plat as $f ) {settype($f, "integer");}
    28.  
    29. while ($ro = mysql_fetch_array($r, MYSQL_ASSOC))
    30. {
    31. $id_gen1[]= $ro['id_gen'];
    32. $nazvanie[] = $ro['nazvanie'];
    33. $b++;
    34. //echo $ro['id_gen'], " ", $ro['nazvanie'], "<BR>";
    35. }
    36. echo '<table border="1">';
    37. echo '<thead>';
    38. echo '<tr>';
    39. echo '<th>Индекс</th>';
    40. echo '<th>Название</th>';
    41. echo '<th>Количество</th>';
    42. echo '<th>Индекс платы</th>';
    43. echo '</tr>';
    44. echo '</thead>';
    45. echo '<tbody>';
    46. for ($i; $i<=$n; $i++) {
    47. if ($id_gen[$i] == $id_gen1[$i]) {
    48. echo '<tr>';
    49. echo '<td>'. $id_gen[$i]. '</td>';
    50. echo '<td>'. $nazvanie[$i]. '</td>';
    51. echo '<td>'. $kolichestvo[$i]. '</td>';
    52. echo '<td>'.$id_plat[$i]. '</td>';
    53. echo '</tr>';
    54. } }
    вот этот код работает почти как надо, только его нужно немного доработать, если возможно. Помогите пожалуйста, можно ли вместо $id_plat[$i] вывести название плат из таблицы plats. И если это возможно, то как это можно сделать.
     
  5. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Код (Text):
    1. SELECT id_gen,  SUM(kolichestvo), GROUP_CONCAT(id_plat), GROUP_CONCAT(id_fio) FROM Prom1 GROUP BY id_gen;
     
  6. Serghter

    Serghter Новичок

    С нами с:
    7 сен 2013
    Сообщения:
    42
    Симпатии:
    0
    хм. Подскажите пожалуйста,этим нужно заменить весь запрос и все?
     
  7. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    а ты попробуй.
    а вообще, на будущее: есть такой прекрасный сайт sqlfiddle.com. когда хочешь получить помощь по запросам, сначала готовишь на нем данные и даешь ссылку. получишь офигенный фидбек от гуру )))
     
  8. Serghter

    Serghter Новичок

    С нами с:
    7 сен 2013
    Сообщения:
    42
    Симпатии:
    0
    я заменил запрос,не работает((( пишет boolean given ошибку.
     
  9. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    ну ты хотябы увидел, что там название таблицы не совсем твоё? )))


    вот сделал для тебя заготовку с вариантом от Zuldek: http://sqlfiddle.com/#!2/2b50b/2
    просто копировал твой текст с данными и вызывал команду [Text to DDL], не всегда прокатывает, но с твоими табличками получилось.

    работает! не ленись, чувак. читай, думай.
     
  10. Serghter

    Serghter Новичок

    С нами с:
    7 сен 2013
    Сообщения:
    42
    Симпатии:
    0
    Нееет,по запросу вопросов нет,все хорошо,но с выводом данных в php коде,ошибка boolean(( и вывести на страницу я не могу(

    Добавлено спустя 2 минуты 45 секунд:
    Просто как записать в php коде и вывести:

     
  11. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    это ужасно. пора паниковать.
     
  12. Serghter

    Serghter Новичок

    С нами с:
    7 сен 2013
    Сообщения:
    42
    Симпатии:
    0
    Код (Text):
    1. $q = mysql_query( "SELECT id_gen,  SUM(kolichestvo), GROUP_CONCAT(id_plat), GROUP_CONCAT(id_fio) FROM Prom_1 GROUP BY id_gen");
    2.  
    3. while ($row = mysql_fetch_array($q, MYSQL_ASSOC)) {
    4.  
    5.  echo $row['id_gen'];
    6.  
    7. }
    даже вот так я попробовал,ошибка:

    Простите меня пожалуйста.
     
  13. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    отлаживай. mysql_error() тебе в помощь!

    Добавлено спустя 1 минуту 16 секунд:
    "expects parameter 1 to be resource, boolean given" означает, что mysql_query вернул тебе false вместо ресурса. то есть запрос содержит ошибку. какую? узнай это сам.
     
  14. Serghter

    Serghter Новичок

    С нами с:
    7 сен 2013
    Сообщения:
    42
    Симпатии:
    0
    Все,дошло почему,не была подключена бд)) вот я блин.....

    Но все равно пожалуйста подскажите пожалуйста как сделать,чтобы в поле индекс платы был не id_plat,а название платы из таблицы plat?
     
  15. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    это делается через JOIN — объединяете таблицы. если на базе прошлого примера, то так: http://sqlfiddle.com/#!2/4b59d/4
     
  16. Serghter

    Serghter Новичок

    С нами с:
    7 сен 2013
    Сообщения:
    42
    Симпатии:
    0
    Код (Text):
    1. $Platnazvanie[]=array();            //Добавлено
    Код (Text):
    1.  
    2. for ($i; $i<=$n; $i++) {
    3. if ($id_gen[$i] == $id_gen1[$i]) {
    4. echo '<tr>';
    5. echo '<td>'. $id_gen[$i]. '</td>';
    6. echo '<td>'. $nazvanie[$i]. '</td>';
    7. echo '<td>'. $kolichestvo[$i]. '</td>';
    8. echo '<td>'.$Platnazvanie[$i]. '</td>';             //Изменено
    9. echo '</tr>';
    10. } }
    11. }
    Что то мне кажется,что в $ronPlat['pl.nazvanie']; не то... пустые строчки, а так,да все хорошо,запрос работает.
     
  17. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    когда кажется — отлаживайте. var_dump($ronPlat) покажет какие у вас поля.
     
  18. Serghter

    Serghter Новичок

    С нами с:
    7 сен 2013
    Сообщения:
    42
    Симпатии:
    0
    все получилось,спасибо вам большое!!!