/** * 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 defaŭlta 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) { if ($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); }
/** * donas SQL-esprimon por forigo el datumbazo. * * * @param array|string $restriktoj_normalaj Restrikto, kiujn kampojn ŝanĝi. * - array en la formo * kampo => valoro * <em>kampo</em> estu valida kamponomo de la tabelo, * "valoro" estu iu ajn php-valoro, kies * string-versio (+ '...') estu taŭga kiel SQL-valoro. * La funkcio ŝanĝas nur tiujn liniojn, kiuj * enhavas en la donita kampo la donitan valoron. * * - Kiam oni donas ne array(), sed nur unu valoron, * tio estas ekvivalenta al array('ID' => valoro). * @param array $restriktoj_sesio - ... * @return sqlstring */ function datumbazforigo($tabelnomo, $restriktoj_normalaj, $restriktoj_sesiaj = "") { if (!EBLAS_SKRIBI) { return "SELECT 'ne eblas sxangxi la datumbazon'"; } $sql = "DELETE FROM " . traduku_tabelnomon($tabelnomo) . " WHERE " . donu_where_kondicxon($restriktoj_normalaj, $restriktoj_sesiaj); if (DEBUG) { echo "<!-- forigo-ordono: {$sql} -->"; } return $sql; }
STARTALLOPEN = 0; //replace 0 with 1 to show the whole tree // konservu la staton PRESERVESTATE = 1; ICONPATH = 'grafikajhoj/' //change if the gif's folder is a subfolder, for example: 'images/' <? $trovitaj = array(); $patroj = array(); $nombroj = array(); ?> <? $db = konektu(); $tabelo = $agordoj["db_tabelo"]; $temp_tabelo = traduku_tabelnomon("temp_tradukoj"); $chefa = $agordoj["chefa_lingvo"]; if ($montru == "chion") { $query = "SELECT dosiero, COUNT(cheno) AS nombro FROM $tabelo WHERE iso2='$chefa' GROUP BY dosiero"; } else if ($montru == "retradukendajn") { $query = "SELECT dosiero, COUNT(cheno) AS nombro FROM $tabelo WHERE iso2='$lingvo' AND stato=1 GROUP BY dosiero"; } else if ($montru == "tradukendajn" or $montru == "ambau") { // $trad_tabelo = traduku_tabelnomon("tradukoj"); sql_faru("TRUNCATE $temp_tabelo"); // kreu liston de cxiuj esperantaj chenoj
entajpbutono(" ", numero, $numero, 20, 20, " 20 pag^oj"); entajpbutono(" ", numero, $numero, 999, 999, " c^iuj"); entajpbutono("</p><p>", kio, $kio, "sendu", sendu, "Sendu retajn konfirmilojn."); //TODO:? jau, auch dies kann man aus der DB ziehen. // [respondo de Martin:] Fällt mir im Moment nicht ein. Soll womöglich bedeuten, daß der Button nur erscheint, wenn der betreffende auch reta ausgewählt wurde. entajpbokso("<BR>", eksendu, $eksendu, P, P, "Vere eksendu ilin al la partoprenantoj. (Alikaze al " . funkciuladreso("admin") . ")"); eoecho("<br/>Atentu: Tiu c^i funkcio (amasa sendado da retmesag^oj) ankorau^ ne estas bone testita - Martin ne uzis g^in la lastaj jaroj. -- Pau^lo</p>"); entajpbokso("<p>", savu, $savu, J, J, "Savu ke vi premis/sendis en la partoprendatumoj"); entajpbokso("<BR>", sen, $sen, s, s, "malplenaj folioj</p>"); entajpbutono("<p>", 'kio', $kio, "adres", adres, "elprintu adresaron "); entajpbokso("(", 'bunta', $bunta, 'JES', 'JES', "buntan,", "kutima"); entajpbokso(" ", 'granda', $granda, 'JES', 'JES', "grandan (por korekti))"); entajpbutono("<p>", 'kio', $kio, "gepatra_permeso", "gepatra_permeso", "elprintu malplenan gepatran permesilon"); entajpbutono("(", 'perm_tipo', $perm_tipo, "ina", "ina", "ina (filino) "); entajpbutono("|", 'perm_tipo', $perm_tipo, "vira", "vira", "vira (filo) )</p>"); $dosiernomo = '../../../phplibraro/tmp/' . traduku_tabelnomon('partoprenantoj') . '.sql.gz'; if (file_exists($dosiernomo)) { $dato = "de " . date("Y-m-d H:i", filemtime($dosiernomo) . "."); } else { $dato = "ne trovebla ({$dosiernomo})!"; } entajpbutono("<p>", "kio", $kio, "backup", "backup", "Kreu sekurkopion de la datumbazo. (La lasta estas {$dato})</p>"); $dosiernomo = '../../../phplibraro/tmp/projekto-' . $tabelnomprefikso . '.sql.gz'; if (file_exists($dosiernomo)) { $dato = "de " . date("Y-m-d H:i", filemtime($dosiernomo) . "."); } else { $dato = "ne trovebla ({$dosiernomo})!"; } entajpbutono("<p>", "kio", $kio, "backup_is", "backup_is", "Kreu sekurkopion de la datumbazo (nur IS). (La lasta estas {$dato})</p>"); if (rajtas('teknikumi')) { entajpbutono("<p>", "kio", $kio, "backup_programo", "backup_programo", "Kreu sekurkopion de la programo.</p>");
if (!function_exists("konektu")) { /** * konektas al la datumbazo kaj redonas la konekto-objekton. * * @return resource MySQL-konekto-objekto. */ function konektu() { return malfermu_datumaro(); } } // require_once($GLOBALS['prafix'] ."/konfiguro/moduso.php"); // require_once($GLOBALS['prafix'] ."/konfiguro/datumaro.php"); // require_once($GLOBALS['prafix'] . "/konfiguro/opcioj.php"); // require_once($GLOBALS['prafix'] . "/iloj/iloj_sql.php"); $GLOBALS['agordoj']['db_tabelo'] = traduku_tabelnomon("tradukoj"); /* eval(' function konektu() { global $agordoj; static $result; if ($result) return $result; $result = mysql_pconnect($agordoj["db_host"], $agordoj["db_uzanto"], $agordoj["db_pasvorto"]); if (!$result) return false; if (!mysql_select_db($agordoj["db_nomo"])) return false; mysql_query("set names utf8"); return $result;
function forigu_el_datumbazo($tabelnomo, $id) { if (!EBLAS_SKRIBI) { return " SELECT 'Datenbank darf nicht geändert werden' "; } $sql = "DELETE FROM " . traduku_tabelnomon($tabelnomo) . " WHERE ID = '" . $id . "'"; if (DEBUG) { echo "<!-- forigo-ordono: {$sql} -->"; } return sql_faru($sql); }
/** * konstruilo. * @param array $kamponomoj listo de kampoj de la tabelo, * en la sama sinsekvo ili poste aperu en la linioj. * @param string $tabelnomo (abstrakta) nomo de la datumbaztabelo * tabelo. * @param int $limo maksimuma grandeco de SQL-ordono en bajtoj. * Ni kreos plurajn ordonojn, po maksimume tiom granda. * (Se unuopa linio estas jam tro granda, ĝi tamen restos * ne-dividita.) */ function SqlAldonilo($kamponomoj, $tabelnomo, $limo = 1000) { $this->kamponombro = count($kamponomoj); $this->limo = $limo; $this->komenca_sql = "INSERT INTO `" . traduku_tabelnomon($tabelnomo) . "`\n" . " (`" . implode('`, `', $kamponomoj) . "`) \n" . " VALUES \n "; $this->reset(); }