Fix: select list on external table

This commit is contained in:
Laurent Destailleur
2013-09-02 00:34:41 +02:00
parent 8cd1563f58
commit 51cc957b97

View File

@@ -683,9 +683,9 @@ class ExtraFields
} }
elseif ($type == 'sellist') elseif ($type == 'sellist')
{ {
$out='<select class="flat" name="options_'.$key.'">'; $out='<select class="flat" name="options_'.$key.'">';
if (is_array($param['options'])) { if (is_array($param['options']))
{
$param_list=array_keys($param['options']); $param_list=array_keys($param['options']);
$InfoFieldList = explode(":", $param_list[0]); $InfoFieldList = explode(":", $param_list[0]);
@@ -696,38 +696,38 @@ class ExtraFields
$keyList='rowid'; $keyList='rowid';
if (count($InfoFieldList)>=3) if (count($InfoFieldList)>=3)
$keyList=$InfoFieldList[2].' as rowid'; $keyList=$InfoFieldList[2].' as rowid';
if (count($InfoFieldList)>=4) { if (count($InfoFieldList)>=4) {
list($parentName, $parentField) = explode('|', $InfoFieldList[3]); list($parentName, $parentField) = explode('|', $InfoFieldList[3]);
$keyList.= ', '.$parentField; $keyList.= ', '.$parentField;
} }
$fields_label = explode('|',$InfoFieldList[1]); $fields_label = explode('|',$InfoFieldList[1]);
if(is_array($fields_label)) { if(is_array($fields_label)) {
$keyList .=', '; $keyList .=', ';
$keyList .= implode(', ', $fields_label); $keyList .= implode(', ', $fields_label);
} }
$fields_label = explode('|',$InfoFieldList[1]); $fields_label = explode('|',$InfoFieldList[1]);
if(is_array($fields_label)) { if(is_array($fields_label)) {
$keyList .=', '; $keyList .=', ';
$keyList .= implode(', ', $fields_label); $keyList .= implode(', ', $fields_label);
} }
$sql = 'SELECT '.$keyList; $sql = 'SELECT '.$keyList;
$sql.= ' FROM '.MAIN_DB_PREFIX .$InfoFieldList[0]; $sql.= ' FROM '.MAIN_DB_PREFIX .$InfoFieldList[0];
//$sql.= ' WHERE entity = '.$conf->entity; //$sql.= ' WHERE entity = '.$conf->entity;
print $sql;
dol_syslog(get_class($this).'::showInputField type=sellist sql='.$sql); dol_syslog(get_class($this).'::showInputField type=sellist sql='.$sql);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql)
{ {
$out.='<option value="0">&nbsp;</option>'; $out.='<option value="0">&nbsp;</option>';
$num = $this->db->num_rows($resql); $num = $this->db->num_rows($resql);
$i = 0; $i = 0;
if ($num) while ($i < $num)
{ {
$labeltoshow=''; $labeltoshow='';
$obj = $this->db->fetch_object($resql); $obj = $this->db->fetch_object($resql);
@@ -764,16 +764,18 @@ class ExtraFields
$translabel=$langs->trans($obj->$InfoFieldList[1]); $translabel=$langs->trans($obj->$InfoFieldList[1]);
if ($translabel!=$obj->$InfoFieldList[1]) { if ($translabel!=$obj->$InfoFieldList[1]) {
$labeltoshow=dol_trunc($translabel,18); $labeltoshow=dol_trunc($translabel,18);
}else { }
else {
$labeltoshow=dol_trunc($obj->$InfoFieldList[1],18); $labeltoshow=dol_trunc($obj->$InfoFieldList[1],18);
} }
if (empty($labeltoshow)) $labeltoshow='(not defined)';
if ($value==$obj->rowid) if ($value==$obj->rowid)
{ {
$out.='<option value="'.$obj->rowid.'" selected="selected">'.$labeltoshow.'</option>'; $out.='<option value="'.$obj->rowid.'" selected="selected">'.$labeltoshow.'</option>';
} }
if(!empty($InfoFieldList[3])) { if (!empty($InfoFieldList[3]))
{
$parent = $parentName.':'.$obj->{$parentField}; $parent = $parentName.':'.$obj->{$parentField};
} }
@@ -781,9 +783,9 @@ class ExtraFields
$out.= ($value==$obj->rowid?' selected="selected"':''); $out.= ($value==$obj->rowid?' selected="selected"':'');
$out.= (!empty($parent)?' parent="'.$parent.'"':''); $out.= (!empty($parent)?' parent="'.$parent.'"':'');
$out.='>'.$labeltoshow.'</option>'; $out.='>'.$labeltoshow.'</option>';
$i++;
} }
$i++;
} }
$this->db->free(); $this->db->free();
} }