1

在网上阅读和查找后,我仍然不知道如何解决我的问题。我不可能这样做:

$select=mysql_query("select * from products_list categories where id='3'");
while($row=mysql_fetch_array($select)){

echo "whatever fields that I want to display onto the form before category field";

$select=mysql_query("select * from categories ORDER BY id ASC");
while($row=mysql_fetch_array($select)){

echo "compare with the result in categories table and select the option if it's true";

}
}

我对吗?

目前我在数据库 products_list 和类别中有 2 个表。

表 products_list 包含许多字段:ID、代码、价格、类别、状态等...

表类别只有:ID、类别(此表仅包含所有可用的类别选项集)

我有一个更新/编辑表单,我使用 select 语句并从 Table products_list 中获取用户之前保存所有数据的所有结果。

在表单本身的类别部分下是一个多选列表框。

我现在的问题是:

  1. 将 Table products_list 中的所有结果显示到更新/编辑表单上
  2. 将表格类别中的所有类别选项显示到更新/编辑表单(列表框)
  3. 比较用户在表 products_list 中保存的类别并选择列表框上显示的选项(这是第 2 个问题)

我真的需要很多帮助,因为我以前从未这样做过,也不知道在线阅读这些文章或线程会发生什么。希望你们能理解我的问题。提前致谢。

当前更新了编码,但仍然卡住:

$result2= mysql_query("SELECT category FROM categories ORDER BY id ");
$all_cat = array();
while($row2 = mysql_fetch_assoc($result2)) { 
    $all_cat[] = $row2['category'];
}

//dropdownlist query
$query="SELECT * from products_list where id='100'";
$result = mysql_query ($query);

//populate the dropdownlist

while($row = mysql_fetch_assoc($result)) { 

  $sel_cats = explode(",", $row['category']);
  //determine if the category is selected
  foreach ($sel_cats as $sel_cat){

  $selected = '';

  if ($sel_cat == $all_cat ){
           $selected =' selected="selected" ';
           break;
        }

  }

    foreach($all_cat as $i => $value)
    {
     echo  '<option value="' . $value. '"' . $selected . '>'.$value.'</option>\n';
    }

}
4

4 回答 4

1
// get all product, assuming the saved category is cat column in product_list table
$result2= mysql_query("SELECT * from products_list where id='3'");
$row2 = mysql_fetch_assoc($result2);
$sel_cat =$row2['cat'];

//dropdownlist query
$query="SELECT cat,id FROM categories ORDER BY id ";
$result = mysql_query ($query);


//populate the dropdownlist
while($row = mysql_fetch_assoc($result)) { 
      //determine if the category is selected
      $selected = ($row['id '] == $sel_cat ) ? ' selected="selected" ' : NULL;
      echo  '<option value="' . $row['id']. '"' . $selected . '>'.$row['cat'].'</option>\n';
}

对于以串联字符串格式保存的类别。例如:黑色,白色,红色

 // get all product, assuming the saved category is cat column in product_list table
    $result2= mysql_query("SELECT * from products_list where id='3'");
    $row2 = mysql_fetch_assoc($result2);
    $sel_cats = explode(',', $row2['cat']);

    //dropdownlist query
    $query="SELECT cat,id FROM categories ORDER BY id ";
    $result = mysql_query ($query);


    //populate the dropdownlist
    echo '<select name="cat" size="5" multiple="multiple">';
    while($row = mysql_fetch_assoc($result)) { 
          //loop thru the sel_cat
           foreach ($sel_cats as $sel_cat){
          //determine if the category is selected
           $selected = '';
           if ($row['id '] == $sel_cat ){
               $selected =' selected="selected" ';
               break;
           }
          }
          echo  '<option value="' . $row['id']. '"' . $selected . '>'.$row['cat'].'</option>\n';

    }
    echo '</select>';
于 2012-07-31T03:48:44.737 回答
0

使用连接 sql 查询,例如,

select * from products_list, categories where product_list.id=categories.id ORDER  BY id ASC

 select * from products_list where id=1 ORDER BY id ASC LIMIT 20 
于 2012-07-31T03:42:11.400 回答
0

我不太明白你的问题,但我假设这是一个简单的 Read 语句。

  1. 只需使用 PHP echo 将您的查询结果显示为表单。
  2. 与 1 号相同
  3. 要进行比较,许多方法之一是将您的结果(类别)存储在不同的变量中。假设 $userSelectedCategory 和 $listCategory(数组),然后对 $listCategory 数组项执行循环并将其与 $userSelectedCategory 进行比较。

接下来要做什么完全取决于您。

于 2012-07-31T03:46:00.663 回答
0
$select=mysql_query(" select * from products_list where id='1' ORDER BY id ASC LIMIT 20 ");
while($row=mysql_fetch_array($select)){
$id = $row["id"]; 
echo $id;
}
于 2012-07-31T03:55:47.010 回答