0
while($row = mysql_fetch_array($result))

//Template for each card in search result
{
echo '<div class="sleeve">';
echo '<div class="card ', $row['name'], '">';
    echo '<div class="front face">';
        echo '<img src="/', $row['cardset'], '/', $row['name'], $row['altart'], '.jpg"', ' alt="', $row['name'], '" />';
    echo '</div>';
    echo '<div class="back face">';
        echo '<a id="name">', $row['name'], '</a><br/>';
        echo '<form name="info" action="">';
        echo '<select name="set">';
            //while???
            echo '<option value="Zendikar">', $row['sets'],'</option>';
        echo '</select>';
        echo 'Foil:<input type="checkbox" name="foil" value="true"/><br/>';
        echo '<select name="condition">';
            echo '<option value="Near Mint">Mint</option>';
            echo '<option value="Played">Played</option>';
            echo '<option value="Damaged">Damaged</option>';
        echo '</select>';
        echo 'Trade:<input type="checkbox" name="trade" value="true"/ <br/>';
        echo '</form>';
        echo '<b>Rulings:</b> <br/>';
        echo $row['rulings'];
    echo '</div>';
echo '</div>';
echo '</div>';
}

//その間???あのごちゃごちゃした反響でわかりにくいかもしれませんが、対処法がわからない部分があります。PHP は情報の行を取得し、適切に入力します。画面いっぱいに情報の小さなボックスが表示されます。

対処方法がわからないこのセクションでは、行の 1 つのデータに、毎回 (, ) で区切られた複数のもの (thing1、thing2、thing3) が含まれています。私は新しい事でそれらのそれぞれが必要です1

それで、各カード内に別の while ループがあるような気がしますか?

4

5 に答える 5

3

あなたはループで正しい軌道に乗っています。コンマ区切り文字に基づいて、文字列を配列に分解する次のようなものを試してくださいexplode()

echo '<select name="set">';
foreach( explode( ',', $row['sets']) as $item)
    echo '<option>', $item, '</option>';
echo '</select>';
于 2012-09-06T15:59:45.533 に答える
2

//while 行と次の行の代わりに、文字列を配列に展開した後に foreach ステートメントが必要になる可能性があります。

foreach (explode(',', $row['sets']) as $value)
  echo '<option value="', $value, '">', $value,'</option>';

実際には各行に別の値があると思いますが (1 つは表示され、もう 1 つは設定する実際の値です)、文字列は "(key1=value1, key2=value2)" のようになります。次に、もう少し作業が必要ですが、アイデアは得られます。お役に立てれば。

于 2012-09-06T16:04:40.137 に答える
1

explodeはい、最初にその行を配列にする必要があります

$list_of_things = explode(",", $row['whatever']);

whileまたはforeach:

$thing_options = '';
foreach($list_of_things as $thing)
    $thing_options .= "<option>$thing</option>";

here ドキュメントの構文も役立つ場合があります。

print <<<TEMPLATE
<div class="sleeve">
    <div class="card {$row['name']}">
    <div class="front face">
        <img src="/{$row['cardset']}/{$row['name']}{$row['altart']}.jpg"
           alt="{$row['name']}" />
    </div>
    <div class="back face">
        <a id="name">{$row['name']}</a>
        <br/>
        <form name="info" action="">
        <select name="set">
            {$thing_options}
            <option value="Zendikar">{$row['sets']}</option>
        </select>
        ...
TEMPLATE;
于 2012-09-06T15:59:59.917 に答える
1

配列に対する答えはすべてexplode()正しいですが、コンマ区切りの値で埋められた db 列を持つことは、データベースが正規化されていないという症状だと思わずにはいられません。データベース正規化の概要については、次のリンクを確認してください: http://mikehillyer.com/articles/an-introduction-to-database-normalization/

HTML をエコーアウトしないこともお勧めします。理想的には、PHP スクリプトは次のパターンに従う必要があります。

データベース クエリやフォーム処理など、すべての PHP 処理を事前に行います。結果は変数に格納する必要があります。

| |
| |
| |

echoステップ 1 の変数に保存した結果を実際に表示するのに十分な表示ロジック (if/else、ループ、) を備えた、ほぼ純粋な HTML テンプレート/ビュー。

PHP を頭脳に、HTML を美しさにすると、デバッグや編集がずっと簡単になることがわかるでしょう。マークアップとスタイルを分離する必要があるのと同じように、スクリプトと表示についても同じことが言えます。

于 2012-09-06T16:07:55.043 に答える
0

PHP のexplode-methodを使用して、カンマ区切りの文字列を値に分割し、その配列を foreach ループで処理できます。

$raw = "one,two,three";
$values = explode("," $raw);
foreach($values as $value) {
    echo $value;
}
于 2012-09-06T16:00:11.100 に答える