0

PHPを介してデータベースから変数をエコーするという概念を理解するのに苦労しています。文字列形式で変数を取得する代わりに、整数を取得します。選択ボックスからカテゴリ文字列変数を表示するにはどうすればよいですか?

ここに私のデータベースの情報があります:

CREATE TABLE `category` (
   `c_id` tinyint(4) not null auto_increment,
   `category` varchar(30) not null,
   PRIMARY KEY (`c_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5;

INSERT INTO `category` (`c_id`, `category`) VALUES ('1', 'Animals >');
INSERT INTO `category` (`c_id`, `category`) VALUES ('2', 'Humans >');
INSERT INTO `category` (`c_id`, `category`) VALUES ('3', 'Technology >');
INSERT INTO `category` (`c_id`, `category`) VALUES ('4', 'Oceans >');
INSERT INTO `category` (`c_id`, `category`) VALUES ('5', 'Desert >');
INSERT INTO `category` (`c_id`, `category`) VALUES ('6', 'Jungles >');

これが私のphpです:

<select name="category" size="6" onChange="autoSubmit();">
        <?php

        //POPULATE DROP DOWN MENU WITH CATEGORIES
        $conn = new PDO($DSN, $USERNAME, $PASSWORD);
        $sql = "SELECT * FROM category ORDER BY c_id";

        while($row = mysql_fetch_array($categories))
        {        
            echo ("<option value=\"$row[c_id]\" " . ($category == $row["c_id"] ? " selected" : "") . ">$row[category]</option>");        
        }

        ?>


    <option value="1" <?php if($category == 1) echo " selected"; ?>><? echo $category; ?></option>
    <option value="2" <?php if($category == 2) echo " selected"; ?>><? echo $category; ?></option>
    <option value="3" <?php if($category == 3) echo " selected"; ?>><? echo $category; ?></option>
    <option value="4" <?php if($category == 4) echo " selected"; ?>><? echo $category; ?></option>
    <option value="5" <?php if($category == 5) echo " selected"; ?>><? echo $category; ?></option>
    <option value="6" <?php if($category == 6) echo " selected"; ?>><? echo $category; ?></option>
    </select>
4

4 に答える 4

4

(回答へのアップグレード)

  1. タグは、PHP コードブロックの<select></select>両側に配置する必要があります。
  2. WHERESQL から句を削除する必要があります。と
  3. <option>..</option>コードはすべて PHP によって構築/出力されるため、手動でコードを含める必要はありません。

たとえば、PDO を使用すると、次のようになります。

<select name="category" size="6" onChange="autoSubmit();">
<?php
  $dbh = new PDO($DSN, $USERNAME, $PASSWORD);
  $qry = $dbh->query('SELECT * FROM category ORDER BY c_id');

  while ($row = $qry->fetch()) {
    echo '<option value="' . $row['c_id'] . '"';
    if ($row['c_id'] == $category) echo ' selected';
    echo '>' . htmlentities($row['category']) . '</option>'
  }
?>
</select>
于 2012-05-26T07:54:54.207 に答える
2

これはあなたを助け、eggyalが言及した3番目のポイントを覚えているかもしれません

3) .. コードはすべて PHP によって構築/出力されるため、手動で含める必要はありません。

<select name="category" size="6" onChange="autoSubmit();">
        <?php

        //POPULATE DROP DOWN MENU WITH CATEGORIES
        $dbh = new PDO($DSN, $USERNAME, $PASSWORD);
        $qry = $dbh->query('SELECT * FROM category ORDER BY c_id');

        while ($row = $qry->fetch()) {
        {        
            if($row[c_id] == $category)
                $selected = "selected=\"selected\"";            
            echo ("<option value=\"{$row['c_id']}\" {$selected}>{$row['category']}</option>");        
        }
        ?>
于 2012-05-26T08:26:36.580 に答える
2

サンプルのデータセットを使用した式は次のとおりです。

  1. データベースに接続し、クエリを準備します ( PDO 拡張機能を使用):

    $dbh = new PDO('mysql:host=localhost;dbname=my_database', $user, $pass);
    $query = 'SELECT `c_id`, `category` FROM `category`';
    
  2. クエリを実行し、それをPHP 配列にプッシュします。

    foreach ($dbh->query($query) as $row) {
        $categories[$row['c_id']] = $row['category'];
    }
    
  3. 配列をループしてHTML を出力します。

    <?php $my_selected_category = 3; ?>
    <select name="category" size="6" onChange="autoSubmit();">
        <?php foreach($categories as $id => $name) { ?>
        <option value="<?php echo $id; ?>" <?php echo $id == $my_selected_category ? 'selected="selected"' : ''; ?>><?php echo $name; ?></option>
        <?php } ?>
    </select>
    

    条件付きで echo を実行するために、制御構造の代わりに三項演算子を使用したことに注意してください。状況によっては、オペレーターがあなたの生活を楽にしてくれるかもしれません。if-elseselected="selected"

于 2012-05-26T08:27:24.600 に答える
1

問題が 1 つあります。これがあなたの質問かどうかわかりませんか? これは、「選択された」ビットを行う方法です。

<option value="1" <?php if($category == 1) echo ' "selected=selected"'; ?>><? echo $category; ?></option>

しかし、詳細を知るために $category 変数を割り当てるコードを見る必要があります

于 2012-05-26T07:54:41.780 に答える