Здравствуйте,подскажите пожалуйста,как правильно написать код php? Задачка не из легких,для меня,т.к. я новичок,читаю литературу php, но есть вопросы,над которыми я думаю уже 2 недели(( Есть 4 таблицы с такими данными: Таблица Prom1 хранит в себе все значения полей для связи таблиц. Как сделать так,чтобы на странице появилась таблица с таким содержанием? и вместо id_plat и id,fio появилось соотвественно не номер,а слова(вместо id_plat 5,8 - E,B, а вместо id_fio 2,3 - Мукатин, Абаза)? Помогите пожалуйста. Если нужно выслать код,могу выслать,сразу не выслал,так как читать сложно этот пост будет. Жирным шрифтом я выделил те фрагменты таблицы в БД,данные которых необходимо показать для наглядности в итоге на странице.
Код (Text): <?php $q = mysql_query( "SELECT p.id_gen, GROUP_CONCAT(p.id_plat SEPARATOR ' , ') as o , SUM(p.kolichestvo) as l FROM Prom_1 p GROUP BY p.id_gen"); $r = mysql_query( "SELECT generators.id_gen, generators.nazvanie, Prom_1.id_plat FROM generators INNER JOIN Prom_1 ON generators.id_gen = Prom_1.id_gen GROUP BY generators.id_gen"); $id_gen[] = array(); $id_gen1[] = array(); $kolichestvo[] = array(); $id_plat[] = array(); $nazvanie[] = array(); $i = '00'; $n = '00'; while ($row = mysql_fetch_array($q, MYSQL_ASSOC)) { $id_gen[] = $row['id_gen']; $kolichestvo[] = $row['l']; $id_plat[] = $row['o']; $n++; // echo $row['id_gen'], "--", $row['l'], "--", $row['o'], "<BR>"; } foreach ($kolichestvo as $z ) {settype($z, "integer");} foreach ($id_plat as $f ) {settype($f, "integer");} while ($ro = mysql_fetch_array($r, MYSQL_ASSOC)) { $id_gen1[]= $ro['id_gen']; $nazvanie[] = $ro['nazvanie']; $b++; //echo $ro['id_gen'], " ", $ro['nazvanie'], "<BR>"; } echo '<table border="1">'; echo '<thead>'; echo '<tr>'; echo '<th>Индекс</th>'; echo '<th>Название</th>'; echo '<th>Количество</th>'; echo '<th>Индекс платы</th>'; echo '</tr>'; echo '</thead>'; echo '<tbody>'; for ($i; $i<=$n; $i++) { if ($id_gen[$i] == $id_gen1[$i]) { echo '<tr>'; echo '<td>'. $id_gen[$i]. '</td>'; echo '<td>'. $nazvanie[$i]. '</td>'; echo '<td>'. $kolichestvo[$i]. '</td>'; echo '<td>'.$id_plat[$i]. '</td>'; echo '</tr>'; } } вот этот код работает почти как надо, только его нужно немного доработать, если возможно. Помогите пожалуйста, можно ли вместо $id_plat[$i] вывести название плат из таблицы plats. И если это возможно, то как это можно сделать.
Код (Text): SELECT id_gen, SUM(kolichestvo), GROUP_CONCAT(id_plat), GROUP_CONCAT(id_fio) FROM Prom1 GROUP BY id_gen;
а ты попробуй. а вообще, на будущее: есть такой прекрасный сайт sqlfiddle.com. когда хочешь получить помощь по запросам, сначала готовишь на нем данные и даешь ссылку. получишь офигенный фидбек от гуру )))
ну ты хотябы увидел, что там название таблицы не совсем твоё? ))) вот сделал для тебя заготовку с вариантом от Zuldek: http://sqlfiddle.com/#!2/2b50b/2 просто копировал твой текст с данными и вызывал команду [Text to DDL], не всегда прокатывает, но с твоими табличками получилось. работает! не ленись, чувак. читай, думай.
Нееет,по запросу вопросов нет,все хорошо,но с выводом данных в php коде,ошибка boolean(( и вывести на страницу я не могу( Добавлено спустя 2 минуты 45 секунд: Просто как записать в php коде и вывести:
Код (Text): $q = mysql_query( "SELECT id_gen, SUM(kolichestvo), GROUP_CONCAT(id_plat), GROUP_CONCAT(id_fio) FROM Prom_1 GROUP BY id_gen"); while ($row = mysql_fetch_array($q, MYSQL_ASSOC)) { echo $row['id_gen']; } даже вот так я попробовал,ошибка: Простите меня пожалуйста.
отлаживай. mysql_error() тебе в помощь! Добавлено спустя 1 минуту 16 секунд: "expects parameter 1 to be resource, boolean given" означает, что mysql_query вернул тебе false вместо ресурса. то есть запрос содержит ошибку. какую? узнай это сам.
Все,дошло почему,не была подключена бд)) вот я блин..... Но все равно пожалуйста подскажите пожалуйста как сделать,чтобы в поле индекс платы был не id_plat,а название платы из таблицы plat?
это делается через JOIN — объединяете таблицы. если на базе прошлого примера, то так: http://sqlfiddle.com/#!2/4b59d/4
Код (Text): $Platnazvanie[]=array(); //Добавлено Код (Text): for ($i; $i<=$n; $i++) { if ($id_gen[$i] == $id_gen1[$i]) { echo '<tr>'; echo '<td>'. $id_gen[$i]. '</td>'; echo '<td>'. $nazvanie[$i]. '</td>'; echo '<td>'. $kolichestvo[$i]. '</td>'; echo '<td>'.$Platnazvanie[$i]. '</td>'; //Изменено echo '</tr>'; } } } Что то мне кажется,что в $ronPlat['pl.nazvanie']; не то... пустые строчки, а так,да все хорошо,запрос работает.