0

我想我可能已经过头了。我拥有的是 mysql 中的两个表,它们有一个共同的字段。我想在一个表中显示一条记录,其中的行或列表由公共字段所共有的所有这些记录组成。

详细地说,我有一张带有图像的纱线表和一张带有图像的图案表。我想在一行中显示模式及其信息,然后在其下方显示与排序子行中的公共重量字段匹配的所有纱线图像。

我还通过复选框组选择图案的颜色和类别。

这是我的复选框组

<input type="checkbox" name="color[]" value="Black">Black
<input type="checkbox" name="color[]" value="Blue">Blue
<input type="checkbox" name="color[]" value="Brown">Brown
<input type="checkbox" name="color[]" value="Green">Green
<input type="checkbox" name="color[]" value="Grey">Grey
<input type="checkbox" name="color[]" value="Orange">Orange
<input type="checkbox" name="color[]" value="Pink">Pink
<input type="checkbox" name="color[]" value="Purple">Purple
<input type="checkbox" name="color[]" value="Red">Red
<input type="checkbox" name="color[]" value="Teal">Teal
<input type="checkbox" name="color[]" value="White">White
<input type="checkbox" name="color[]" value="Yellow">Yellow



<input type="checkbox" name="pattcat[]" value="Home Decor">Home Decor
<input type="checkbox" name="pattcat[]" value="Children">Children
<input type="checkbox" name="pattcat[]" value="Tops Women">Tops Women
<input type="checkbox" name="pattcat[]" value="Accessories">Accessories
<input type="checkbox" name="pattcat[]" value="Lace">Lace
<input type="checkbox" name="pattcat[]" value="Tops Men">Tops Men

这是我迄今为止的结果查询和显示表。我将所有图像名称保存在 mysql 表中并链接到路径。

extract($_GET);

$query = "(SELECT tblPatterns.PatternName, tblPatterns.Needlesize, tblPatterns.FinishedSize, tblPatterns.YardageNeeded, tblPatterns.PatternImage, tblYarn.YarnImage FROM tblYarn, tblPatterns WHERE tblYarn.WeightCategory=tblPatterns.WeightCategory && Color IN ('" . implode("','",$color) . "') && Category IN ('" . implode("','",$pattcat) . "') ORDER BY `tblPatterns`.`PatternName` ASC)" ;
$result = mysql_query($query) or die('Query failed: ' . mysql_error());

// Printing results in HTML
echo "<table border='1'>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "\t<tr>\n";
foreach ($line as $col_value) {
echo "\t\t<td>$col_value</td>\n";
 }
echo "<td><img src=./images/$col_value width='150' height='150' border='3' ></td>";


echo "\t</tr>\n";
}
echo "</table>\n";

我想我可能必须更改 foreach ($line as $col_value) 部分。有没有办法建立一个表并准确选择哪些数据去哪里以及是否重复?就像在图像中重复的纱线下的行及其相应的图案数据一样?

4

2 回答 2

0

我认为这就是你想要的:

$last_pattern = null;
while ($line = mysql_fetch_assoc($result, MYSQL_ASSOC)) {
  $col_count = count($line) - 1; // Subtract 1 because image isn't in a column
  if ($line['PatternName'] !== $last_pattern) {
    if ($last_pattern !== null) {
      echo "</td></tr>\n";
    }
    echo "<tr>\n  ";
    foreach ($line as $col_name => $col_value) {
      switch ($col_name) {
      case 'YarnImage':
        break;
      case 'PatternImage':
        echo "<td><image src='images/$col_value' /></td>";
        break;
      default:
        echo "<td>$col_value</td>";
      }
    }
    $last_pattern = $line['PatternName'];
    echo "</tr>\n  <tr><td colspan='$col_count'>\n";
  }
  $yarn_image = $line['YarnImage'];
  echo "    <img src='images/$yarn_image' width='150' height='150' border='3'/>\n";
}
if ($last_image !== null) {
  echo "</td></tr>";
}
于 2012-12-07T00:27:59.260 回答
0

您需要使用 tblYarn 加入 tblPatterns :)

http://www.tizag.com/mysqlTutorial/mysqljoins.php

此外,图像 TD 在 foreach 之外,因此它不会在 $col_value 之前循环。

于 2012-12-06T23:51:42.170 回答