$v)
{
if (array_search($k, $key) == "PRIMARY KEY")
$debut = "
Insertion d'un $k dans la table $table
";
else
{
ereg("^ *([A-Za-z]+) *(\(([^)]+)\))?(.*DEFAULT *'(.*)')?", $v, $m);
$type = $m[1];
$s = ($m[5] ? " value='$m[5]' " : '');
$t = $m[3];
if ($m[2])
{
if (is_numeric($t)) {
if ($t <= 32)
$s .= " sizemax='$t' size='" . ($t * 2) . "'";
else $type = 'BLOB';
}
else {ereg("^ *'?(.*[^'])'? *$", $t, $m2); $t = $m2[1];}
}
switch (strtoupper($type))
{
case INT:
case INTEGER:
case BIGINT:
case CHAR:
case VARCHAR:
case TINYTEXT:
case TINYBLOB:
$s = " | \n";
break;
case ENUM:
$s = " | \n";
break;
case DATETIME:
$s = '';
$hiddens .= "\n";
break;
case TIMESTAMP:
$s = '';
break;
case LONGBLOB:
$s = " | \n";
break;
default:
$t = floor($t / 64)+1;
$s = " | \n"; break;
}
if ($s)
$total .= "| $k | \n$s
\n";
}
}
return
generer_url_post_ecrire('inserer', "table=$table&serveur=$serveur&mode=$mode") .
"\n" .
$debut .
$total .
"
$hiddens";
}
function table_extra_post($table, $serveur)
{
unset($_POST['table']);
unset($_POST['serveur']);
unset($_POST['mode']);
unset($_POST['exec']);
$n = array();
$i = array();
foreach ($_POST as $k => $v)
{ if ($v && ($v != 'NOW()')) $v = "'" . addslashes($v) . "'";
if ($v)
{ $n[] = $k; $i[] = $v;}
}
$r = spip_abstract_insert($table,
"(" . join(', ', $n) . ")",
"(" . join(', ', $i) . ")",
$serveur);
return "Insertion dans la table $table " .
(!$r ? '' : ("sous le numero: $r"));
}
function exec_inserer_dist()
{
global $table_prefix;
$table =_request('table');
$serveur = _request('serveur');
$mode = _request('mode');
if ($mode)
echo "";
else
{
include_spip('inc/presentation');
debut_page('tablextra', 'insertion', 'rubriques');
debut_grand_cadre();
fin_grand_cadre();
debut_gauche();
debut_droite();
debut_cadre_formulaire();
}
if (!preg_match('/^[\w_]+$/', $table)) {
echo "'$table': nom incorrect";
exit;
}
$table2 = "";
$description = spip_abstract_showtable($table, $serveur);
if (!$description) {
$table2 = $table_prefix.'_'. $table;
$description = spip_abstract_showtable($table2, $serveur);
}
spip_log("descripiont $description");
$field = $description['field'];
$key = $description['key'];
if (! ($field && $key))
echo "Le paramètre table (valeur: '" .
$table .
"') n'indique pas une table exploitable par le serveur SQL $serveur";
else
{
if ($table2) $table = $table2;
if ($_SERVER['REQUEST_METHOD'] == 'POST')
echo table_extra_post($table, $serveur);
else
{
echo table_extra_get($table, $serveur, $field, $key);
}
}
if ($mode)
{
fin_cadre_formulaire();
fin_page();
}
else "";
}
?>