0

頭がおかしくなったのではないかと思います。私が持っているのは、共通のフィールドを持つmysqlの2つのテーブルです。共通フィールドによって共通のすべてのレコードの行またはリストを含むテーブルに1つのレコードを表示したいと思います。

詳細には、画像付きの毛糸の表と画像付きのパターンの表があります。パターンとその情報を1つの行に表示し、その下に、ある種のサブ行の共通の重量フィールドに一致するすべての糸の画像を表示したいと思います。

また、チェックボックスグループからパターンの色とカテゴリを選択しています。

これが私のチェックボックスグループです

<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を$col_valueとして)の部分を変更する必要があるかもしれないと思っています。テーブルを作成し、どのデータがどこに行き、それが繰り返されるかを正確に選択する方法はありますか?対応するパターンデータとともに行の下で繰り返される糸からの画像のように?

4

2 に答える 2

0

tblYarnでtblPatternsに参加する必要があります:)

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

また、画像TDはforeachの外側にあるため、$col_valueが前に付いてループすることはありません。

于 2012-12-06T23:51:42.170 に答える
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 に答える