/** * kreas novan datumbaztabelon. * * @param string $tabelnomo * @param array $kamporeguloj array() el array(), pri kies * formato vidu ĉe {@link donu_kampo_sql()}. * @param array $sxlosiloj listo de ŝlosiloj/indeksoj. De la formo * nomo => detaloj, * kie 'nomo =>' povas esti forlasita (por lasi la sistemon * mem krei la nomon). * La nomo 'primary' indikas la ĉefan ŝlosilon. * Se tiu ne estas donita, ni kreas la ĉefan ŝlosilon el "(`ID`)". * * detaloj povas esti ĉeno (nomo de kolumno) * aŭ array de tiaj nomoj. En la lasta kazo, se * detaloj[0] == 'index', ĝi estos forprenita * kaj indikas, ke ni havas ne-unikan indekson. * @param string $komento * @param string $tipo se donita, alia ol la defauxlta tabeltipo * (ekzemple MEMORY por nur-memoraj tabeloj). */ function kreu_tabelon($tabelnomo, $kampoj, $sxlosiloj = null, $komento = "", $tipo = null) { $sql = "CREATE TABLE IF NOT EXISTS `" . traduku_tabelnomon($tabelnomo) . "` (\n "; $sqlkampoj = array(); foreach ($kampoj as $kampopriskribo) { $sqlkampoj[] = donu_kampo_sql($kampopriskribo, $tabelnomo); } $primary = "ID"; if (!$sxlosiloj) { $sxlosiloj = array(); } foreach ($sxlosiloj as $nomo => $valoro) { debug_echo("<!-- nomo: " . $nomo . ", valoro: " . var_export($valoro, true) . " -->"); if ('primary' === $nomo) { debug_echo("<!-- primary! -->"); if (is_array($valoro)) { $primary = implode('`, `', $valoro); } else { $primary = $valoro; } } else { $unique = true; if (is_array($valoro)) { if ($valoro[0] == 'index') { $unique = false; array_shift($valoro); } $valoro = implode('`, `', $valoro); } debug_echo("<!-- valoro: " . var_export($valoro, true) . " -->"); $sxlosilfrazo = ($unique ? "UNIQUE KEY " : "KEY ") . (is_int($nomo) ? '' : "`{$nomo}` ") . "(`" . $valoro . "`)"; $sqlkampoj[] = $sxlosilfrazo; } } debug_echo("<!-- sqlkampoj: " . var_export($sqlkampoj, true) . "-->"); $sqlkampoj[] = "PRIMARY KEY (`{$primary}`)"; $sql .= implode(",\n ", $sqlkampoj); $sql .= "\n) "; if (CHARSET_DB_SUPPORT) { $sql .= "DEFAULT CHARSET=utf8 COLLATE=utf8_esperanto_ci "; } if ($tipo) { $sql .= "\n TYPE='" . $tipo . "'"; } if ($komento) { $sql .= "\n COMMENT='" . addslashes($komento) . "'"; } $sql .= ";\n"; // TODO faru_SQL($sql); }
<pre> <? switch($_REQUEST['sendu']) { case 'uzanto': faru_SQL(datumbazaldono("entajpantoj", array("nomo" => $_POST['nomo'], "kodvorto" => $_POST['kodvorto'], "vidi" => "J", "administri" => "J", "teknikumi" => "J"))); break; case 'renkontigxo': faru_SQL(datumbazaldono("renkontigxo", array('nomo' => $_POST['nomo'], 'mallongigo' => $_POST['mallongigo'], 'kotizosistemo' => 1, ))); break; } ?></pre> <form id="uzanto" method="POST" action="uzanto_renkontigxo.php"> <h2>Uzanto</h2> <p>Kreas unuan uzanton. (Pliajn poste eblas krei ene de la programo per "grava administrado".)</p> <table> <?php tabelentajpejo("uzantnomo", "nomo", "", 20, "Salutnomo de la uzanto"); tabelentajpejo("pasvorto", "kodvorto", "", 20, "Pasvorto por ensaluti", "", "", "j");
/** * eldonas la restantajn liniojn, kiuj ankoraŭ * estas en la memoro. * * Faras nenion, se tiaj ne estas. */ function faru() { if (count($this->kolektitajxoj)) { $sql = $this->komenca_sql . implode($this->interliniajxo, $this->kolektitajxoj) . " ;\n"; faru_SQL($sql); $this->reset(); } }