#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. Пожалуйста, помогите с приведенным выше кодом, выводимый включает в себя сам код