0

「mf_id」値とそれに対応する「Manufacturer」値を返すリンクを含むテーブルを作成しようとしています。一度に 1 つずつ行うことはできますが、2 つを組み合わせようとすると、問題が発生し始めます。これが私がこれまでに持っているものです:

while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td><a href=\"list.php?mf_id&&Manufacturer=" . $row['mf_id'&&'Manufacturer'] . "\">" . $row['Manufacturer'] . "</a></td>";
echo "</tr>";
}

そして他のページ:

    $numb = $_GET['mf_id'];
$name = $_GET['Manufacturer'];
echo "<h1>$name</h1>";
$result=mysql_query("select * from Products where mf_id=$numb");

前もって感謝します!

4

3 に答える 3

4

クエリ文字列を通過することはないためManufacturer、2 番目のページは 経由でアクセスできませんGET。また、有効性のために、クエリ文字列の値は を介し​​て渡す必要がありますurlencode()

この行:

echo "<td><a href=\"list.php?mf_id=" . $row['mf_id'] . "\">" . $row['Manufacturer'] . "</a></td>";

次のようにする必要があります。

echo "<td><a href=\"list.php?mf_id=" . urlencode($row['mf_id']) . "&Manufacturer=" . urlencode($row['Manufacturer']) . "'\">" . $row['Manufacturer'] . "</a></td>";

注:質問への回答にはならないかもしれませんが、mysql_*関数の使用を停止する必要があります。それらは廃止されています。代わりにPDO (PHP 5.1 以降でサポート) またはmysqli (PHP 4.1 以降でサポート) を使用してください。どちらを使用すればよいかわからない場合は、この記事をお読みください

アップデート:

私が学んだミーガーのアドバイスごとにhttp_build_query(). クエリ文字列を URL に書き込む場合は、間違いなく次のようになります。

$data = array('mf_id' => $row['mf_id'], 'Manufacturer' => $row['Manufacturer']);
echo "<td><a href='list.php?" . http_build_query($data) . "'>" . $row['Manufacturer'] . "</a></td>";
于 2012-08-20T15:23:10.107 に答える
1

これはまったく意味がありません: $row['mf_id'&&'Manufacturer']. これは、配列の 2 つの要素にアクセスする方法ではありません。2 つの文字列を で結合し&&、ブール値を生成しtrue、アクセスしようとしています$row[true]。その方法では配列にアクセスできません。

両方のアイテムを使用する場合は、個別にアクセスする必要があります。

$row['mf_id'] . $row['Manufacturer']

これら 2 つの値を含むクエリ文字列を作成する場合は、データの URL エンコードを処理するhttp_build_queryを使用する必要があります。

$query = http_build_query(array('mf_id' => $row['mf_id'], 'manufacturer' => $row['Manufacturer']));

echo '<td><a href="list.php?' . $query . '">' . $row['Manufacturer'] . '</a></td>';

実際に必要なフィールドを選択するだけの場合は、 への引数でそれらを明示的に指定する必要がないことに注意してくださいhttp_build_query$rowすでにmf_idandのみが含まれている場合manufacturerは、使用するだけで十分です

$query = http_build_query($row);
于 2012-08-20T15:24:58.860 に答える
0

mf_id をページに渡すだけで、Manufacturer を渡していません。

編集 (コードを変更したため)

変化する:

while($row = mysql_fetch_array($result))
{
  echo "<tr>";
  echo "<td><a href=\"list.php?mf_id&&Manufacturer=" . $row['mf_id'&&'Manufacturer'] . "\">" . $row['Manufacturer'] . "</a></td>";
  echo "</tr>";
}

に:

while($row = mysql_fetch_array($result))
{
  echo "<tr>";
  echo "<td><a href=\"list.php?mf_id=".$row['mf_id']."&Manufacturer=" . $row['Manufacturer'] . "\">" . $row['Manufacturer'] . "</a></td>";
  echo "</tr>";
}
于 2012-08-20T15:22:25.823 に答える