$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 ""; } ?>