Делаю сайт (для себя) там есть каталог товаров. Должно выводиться таким образом (название авто взято для примера):
Митсубиши:
Каризма
Лансер
Аутлендер
Мазда:
Трибьют
мазда 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"]);
}
?>
<?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 написал(а):
работает ?

Спустя 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
Мазда
Мерседес
Митсубиши
причем в алфавитном порядке стал выводить)
сделал вот так:
<?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 и курсы Специалиста.
Ну так у тебя всё так и выводит. Дальше логика:
Если марка повторяется, то мы её не выводим, если новая, то мы её выводим и заносим в переменную, как новая марка, далее продолжаем, если ПОВТОРЯЕТСЯ с предыдущим - снова не выводим.
Как выполнишь это действие, от Попова лечись тут: 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 прописать?
как я понял надо еще использовать if ()
но как сравнить на повторение переменную?
А как это на php прописать?

но как сравнить на повторение переменную?
Спустя 36 минут, 58 секунд (18.12.2011 - 15:50) Guest написал(а):
dadli
Попробовал ваши вариант. Выводит:
Митсубиши:
Мазда:
Мерседес:
Но честно говоря, что то вообще не могу понять вашу схему)
Может вы подскажете как прописать ту логику про которую говорил inpost ?
Попробовал ваши вариант. Выводит:
Митсубиши:
Мазда:
Мерседес:
Но честно говоря, что то вообще не могу понять вашу схему)
Может вы подскажете как прописать ту логику про которую говорил inpost ?
Спустя 1 минута, 13 секунд (18.12.2011 - 15:51) Игорь_Vasinsky написал(а):
не надо лишних условий группируй и сортируй.
Спустя 3 минуты, 51 секунда (18.12.2011 - 15:55) Guest написал(а):
Игорь_Vasinsky
а можете в виде кода показать эти группировку и сортировку?
а можете в виде кода показать эти группировку и сортировку?

Спустя 10 минут, 41 секунда (18.12.2011 - 16:06) killer8080 написал(а):
dadli
регулярки тут лишние, достаточно str_replace()
регулярки тут лишние, достаточно 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>';
}
Да скажем так что я филонил на "уроках Евгения")
но Спасибо всем, кто помог с этой задачей. Вот код который подходит мне.
$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>';
}