[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с выводом данных
Guest
Люди добрые нужна помощь в таком вопросе (сразу предупреждаю что пока плохо разбираюсь в PHP кодах. Количество знаний на основе курсов Попова):

Делаю сайт (для себя) там есть каталог товаров. Должно выводиться таким образом (название авто взято для примера):

Митсубиши:
Каризма
Лансер
Аутлендер

Мазда:
Трибьют
мазда 3
мазда 6

Мерседес:
с220
е320
s500

В таблеце MySQL все товары записаны вот как:

id marka model
1 Митсубиши Каризма
2 Митсубиши Лансер
3 Митсубиши Аутлендер
4 Мазда Трибьют
5 Мазда мазда 3
6 Мазда мазда 6
7 Мерседес с220
8 Мерседес е320
9 Мерседес s500


Такой код я смог сообразить:

<?php
$result = mysql_query ("SELECT id,marka,model FROM testing GROUP BY marka",$db);

$myrow = mysql_fetch_array ($result);
do {
printf ("<div class='marka'><p class='markaText'>%s</p>

<div class='model'><p class='sirealText'>%s</p></div>


</div>", $myrow["marka"], $myrow["model"]);

}
while ($myrow = mysql_fetch_array ($result));
?>


Но при таком раскладе выводятся только первые строки каждой марки:

Митсубиши:
каризма

Мазда:
трибьют

Мерседес:
с220


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




Спустя 5 минут, 53 секунды (18.12.2011 - 12:35) Игорь_Vasinsky написал(а):
while ($myrow = mysql_fetch_assoc ($result))
{
//Вывод из БД
}

Спустя 5 минут, 40 секунд (18.12.2011 - 12:41) Guest написал(а):
Вот так?

<?php
$result = mysql_query ("SELECT id,marka,model FROM testing GROUP BY marka",$db);

$myrow = mysql_fetch_assoc ($result);
while ($myrow = mysql_fetch_assoc ($result))
{
printf ("<div class='marka'><p class='markaText'>%s</p>

<div class='model'><p class='sirealText'>%s</p></div>


</div>", $myrow["marka"], $myrow["model"]);

}

?>

Спустя 10 минут, 37 секунд (18.12.2011 - 12:51) Игорь_Vasinsky написал(а):
работает ? biggrin.gif

Спустя 6 минут, 17 секунд (18.12.2011 - 12:57) Placido написал(а):
Да проблема не в do - while. Просто нужно не группировать, а сортировать. "SELECT id,marka,model FROM testing ORDER BY marka". И если переписывать с while, то строчку $myrow = mysql_fetch_assoc ($result); нужно убрать.

Спустя 18 минут, 30 секунд (18.12.2011 - 13:16) Guest написал(а):
Игорь_Vasinsky к сожалению нет. Выводит только марки:

Мазда
Мерседес
Митсубиши

причем в алфавитном порядке стал выводить)

сделал вот так:

<?php
$result = mysql_query ("SELECT id,marka,model FROM testing ORDER BY marka",$db);


while ($myrow = mysql_fetch_assoc ($result))
{
printf ("<div class='marka'><p class='markaText'>%s</p>
<div class='model'><p class='sirealText'>%s</p></div>

</div>", $myrow["marka"], $myrow["model"]);

}

?>


выводит следующим образом:
Митсубиши Каризма
Митсубиши Лансер
Митсубиши Аутлендер
Мазда Трибьют
Мазда мазда 3
Мазда мазда 6
Мерседес с220
Мерседес е320
Мерседес s500

Спустя 45 минут, 15 секунд (18.12.2011 - 14:01) inpost написал(а):
Guest
Ну так у тебя всё так и выводит. Дальше логика:
Если марка повторяется, то мы её не выводим, если новая, то мы её выводим и заносим в переменную, как новая марка, далее продолжаем, если ПОВТОРЯЕТСЯ с предыдущим - снова не выводим.

Как выполнишь это действие, от Попова лечись тут: irbis-team.com irbis-school.com и курсы Специалиста.

Спустя 14 минут, 4 секунды (18.12.2011 - 14:15) dadli написал(а):
Guest
как варянт так:
$res = mysql_query("SELECT marka, GROUP_CONCAT(model) FROM testing GROUP BY marka");
while($row = mysql_fetch_row($res)) {
echo $row[0].": <BR> ".preg_replace("#\,#iu","<br>",$row[1])."<br>";
}

Спустя 57 минут, 44 секунды (18.12.2011 - 15:13) Guest написал(а):
inpost

А как это на php прописать? rolleyes.gif как я понял надо еще использовать if ()
но как сравнить на повторение переменную?

Спустя 36 минут, 58 секунд (18.12.2011 - 15:50) Guest написал(а):
dadli

Попробовал ваши вариант. Выводит:

Митсубиши:

Мазда:

Мерседес:


Но честно говоря, что то вообще не могу понять вашу схему)
Может вы подскажете как прописать ту логику про которую говорил inpost ?

Спустя 1 минута, 13 секунд (18.12.2011 - 15:51) Игорь_Vasinsky написал(а):
не надо лишних условий группируй и сортируй.

Спустя 3 минуты, 51 секунда (18.12.2011 - 15:55) Guest написал(а):
Игорь_Vasinsky

а можете в виде кода показать эти группировку и сортировку? smile.gif

Спустя 10 минут, 41 секунда (18.12.2011 - 16:06) killer8080 написал(а):
dadli
регулярки тут лишние, достаточно str_replace()
$res = mysql_query("SELECT `marka`, GROUP_CONCAT(`model`) AS `model` FROM `testing` GROUP BY `marka` ORDER BY `marka`, `model`");
echo '<table border="1">',
'<tr><th>Marka</th><th>Model</th></tr>';
while($row = mysql_fetch_assoc($res)) {
echo '<tr><td>'.$row['marka'].'</td><td>'.str_replace(',', '<br />', $row['model']).'</td></tr>';
}
echo '</table>';

Спустя 6 минут, 36 секунд (18.12.2011 - 16:12) Guest написал(а):
killer8080

Спасибо за код. Выводится так как надо. Сейчас буду под себя адаптировать)

Спустя 3 часа, 20 минут, 31 секунда (18.12.2011 - 19:33) inpost написал(а):
$res = mysql_query("SELECT id,marka,model FROM testing ORDER BY marka");
while($row = mysql_fetch_assoc($res))
{
echo $model;
}

Твоё? Вывелись все модели. Теперь марка:
$marka = '';
$res = mysql_query("SELECT id,marka,model FROM testing ORDER BY marka");
while($row = mysql_fetch_assoc($res))
{
if($marka != $row['marka'])
{
$marka = $row['marka'];
echo $marka;
}
echo $model;
}


Пройдя курс Попова, обычно, человек это уже может сделать, обычное условие if... что странно, видимо, ты просто повторял за ним не думая о том, что он делает.

Спустя 44 минуты, 6 секунд (18.12.2011 - 20:17) Guest написал(а):
inpost

Да скажем так что я филонил на "уроках Евгения")

но Спасибо всем, кто помог с этой задачей. Вот код который подходит мне.

$res = mysql_query("SELECT id,marka,model FROM testing ");
while($row = mysql_fetch_assoc($res))
{
if($marka != $row['marka'])
{
$marka = $row['marka'];
echo $marka, '</br>';
}
echo $row ['model'],'</br>';

}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.