modif de create_table pour pouvoir ajouter des clés

This commit is contained in:
Andre Cianfarani 2006-03-16 12:41:26 +00:00
parent 23559e09f2
commit 3e62f38411

View File

@ -333,10 +333,11 @@ class DoliDb
\param primary_key Nom du champ qui sera la clef primaire \param primary_key Nom du champ qui sera la clef primaire
\param unique_keys tableau associatifs Nom de champs qui seront clef unique => valeur \param unique_keys tableau associatifs Nom de champs qui seront clef unique => valeur
\param fulltext tableau des Nom de champs qui seront indexés en fulltext \param fulltext tableau des Nom de champs qui seront indexés en fulltext
\param key tableau des champs clés noms => valeur
\param type type de la table \param type type de la table
\return true/false selon si requête a provoqué un erreur mysql ou pas \return true/false selon si requête a provoqué un erreur mysql ou pas
*/ */
function create_table($table,$fields,$primary_key,$type,$unique_keys="",$fulltext_keys="") function create_table($table,$fields,$primary_key,$type,$unique_keys="",$fulltext_keys="",$keys="")
{ {
// clés recherchées dans le tableau des descriptions (fields) : type,value,attribute,null,default,extra // clés recherchées dans le tableau des descriptions (fields) : type,value,attribute,null,default,extra
// ex. : $fields['rowid'] = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment'); // ex. : $fields['rowid'] = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
@ -348,19 +349,23 @@ class DoliDb
$sqlfields[$i] .= $field_desc['type']; $sqlfields[$i] .= $field_desc['type'];
if( eregi("^[^ ]",$field_desc['value'])) if( eregi("^[^ ]",$field_desc['value']))
$sqlfields[$i] .= "(".$field_desc['value'].")"; $sqlfields[$i] .= "(".$field_desc['value'].")";
if( eregi("^[^ ]",$field_desc['attribute'])) else if( eregi("^[^ ]",$field_desc['attribute']))
$sqlfields[$i] .= " ".$field_desc['attribute']; $sqlfields[$i] .= " ".$field_desc['attribute'];
if( eregi("^[^ ]",$field_desc['null'])) else if( eregi("^[^ ]",$field_desc['default']))
$sqlfields[$i] .= " ".$field_desc['null']; {
if( eregi("^[^ ]",$field_desc['default']))
if(eregi("null",$field_desc['default'])) if(eregi("null",$field_desc['default']))
$sqlfields[$i] .= " default ".$field_desc['default']; $sqlfields[$i] .= " default ".$field_desc['default'];
else else
$sqlfields[$i] .= " default '".$field_desc['default']."'"; $sqlfields[$i] .= " default '".$field_desc['default']."'";
if( eregi("^[^ ]",$field_desc['extra'])) }
else if( eregi("^[^ ]",$field_desc['null']))
$sqlfields[$i] .= " ".$field_desc['null'];
else if( eregi("^[^ ]",$field_desc['extra']))
$sqlfields[$i] .= " ".$field_desc['extra']; $sqlfields[$i] .= " ".$field_desc['extra'];
$i++; $i++;
} }
if($primary_key != "")
$pk = "primary key(".$primary_key.")"; $pk = "primary key(".$primary_key.")";
if($unique_keys != "") if($unique_keys != "")
@ -372,10 +377,22 @@ class DoliDb
$i++; $i++;
} }
} }
if($keys != "")
{
$i = 0;
foreach($keys as $key => $value)
{
$sqlk[$i] = "KEY ".$key." (".$value.")";
$i++;
}
}
$sql .= implode(',',$sqlfields); $sql .= implode(',',$sqlfields);
if($primary_key != "")
$sql .= ",".$pk; $sql .= ",".$pk;
if($unique_keys != "") if($unique_keys != "")
$sql .= ",".implode(',',$sqluq); $sql .= ",".implode(',',$sqluq);
if($keys != "")
$sql .= ",".implode(',',$sqlk);
$sql .=") type=".$type; $sql .=") type=".$type;
// dolibarr_syslog($sql); // dolibarr_syslog($sql);
if(! $this -> query($sql)) if(! $this -> query($sql))