-2

テキストの書式設定を少し行い、SQL をすべて 1 つのコードでクエリしようとしています。以前は、書式設定なしでリストをうまく表示していましたが、ユーザーが読みやすくするために、アンダースコアをスペースに置き換え、各文字列の前にあるカテゴリを削除する必要があります。

<?php
 //doing the query
    $query = "SELECT * FROM parts WHERE itemName LIKE 'Processors:%'";
    $result = mysql_query($query) or die("Unable to query parts table!");
    while($row=mysql_fetch_array($result)) {
 //explode removes the preceding category, str_replace obviously replaces the _
        $labelCPU = explode(':',str_replace('_',' ',$row['itemName']));
 //displays the option in HTML
        $aa .= "<option value='{$row['partID']}'>$labelCPU</option>";
        }
?>
<select name="cpu"><? echo $aa; ?></select>

リスト内の変数をエコーすると、適切な数のオプションを取得しているため、クエリがまだ正常に実行されていることがわかりますが、それらはすべて「配列」として表示されます。

ここでどこが間違っていますか?

4

3 に答える 3

1

以下の行:

$labelCPU = explode(':',str_replace('_',' ',$row['itemName']));

それを配列に変更しています。Explode は基本的に文字列を受け取り、それを指定した文字 (この場合は「:」) で分割する配列に変換します。

次のようなことをする必要があります:

for ($i=0; $i<count($labelCPU); $i++) {
    $aa .= "<option value='{$row['partID']}'>$labelCPU[$i]</option>";
}

「:」の後にカテゴリ名を取得するためにexplodeを使用していると思われます。したがって、おそらくこれはうまくいくでしょう:

    $aa .= "<option value='{$row['partID']}'>$labelCPU[1]</option>";
于 2013-04-08T15:42:09.063 に答える
0

php 関数explodeは配列を返します。 爆発ステートメントの後に
配置します。
var_dump($labelCPU);
に保存されているすべてのデータをダンプし$labelCPUます。次に、目的のデータを保持する要素を見つけます

于 2013-04-08T15:43:46.537 に答える
0

数値キーを使用していない場合は、mysql_fetch_assoc に切り替えてください。また、爆発したもののインデックスが不足しています (コメントを追加しました)。

mysql_fetch_assoc/array は、PDO を支持して非推奨になっていることに注意してください。寿命が気になる場合は、乗り換えを検討した方がよいかもしれません。

<?php

$query  = "SELECT * FROM parts WHERE itemName LIKE 'Processors:%'";
$result = mysql_query($query) or die("Unable to query parts table!");
$aa     = "";

while($row = mysql_fetch_assoc( $result ) ) 
{
    $labelCPU = explode(':',str_replace('_',' ',$row['itemName']));
    $labelCPU = $labelCPU[1]; // this is what you're missing
    $aa .= "<option value='{$row['partID']}'>$labelCPU</option>";
}
?>
<select name="cpu"><? echo $aa; ?></select>

幸運を!

于 2013-04-08T15:45:22.940 に答える