отображение категории и подкатегорий php и mysql

#php #mysql

#php #mysql

Вопрос:

 mysql_select_db($database_test2, $test2);
$query_Recordset1 = "Select   color.name As color,   item.name As Item,   typ.name As Typ,   color.id From   color Inner Join   item On color.id = item.color_id Inner Join   typ On typ.id = item.typ_id Group By   item.name, typ.name, color.id Order By   color.id, typ.name, item.name";
$Recordset1 = mysql_query($query_Recordset1, $test2) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<p><?php echo $row_Recordset1['color']; ?>
</p>
<p><?php echo $row_Recordset1['Typ']; ?></p>
<?php do { ?>
  <p><?php echo $row_Recordset1['Item']; ?></p>
  <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
  

я использовал приведенный выше код и выдает этот результат, который не является тем, что я хочу иметь

Зеленый

Металлические

пункт 1

пункт 2

пункт 3

пункт 4

пункт 5

пункт 6

я хотел бы, чтобы это было так

Зеленый

Металлические

.элемент 1 дерево

.пункт 2

yelow

Металлические

.item3

Дерево

.пункт 4

красный

Металлические

.item5

Дерево

.пункт 6

кто-нибудь может быть добр, чтобы помочь мне

большое спасибо

Ответ №1:

В вашем цикле do … while вы печатаете только элемент. Есть ли у вас какие-либо причины использовать do ..while вместо цикла while?

Это должно сработать:

 <body>
<?php while ( $row_Recordset1 = mysql_fetch_assoc($Recordset1) ) { ?>
   <p><?php echo $row_Recordset1['color']; ?></p>
   <p><?php echo $row_Recordset1['Typ']; ?></p>
   <p><?php echo $row_Recordset1['Item']; ?></p>
   <?php } ?>
</body>
  

И вам также придется удалить первую mysql_fetch_assoc , которая находится перед mysql_num_rows .

РЕДАКТИРОВАТЬ: Извините, требования были неясны, когда весь текст был в одну строку. Поскольку вы получаете строки, упорядоченные по цвету, вы можете вывести цвет, только если он отличается от предыдущего:

 <body>
<?php 
$color = '';
while ( $row_Recordset1 = mysql_fetch_assoc($Recordset1) ) {
   if ( $color != $row_Recordset1[ 'color' ]; ) {
       ?><p><?php echo $row_Recordset1['color']; ?></p><?php
       $color = $row_Recordset1[ 'color' ];
   }
   ?><p><?php echo $row_Recordset1['Typ']; ?></p>
   <p><?php echo $row_Recordset1['Item']; ?></p>
   <?php } ?>
</body>
  

Комментарии:

1. используя приведенный выше код, он повторяет значение цвета, например, зеленый металлический элемент 1, зеленый деревянный элемент 2

2. Пожалуйста, помогите с приведенным выше кодом, выводимый включает в себя сам код