Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP从数组生成下拉列表,将行项与MySQL条目匹配_Php_Mysql - Fatal编程技术网

使用PHP从数组生成下拉列表,将行项与MySQL条目匹配

使用PHP从数组生成下拉列表,将行项与MySQL条目匹配,php,mysql,Php,Mysql,很久以前,为了一个学校项目,我为一个家庭朋友拥有的小企业创建了一个网站。由于我学到了一些新东西,我想改进代码(因为在代码变得非常难看之前),我有一个网站的管理页面,所有者可以在其中单独编辑每个库存项目。它是一家汽车经销商,因此有很多品牌、型号、颜色等下拉选项,而不是像这样在下拉菜单中生成所选项目 echo "<tr>\n"; echo "<td class='viewLefthead'><strong&

很久以前,为了一个学校项目,我为一个家庭朋友拥有的小企业创建了一个网站。由于我学到了一些新东西,我想改进代码(因为在代码变得非常难看之前),我有一个网站的管理页面,所有者可以在其中单独编辑每个库存项目。它是一家汽车经销商,因此有很多品牌、型号、颜色等下拉选项,而不是像这样在下拉菜单中生成所选项目

                echo "<tr>\n";
                echo "<td class='viewLefthead'><strong>Body Style:</strong></td>\n";
                echo "<td class='viewRighthead2'><select name='bodytype'>\n";

            echo "<option value='Convertible'";
                if($myrow['bodytype']=="Convertible") { echo " selected='selected'"; }
                echo ">Convertible</option>\n";
            echo "<option value='Coupe'";
                if($myrow['bodytype']=="Coupe") { echo " selected='selected'"; }
                echo ">Coupe</option>\n";
            echo "<option value='Hatchback'";
                if($myrow['bodytype']=="Hatchback") { echo " selected='selected'"; }
                echo ">Hatchback</option>\n";
            echo "<option value='Sedan'";
                if($myrow['bodytype']=="Sedan") { echo " selected='selected'"; }
                echo ">Sedan</option>\n";
            echo "<option value='SUV'";
                if($myrow['bodytype']=="SUV") { echo " selected='selected'"; }
                echo ">SUV</option>\n";
            echo "<option value='Truck'";
                if($myrow['bodytype']=="Truck") { echo " selected='selected'"; }
                echo ">Truck</option>\n";
            echo "<option value='Van/Minivan'";
                if($myrow['bodytype']=="Van/Minivan") { echo " selected='selected'"; }
                echo ">Van/Minivan</option>\n";
            echo "<option value='Wagon'";
                if($myrow['bodytype']=="Wagon") { echo " selected='selected'"; }
                echo ">Wagon</option>\n";

                echo "</select></td>\n";
                echo "</tr>\n";
echo“\n”;
回声“主体样式:\n”;
回音“\n”;
回显“可转换”\n;
回声“Coupe\n”;
回显“掀背车”\n;
echo“Sedan\n”;
回显“SUV\n”;
回显“卡车”\n;
echo“厢式货车/小型货车\n”;
回显“货车”\n;
回音“\n”;
回音“\n”;
我调用一个函数,该函数从数组中获取选项

    echo "</tr>\n";
    echo "<tr>\n";
    echo "<td class='viewLefthead'><strong>Body Style:</strong></td>\n";
    echo "<td class='viewRighthead2'>";
    createDropdown($bodytype_options, 'bodytype', $bodytype); 
    echo "</td>\n";
    echo "</tr>\n";
echo“\n”;
回音“\n”;
回声“主体样式:\n”;
回声“;
createDropdown($bodytype_选项,$bodytype',$bodytype);
回音“\n”;
回音“\n”;
是这样设置的

       // INVENTORY ARRAYS

       $color_options = array('Black', 'Blue', 'Bronze', 'Brown', 'Gold', 'Gray', 'Green', 'Purple', 'Red', 'Silver', 'Tan', 'White', 'Yellow');

       $bodytype_options = array('Convertible', 'Coupe', 'Hatchback', 'Sedan', 'SUV', 'Truck', 'Van/Minivan', 'Wagon');

       $make_options = array('Acura', 'Aston Martin', 'Audi', 'Bentley', 'BMW', 'Buick', 'Cadillac', 'Chevrolet', 'Chrysler', 'Dodge', 'Ferrari', 'Ford', 'Geo', 'GMC', 'Honda', 'Hummer', 'Hyundai', 'Infiniti', 'Isuzu', 'Jaguar', 'Jeep', 'Kia', 'Lamborghini', 'Land Rover', 'Lexus', 'Lincoln', 'Lotus', 'Maserati', 'Mazda', 'Mercedes-Benz', 'Mercury', 'MG', 'Mini', 'Mitsubishi', 'Nissan', 'Oldsmobile', 'Plymouth', 'Pontiac', 'Porsche', 'Ram', 'Rolls-Royce', 'Saab', 'Saturn', 'Scion', 'Smart', 'Subaru', 'Suzuki', 'Toyota', 'Volkswagen', 'Volvo');

       function createDropdown($array, $name, $selected) {
          echo "<select name=\"{$name}\">";
          foreach ($array as $key => $value) {
             $select  = array_search($selected, $array);
             $select .= " select='selected'";
             echo "<option value=\"{$value}\"{$select}>{$value}</option>\n";
          }
          echo '</select>';
       }
//清单数组
$color_options=数组(“黑色”、“蓝色”、“青铜色”、“棕色”、“金色”、“灰色”、“绿色”、“紫色”、“红色”、“银色”、“棕褐色”、“白色”、“黄色”);
$bodytype_options=阵列(“敞篷车”、“双门轿车”、“掀背车”、“轿车”、“SUV”、“卡车”、“厢式/小型货车”、“货车”);
$make_options=array(‘Acura’、‘阿斯顿马丁’、‘奥迪’、‘宾利’、‘宝马’、‘别克’、‘凯迪拉克’、‘雪佛兰’、‘克莱斯勒’、‘道奇’、‘法拉利’、‘福特’、‘Geo’、‘GMC’、‘本田’、‘悍马’、‘现代’、‘英菲尼迪’、‘五十铃’、‘捷豹’、‘吉普’、‘起亚’、‘兰博基尼’、‘路虎’、‘雷克萨斯’、‘林肯’、‘莲花’、‘玛莎拉蒂’、‘马自达’、‘“日产”、“奥兹莫比尔”、“普利茅斯”、“庞蒂亚克”、“保时捷”、“Ram”、“劳斯莱斯”、“萨博”、“土星”、“Scion”、“Smart”、“斯巴鲁”、“铃木”、“丰田”、“大众”、“沃尔沃”);
函数createDropdown($array、$name、$selected){
回声“;
foreach($key=>$value的数组){
$select=array\u search($selected,$array);
$select.=“select='selected'”;
回显“{$value}\n”;
}
回声';
}

我的问题是,即使所有选项都正确显示,它们也都显示为选中。例如,最近的条目是一辆轿车,但在编辑页面上它显示了一辆马车,在HTML中,所有下拉项都有select=“selected”

,这是因为您无条件地将其应用于所有选项

if($value==$selected) {
    $select .= " select='selected'";
}

看起来您只需将
$selected
$value
进行比较,即可确定是否设置
selected
属性:

   function createDropdown($array, $name, $selected) {
      echo "<select name=\"{$name}\">";
      foreach ($array as $key => $value) {
         // Test if `$selected == $value`
         if ($selected == $value) {
             $select = " selected='selected'";
         }
         else $select = "";
         echo "<option value=\"{$value}\"{$select}>{$value}</option>\n";
      }
      echo '</select>';
   }
function createDropdown($array、$name、$selected){
回声“;
foreach($key=>$value的数组){
//测试`$selected==$value`
如果($selected==$value){
$select=“selected='selected'”;
}
else$select=“”;
回显“{$value}\n”;
}
回声';
}

这会让你工作得很好

/* Get HTML select dropdown from array data */
function generateDropdown($name, $data, $key_column, $value_column, $selector_text = null, $args = array(), $selected_key = null){
    if(!($name && $data && $key_column && $value_column)){return "Invalid params";}

    $select_args = '';
    if(count($args)>0){
        foreach($args as $k=>$v){
            $select_args .= ' '.$k;
            if($v!='') $select_args .= '='.'"'.$v.'" ';
        }
    }
    $html = "<select name=".$name." ".$select_args.">";
    if($selector_text)
        $html .= "<option value='' disabled>".$selector_text."</option>";
    foreach($data as $k=>$v){
        $html .= "<option value='".$v[$key_column]."' ".($selected_key == $v[$key_column] ? 'selected':'') .">".$v[$value_column]."</option>";
    }
    $html .= "</select>";
    return $html;
}
/*从数组数据中获取HTML选择下拉列表*/
函数generateDropdown($name、$data、$key\u column、$value\u column、$selector\u text=null、$args=array(),$selected\u key=null){
如果(!($name&&$data&&$key_列&&$value_列)){返回“无效参数”;}
$select_args='';
如果(计数($args)>0){
foreach($k=>v的参数){
$select_args.=''.$k;
如果($v!='')$select_args.=''''.$v'.';
}
}
$html=“”;
如果($selector_text)
$html.=''.$selector_text.'';
foreach($k=>v的数据){
$html.=''.$v[$value_列]。'';
}
$html.=”;
返回$html;
}