当前位置: 首页>>代码示例>>PHP>>正文


PHP sql_showtable函数代码示例

本文整理汇总了PHP中sql_showtable函数的典型用法代码示例。如果您正苦于以下问题:PHP sql_showtable函数的具体用法?PHP sql_showtable怎么用?PHP sql_showtable使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了sql_showtable函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: creer_ou_upgrader_table

/**
 * Creer une table,
 * ou ajouter les champs manquants si elle existe deja
 *
 * http://doc.spip.org/@creer_ou_upgrader_table
 *
 * @param string $table
 * @param array $desc
 * @param bool|string $autoinc
 *   'auto' pour detecter automatiquement si le champ doit etre autoinc ou non
 *   en fonction de la table
 * @param bool $upgrade
 * @param string $serveur
 * @return void
 */
function creer_ou_upgrader_table($table, $desc, $autoinc, $upgrade = false, $serveur = '')
{
    $sql_desc = $upgrade ? sql_showtable($table, true, $serveur) : false;
    if (!$sql_desc) {
        if ($autoinc === 'auto') {
            $autoinc = base_determine_autoinc($table, $desc);
        }
        sql_create($table, $desc['field'], $desc['key'], $autoinc, false, $serveur);
    } else {
        // ajouter les champs manquants
        // on ne supprime jamais les champs, car c'est dangereux
        // c'est toujours a faire manuellement
        $last = '';
        foreach ($desc['field'] as $field => $type) {
            if (!isset($sql_desc['field'][$field])) {
                sql_alter("TABLE {$table} ADD {$field} {$type}" . ($last ? " AFTER {$last}" : ""), $serveur);
            }
            $last = $field;
        }
        foreach ($desc['key'] as $key => $type) {
            // Ne pas oublier les cas des cles non nommees dans la declaration et qui sont retournees
            // par le showtable sous la forme d'un index de tableau "KEY $type" et non "KEY"
            if (!isset($sql_desc['key'][$key]) and !isset($sql_desc['key']["{$key} {$type}"])) {
                sql_alter("TABLE {$table} ADD {$key} ({$type})", $serveur);
            }
            $last = $field;
        }
    }
}
开发者ID:nursit,项目名称:SPIP,代码行数:44,代码来源:create.php

示例2: dump_afficher_tables_restaurees_erreurs

function dump_afficher_tables_restaurees_erreurs($status_file)
{
    $status = dump_lire_status($status_file);
    $tables = $status['tables_copiees'];
    $corps = "";
    $erreurs = array();
    if (!$tables) {
        return "<p>" . _T("dump:erreur_aucune_donnee_restauree") . "</p>";
    }
    // lister les tables copiees aller verifier dans la base
    // qu'on a le bon nombre de donnees
    foreach ($tables as $t => $n) {
        if (!sql_showtable($t, true) or $n === 0) {
            $erreurs[$t] = _T('dump:erreur_table_absente', array('table' => "<strong>{$t}</strong>"));
        } else {
            $n = abs(intval($n));
            $n_dump = intval(sql_countsel($t));
            if ($n_dump < $n) {
                $erreurs[$t] = _T('dump:erreur_table_donnees_manquantes', array('table' => "<strong>{$t}</strong>"));
            }
        }
    }
    if (count($erreurs)) {
        $corps = "<ul class='spip'><li>" . implode("</li><li class='spip'>", $erreurs) . "</li></ul>";
    }
    return $corps;
}
开发者ID:genma,项目名称:spip_ynh,代码行数:27,代码来源:restaurer_fonctions.php

示例3: maj_11778

function maj_11778()
{
    // si presence id_type
    $s = sql_showtable('spip_types_documents');
    if (isset($s['field']['id_type'])) {
        sql_alter('TABLE spip_types_documents CHANGE id_type id_type BIGINT(21) NOT NULL');
        sql_alter('TABLE spip_types_documents DROP id_type');
        sql_alter('TABLE spip_types_documents ADD PRIMARY KEY (extension)');
    }
}
开发者ID:nursit,项目名称:SPIP,代码行数:10,代码来源:svn10000.php

示例4: accesrestreint_upgrade

/**
 * Fonction d'installation, mise a jour de la base
 *
 * @param unknown_type $nom_meta_base_version
 * @param unknown_type $version_cible
 */
function accesrestreint_upgrade($nom_meta_base_version,$version_cible){
	$current_version = 0.0;
	if (   (!isset($GLOBALS['meta'][$nom_meta_base_version]) )
			|| (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){
		include_spip('base/acces_restreint');
		if (version_compare($current_version,'0.0','<=')){
			include_spip('base/create');
			include_spip('base/abstract_sql');
			creer_base();
			// ajout des champs publique/privee si pas existants
			$desc = sql_showtable("spip_zones", true);
			if (!isset($desc['field']['publique']))
				sql_alter("TABLE spip_zones ADD publique ENUM('non', 'oui') DEFAULT 'oui' NOT NULL AFTER descriptif");
			if (!isset($desc['field']['privee']))
				sql_alter("TABLE spip_zones ADD privee ENUM('non', 'oui') DEFAULT 'non' NOT NULL AFTER publique");
			echo "AccesRestreint Install<br/>";
			effacer_meta($nom_meta_base_version); // salade de majuscules
			ecrire_meta($nom_meta_base_version,$current_version=$version_cible,'non');
		}
		if (version_compare($current_version,'0.2','<')){
			include_spip('base/create');
			include_spip('base/abstract_sql');
			// ajout des champs publique/privee si pas existants
			$desc = sql_showtable("spip_zones", true);
			if (!isset($desc['field']['publique']))
				sql_alter("TABLE spip_zones ADD publique ENUM('non', 'oui') DEFAULT 'oui' NOT NULL AFTER descriptif");
			if (!isset($desc['field']['privee']))
				sql_alter("TABLE spip_zones ADD privee ENUM('non', 'oui') DEFAULT 'non' NOT NULL AFTER publique");
			echo "AccesRestreint@0.2<br />";
			ecrire_meta($nom_meta_base_version,$current_version='0.2','non');
		}
		if (version_compare($current_version,'0.3','<')){
			sql_alter("TABLE `zones_auteurs` DROP INDEX `id_zone`");
			sql_alter("TABLE `zones_auteurs` ADD PRIMARY KEY ( `id_zone` , `id_auteur` )");
			sql_alter("TABLE `zones_rubriques` DROP INDEX `id_zone`");
			sql_alter("TABLE `zones_rubriques` ADD PRIMARY KEY ( `id_zone` , `id_rubrique` )");
			echo "AccesRestreint@0.3<br />";
			ecrire_meta($nom_meta_base_version,$current_version='0.3','non');
		}
		if (version_compare($current_version,'0.3.0.1','<')){
			#ecrire_meta('creer_htaccess','oui');
			echo "AccesRestreint@0.3.0.1<br />";
			ecrire_meta($nom_meta_base_version,$current_version='0.3.0.1','non');
		}
		if (version_compare($current_version,'0.3.0.2','<')){
			#ecrire_meta('creer_htaccess','oui');
			sql_alter("TABLE spip_zone ALTER titre SET DEFAULT ''");
			sql_alter("TABLE spip_zone ALTER descriptif SET DEFAULT ''");
			echo "AccesRestreint@0.3.0.2<br />";
			ecrire_meta($nom_meta_base_version,$current_version='0.3.0.2','non');
		}
	}
}
开发者ID:rhertzog,项目名称:lcs,代码行数:59,代码来源:acces_restreint_install.php

示例5: creer_ou_upgrader_table

/**
 * Créer une table,
 * ou ajouter les champs manquants si elle existe déjà
 *
 * @param string $table
 * @param array $desc
 * @param bool|string $autoinc
 *   'auto' pour detecter automatiquement si le champ doit etre autoinc ou non
 *   en fonction de la table
 * @param bool $upgrade
 * @param string $serveur
 * @return void
 */
function creer_ou_upgrader_table($table, $desc, $autoinc, $upgrade = false, $serveur = '')
{
    #spip_log("creer_ou_upgrader_table table=$table autoinc=$autoinc upgrade=$upgrade","dbinstall"._LOG_INFO_IMPORTANTE);
    $sql_desc = $upgrade ? sql_showtable($table, true, $serveur) : false;
    #if (!$sql_desc) $sql_desc = false;
    #spip_log("table=$table sql_desc:$sql_desc","dbinstall"._LOG_INFO_IMPORTANTE);
    if (!$sql_desc) {
        if ($autoinc === 'auto') {
            $autoinc = base_determine_autoinc($table, $desc);
        }
        #spip_log("sql_create $table autoinc=$autoinc","dbinstall"._LOG_INFO_IMPORTANTE);
        sql_create($table, $desc['field'], $desc['key'], $autoinc, false, $serveur);
        // verifier la bonne installation de la table (php-fpm es-tu la ?)
        $sql_desc = sql_showtable($table, true, $serveur);
        #if (!$sql_desc) $sql_desc = false;
        #spip_log("Resultat table=$table sql_desc:$sql_desc","dbinstall"._LOG_INFO_IMPORTANTE);
        if (!$sql_desc) {
            // on retente avec un sleep ?
            sleep(1);
            sql_create($table, $desc['field'], $desc['key'], $autoinc, false, $serveur);
            $sql_desc = sql_showtable($table, true, $serveur);
            #if (!$sql_desc) $sql_desc = false;
            #spip_log("Resultat table=$table sql_desc:$sql_desc","dbinstall"._LOG_INFO_IMPORTANTE);
            if (!$sql_desc) {
                spip_log("Echec creation table {$table}", "maj" . _LOG_CRITIQUE);
            }
        }
    } else {
        #spip_log("sql_alter $table ... (on s'en fiche)","dbinstall"._LOG_INFO_IMPORTANTE);
        // ajouter les champs manquants
        // on ne supprime jamais les champs, car c'est dangereux
        // c'est toujours a faire manuellement
        $last = '';
        foreach ($desc['field'] as $field => $type) {
            if (!isset($sql_desc['field'][$field])) {
                sql_alter("TABLE {$table} ADD {$field} {$type}" . ($last ? " AFTER {$last}" : ""), $serveur);
            }
            $last = $field;
        }
        foreach ($desc['key'] as $key => $type) {
            // Ne pas oublier les cas des cles non nommees dans la declaration et qui sont retournees
            // par le showtable sous la forme d'un index de tableau "KEY $type" et non "KEY"
            if (!isset($sql_desc['key'][$key]) and !isset($sql_desc['key']["{$key} {$type}"])) {
                sql_alter("TABLE {$table} ADD {$key} ({$type})", $serveur);
            }
            $last = $field;
        }
    }
}
开发者ID:JLuc,项目名称:SPIP,代码行数:62,代码来源:create.php

示例6: creer_ou_upgrader_table

function creer_ou_upgrader_table($table,$desc,$autoinc,$upgrade=false,$serveur='') {
	$sql_desc = $upgrade ? sql_showtable($table,true,$serveur) : false;
	if (!$sql_desc)
		sql_create($table, $desc['field'], $desc['key'], $autoinc, false, $serveur);
	else {
		// ajouter les champs manquants
		$last = '';
		foreach($desc['field'] as $field=>$type){
			if (!isset($sql_desc['field'][$field]))
				sql_alter("TABLE $table ADD $field $type".($last?" AFTER $last":""),$serveur);
			$last = $field;
		}
		foreach($desc['key'] as $key=>$type){
			if (!isset($sql_desc['key'][$key]))
				sql_alter("TABLE $table ADD $key ($type)",$serveur);
			$last = $field;
		}

	}
}
开发者ID:rhertzog,项目名称:lcs,代码行数:20,代码来源:create.php

示例7: spip_connect

function spip_connect($serveur = '', $version = '')
{
    global $connexions, $spip_sql_version;
    $serveur = !is_string($serveur) ? '' : strtolower($serveur);
    $index = $serveur ? $serveur : 0;
    if (!$version) {
        $version = $spip_sql_version;
    }
    if (isset($connexions[$index][$version])) {
        return $connexions[$index];
    }
    include_spip('base/abstract_sql');
    $install = _request('exec') == 'install';
    // Premiere connexion ?
    if (!($old = isset($connexions[$index]))) {
        $f = !preg_match('/^[\\w\\.]*$/', $serveur) ? '' : ($serveur ? _DIR_CONNECT . $serveur . '.php' : (_FILE_CONNECT ? _FILE_CONNECT : ($install ? _FILE_CONNECT_TMP : '')));
        // installation pas faite
        unset($GLOBALS['db_ok']);
        unset($GLOBALS['spip_connect_version']);
        if ($f) {
            if (is_readable($f)) {
                include $f;
            } elseif ($serveur and !$install) {
                // chercher une declaration de serveur dans le path
                // qui pourra un jour servir a declarer des bases sqlite
                // par des plugins. Et sert aussi aux boucles POUR.
                find_in_path("{$serveur}.php", 'connect/', true);
            }
        }
        if (!isset($GLOBALS['db_ok'])) {
            // fera mieux la prochaine fois
            if ($install) {
                return false;
            }
            if ($f and is_readable($f)) {
                spip_log("spip_connect: fichier de connexion '{$f}' OK.", _LOG_INFO_IMPORTANTE);
            } else {
                spip_log("spip_connect: fichier de connexion '{$f}' non trouve", _LOG_INFO_IMPORTANTE);
            }
            spip_log("spip_connect: echec connexion ou serveur {$index} mal defini dans '{$f}'.", _LOG_HS);
            // ne plus reessayer si ce n'est pas l'install
            return $connexions[$index] = false;
        }
        $connexions[$index] = $GLOBALS['db_ok'];
    }
    // si la connexion a deja ete tentee mais a echoue, le dire!
    if (!$connexions[$index]) {
        return false;
    }
    // la connexion a reussi ou etait deja faite.
    // chargement de la version du jeu de fonctions
    // si pas dans le fichier par defaut
    $type = $GLOBALS['db_ok']['type'];
    $jeu = 'spip_' . $type . '_functions_' . $version;
    if (!isset($GLOBALS[$jeu])) {
        if (!find_in_path($type . '_' . $version . '.php', 'req/', true)) {
            spip_log("spip_connect: serveur {$index} version '{$version}' non defini pour '{$type}'", _LOG_HS);
            // ne plus reessayer
            return $connexions[$index][$version] = array();
        }
    }
    $connexions[$index][$version] = $GLOBALS[$jeu];
    if ($old) {
        return $connexions[$index];
    }
    $connexions[$index]['spip_connect_version'] = isset($GLOBALS['spip_connect_version']) ? $GLOBALS['spip_connect_version'] : 0;
    // initialisation de l'alphabet utilise dans les connexions SQL
    // si l'installation l'a determine.
    // Celui du serveur principal l'impose aux serveurs secondaires
    // s'ils le connaissent
    if (!$serveur) {
        $charset = spip_connect_main($GLOBALS[$jeu]);
        if (!$charset) {
            unset($connexions[$index]);
            spip_log("spip_connect: absence de charset", _LOG_AVERTISSEMENT);
            return false;
        }
    } else {
        // spip_meta n'existe pas toujours dans la base
        // C'est le cas d'un dump sqlite par exemple
        if ($connexions[$index]['spip_connect_version'] and sql_showtable('spip_meta', true, $serveur) and $r = sql_getfetsel('valeur', 'spip_meta', "nom='charset_sql_connexion'", '', '', '', '', $serveur)) {
            $charset = $r;
        } else {
            $charset = -1;
        }
    }
    if ($charset != -1) {
        $f = $GLOBALS[$jeu]['set_charset'];
        if (function_exists($f)) {
            $f($charset, $serveur);
        }
    }
    return $connexions[$index];
}
开发者ID:loorenzooo,项目名称:aslfc,代码行数:94,代码来源:connect_sql.php

示例8: install_etape_3b_dist

function install_etape_3b_dist()
{
    $login = _request('login');
    $email = _request('email');
    $nom = _request('nom');
    $pass = _request('pass');
    $pass_verif = _request('pass_verif');
    $server_db = defined('_INSTALL_SERVER_DB') ? _INSTALL_SERVER_DB : _request('server_db');
    if (!defined('_PASS_LONGUEUR_MINI')) {
        define('_PASS_LONGUEUR_MINI', 6);
    }
    if (!defined('_LOGIN_TROP_COURT')) {
        define('_LOGIN_TROP_COURT', 4);
    }
    if ($login) {
        $echec = $pass != $pass_verif ? _T('info_passes_identiques') : (strlen($pass) < _PASS_LONGUEUR_MINI ? _T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI)) : (strlen($login) < _LOGIN_TROP_COURT ? _T('info_login_trop_court') : ''));
        include_spip('inc/filtres');
        if (!$echec and $email and !email_valide($email)) {
            $echec = _T('form_email_non_valide');
        }
        if ($echec) {
            echo minipres('AUTO', info_progression_etape(3, 'etape_', 'install/', true) . "<div class='error'><h3>{$echec}</h3>\n" . "<p>" . _T('avis_connexion_echec_2') . "</p>" . "</div>");
            exit;
        }
    }
    if (@file_exists(_FILE_CHMOD_TMP)) {
        include _FILE_CHMOD_TMP;
    } else {
        redirige_url_ecrire('install');
    }
    if (!@file_exists(_FILE_CONNECT_TMP)) {
        redirige_url_ecrire('install');
    }
    # maintenant on connait le vrai charset du site s'il est deja configure
    # sinon par defaut lire_meta reglera _DEFAULT_CHARSET
    # (les donnees arrivent de toute facon postees en _DEFAULT_CHARSET)
    lire_metas();
    if ($login) {
        include_spip('inc/charsets');
        $nom = importer_charset($nom, _DEFAULT_CHARSET);
        $login = importer_charset($login, _DEFAULT_CHARSET);
        $email = importer_charset($email, _DEFAULT_CHARSET);
        # pour le passwd, bizarrement il faut le convertir comme s'il avait
        # ete tape en iso-8859-1 ; car c'est en fait ce que voit md5.js
        $pass = unicode2charset(utf_8_to_unicode($pass), 'iso-8859-1');
        include_spip('auth/sha256.inc');
        include_spip('inc/acces');
        $htpass = generer_htpass($pass);
        $alea_actuel = creer_uniqid();
        $alea_futur = creer_uniqid();
        $shapass = _nano_sha256($alea_actuel . $pass);
        // prelablement, creer le champ webmestre si il n'existe pas (install neuve
        // sur une vieille base
        $t = sql_showtable("spip_auteurs", true);
        if (!isset($t['field']['webmestre'])) {
            @sql_alter("TABLE spip_auteurs ADD webmestre varchar(3)  DEFAULT 'non' NOT NULL");
        }
        $id_auteur = sql_getfetsel("id_auteur", "spip_auteurs", "login=" . sql_quote($login));
        if ($id_auteur !== null) {
            sql_updateq('spip_auteurs', array("nom" => $nom, 'email' => $email, 'login' => $login, 'pass' => $shapass, 'alea_actuel' => $alea_actuel, 'alea_futur' => $alea_futur, 'htpass' => $htpass, 'statut' => '0minirezo'), "id_auteur={$id_auteur}");
        } else {
            $id_auteur = sql_insertq('spip_auteurs', array('nom' => $nom, 'email' => $email, 'login' => $login, 'pass' => $shapass, 'htpass' => $htpass, 'alea_actuel' => $alea_actuel, 'alea_futur' => $alea_futur, 'statut' => '0minirezo'));
        }
        // le passer webmestre separrement du reste, au cas ou l'alter n'aurait pas fonctionne
        @sql_updateq('spip_auteurs', array('webmestre' => 'oui'), "id_auteur={$id_auteur}");
        // inserer email comme email webmaster principal
        // (sauf s'il est vide: cas de la re-installation)
        if ($email) {
            ecrire_meta('email_webmaster', $email);
        }
        // Connecter directement celui qui vient de (re)donner son login
        // mais sans cookie d'admin ni connexion longue
        include_spip('inc/auth');
        if (!($auteur = auth_identifier_login($login, $pass)) or !auth_loger($auteur, true)) {
            spip_log("login automatique impossible {$auth_spip} {$session}" . count($row));
        }
    }
    // installer les metas
    $config = charger_fonction('config', 'inc');
    $config();
    // activer les plugins
    // leur installation ne peut pas se faire sur le meme hit, il faudra donc
    // poursuivre au hit suivant
    include_spip('inc/plugin');
    actualise_plugins_actifs();
    include_spip('inc/distant');
    redirige_par_entete(parametre_url(self(), 'etape', '4', '&'));
}
开发者ID:xablen,项目名称:Semaine14_SPIP_test,代码行数:88,代码来源:etape_3b.php

示例9: csv2auteurs_exportation

function csv2auteurs_exportation()
{
    //récupération des noms des champs
    $nom_champs = array();
    $champ_supprimer = array(0, 8, 15, 16, 17, 18, 19);
    $desc = sql_showtable('spip_auteurs', true);
    foreach ($desc[field] as $cle => $valeur) {
        $nom_champs[$cle] = "-> {$cle}";
    }
    foreach ($champ_supprimer as $cle) {
        unset($nom_champs[$cle]);
    }
    return $nom_champs;
}
开发者ID:loorenzooo,项目名称:aslfc,代码行数:14,代码来源:csv2auteurs_exportation.php

示例10: spiplistes_base_creer

/**
 * @return string
 */
function spiplistes_base_creer () {

	//spiplistes_debug_log("spiplistes_base_creer()");
	global $tables_principales;
	
	// demande a SPIP de creer les tables (base/create.php)
	include_spip('base/create');
	include_spip('base/abstract_sql');
	include_spip('base/db_mysql');
	include_spip('base/spiplistes_tables');
	creer_base();
	$descauteurs = sql_showtable('spip_auteurs_elargis',true);
	if(!isset($descauteurs['field']['spip_listes_format'])){
		// si la table spip_auteurs_elargis existe déjà
		sql_alter("TABLE spip_auteurs_elargis ADD `spip_listes_format` VARCHAR(8) DEFAULT 'non' NOT NULL");
	}
	spiplistes_log("INSTALL: database creation");

	$spiplistes_base_version = spiplistes_real_version_base_get(_SPIPLISTES_PREFIX);
	ecrire_meta('spiplistes_base_version', $spiplistes_base_version);
	spiplistes_ecrire_metas();
	
	$spiplistes_base_version = $GLOBALS['meta']['spiplistes_base_version'];

	return($spiplistes_base_version);
}
开发者ID:rhertzog,项目名称:lcs,代码行数:29,代码来源:spiplistes_init.php

示例11: base_trouver_table_dist


//.........这里部分代码省略.........
 *     - id_table : nom SPIP de la table (type de boucle)
 *                  le compilateur produit  FROM $r['table'] AS $r['id_table']
 *     - Toutes les autres informations des objets éditoriaux si la table est l'un d'eux.
 *
 *
 **/
function base_trouver_table_dist($nom, $serveur = '', $table_spip = true)
{
    static $nom_cache_desc_sql = array();
    if (!spip_connect($serveur) or !preg_match('/^[a-zA-Z0-9._-]*/', $nom)) {
        return null;
    }
    $connexion =& $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
    $objets_sql = lister_tables_objets_sql("::md5");
    // le nom du cache depend du serveur mais aussi du nom de la db et du prefixe
    // ce qui permet une auto invalidation en cas de modif manuelle du fichier
    // de connexion, et tout risque d'ambiguite
    if (!isset($nom_cache_desc_sql[$serveur][$objets_sql])) {
        $nom_cache_desc_sql[$serveur][$objets_sql] = _DIR_CACHE . 'sql_desc_' . ($serveur ? "{$serveur}_" : "") . substr(md5($connexion['db'] . ":" . $connexion['prefixe'] . ":{$objets_sql}"), 0, 8) . '.txt';
        // nouveau nom de cache = nouvelle version en memoire
        unset($connexion['tables']);
    }
    // un appel avec $nom vide est une demande explicite de vidange du cache des descriptions
    if (!$nom) {
        spip_unlink($nom_cache_desc_sql[$serveur][$objets_sql]);
        $connexion['tables'] = array();
        return null;
    }
    $nom_sql = $nom;
    if (preg_match('/\\.(.*)$/', $nom, $s)) {
        $nom_sql = $s[1];
    } else {
        $nom_sql = $nom;
    }
    $fdesc = $desc = '';
    $connexion =& $GLOBALS['connexions'][$serveur ? $serveur : 0];
    // base sous SPIP: gerer les abreviations explicites des noms de table
    if ($connexion['spip_connect_version']) {
        if ($table_spip and isset($GLOBALS['table_des_tables'][$nom])) {
            $nom = $GLOBALS['table_des_tables'][$nom];
            $nom_sql = 'spip_' . $nom;
        }
    }
    // si c'est la premiere table qu'on cherche
    // et si on est pas explicitement en recalcul
    // on essaye de recharger le cache des decriptions de ce serveur
    // dans le fichier cache
    if (!isset($connexion['tables'][$nom_sql]) and defined('_VAR_MODE') and _VAR_MODE !== 'recalcul' and (!isset($connexion['tables']) or !$connexion['tables'])) {
        if (lire_fichier($nom_cache_desc_sql[$serveur][$objets_sql], $desc_cache) and $desc_cache = unserialize($desc_cache)) {
            $connexion['tables'] = $desc_cache;
        }
    }
    if ($table_spip and !isset($connexion['tables'][$nom_sql])) {
        if (isset($GLOBALS['tables_principales'][$nom_sql])) {
            $fdesc = $GLOBALS['tables_principales'][$nom_sql];
        } elseif ($nom_sql == $nom and isset($GLOBALS['tables_principales']['spip_' . $nom])) {
            $nom_sql = 'spip_' . $nom;
            $fdesc =& $GLOBALS['tables_principales'][$nom_sql];
        } elseif (isset($GLOBALS['tables_auxiliaires'][$n = $nom]) or isset($GLOBALS['tables_auxiliaires'][$n = 'spip_' . $nom])) {
            $nom_sql = $n;
            $fdesc =& $GLOBALS['tables_auxiliaires'][$n];
        }
        # table locale a cote de SPIP, comme non SPIP:
    }
    if (!isset($connexion['tables'][$nom_sql])) {
        // La *vraie* base a la priorite
        $desc = sql_showtable($nom_sql, $table_spip, $serveur);
        if (!$desc or !$desc['field']) {
            if (!$fdesc) {
                spip_log("trouver_table: table inconnue '{$serveur}' '{$nom}'", _LOG_INFO_IMPORTANTE);
                return null;
            }
            // on ne sait pas lire la structure de la table :
            // on retombe sur la description donnee dans les fichiers spip
            $desc = $fdesc;
            $desc['exist'] = false;
        } else {
            $desc['exist'] = true;
        }
        $desc['table'] = $desc['table_sql'] = $nom_sql;
        $desc['connexion'] = $serveur;
        // charger les infos declarees pour cette table
        // en lui passant les infos connues
        // $desc est prioritaire pour la description de la table
        $desc = array_merge(lister_tables_objets_sql($nom_sql, $desc), $desc);
        // si tables_objets_sql est bien fini d'init, on peut cacher
        $connexion['tables'][$nom_sql] = $desc;
        $res =& $connexion['tables'][$nom_sql];
        // une nouvelle table a ete decrite
        // mettons donc a jour le cache des descriptions de ce serveur
        if (is_writeable(_DIR_CACHE)) {
            ecrire_fichier($nom_cache_desc_sql[$serveur][$objets_sql], serialize($connexion['tables']), true);
        }
    } else {
        $res =& $connexion['tables'][$nom_sql];
    }
    // toujours retourner $nom dans id_table
    $res['id_table'] = $nom;
    return $res;
}
开发者ID:xablen,项目名称:Semaine14_SPIP_test,代码行数:101,代码来源:trouver_table.php

示例12: spip_pg_create_view

function spip_pg_create_view($nom, $query_select, $serveur='',$requeter=true) {
	if (!$query_select) return false;
	// vue deja presente
	if (sql_showtable($nom, false, $serveur)) {
		if ($requeter) spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)");
		return false;
	}
	
	$query = "CREATE VIEW $nom AS ". $query_select;
	return spip_pg_query($query, $serveur, $requeter);
}
开发者ID:rhertzog,项目名称:lcs,代码行数:11,代码来源:pg.php

示例13: spiplistes_upgrade_base

/**
 * Mise à jour de la base de données (tables SPIP-Listes uniquement)
 *
 * @return string
 */
function spiplistes_upgrade_base (
	$spiplistes_name
	, $spiplistes_current_version
	, $spiplistes_current_version_base
	, $spiplistes_real_version_base
) {
//spiplistes_debug_log("spiplistes_upgrade_base(),);
	
	if($spiplistes_current_version_base && ($spiplistes_current_version_base >= $spiplistes_real_version_base)) {
	// La base est a jour
		return($spiplistes_current_version_base);
	}
	
	// faire la mise a jour
	spiplistes_debug_log("UPGRADING DATABASE $spiplistes_name $spiplistes_current_version_base TO $spiplistes_real_version_base");
	

	// 'version_base' n'apparait que dans SPIP-Listes 1.98001
	// Cherche sur $spiplistes_version pour les versions precedentes 

	//install
	$version_base = 1.91; // ou inferieur ?
	
	if (   
		(!$spiplistes_current_version)
		|| ($spiplistes_current_version < 1.98001)
		) {
		
		// si etait deja installe mais dans une vieille version, on reprend a zero
		include_spip('base/abstract_sql');
		$desc = sql_showtable("spip_listes",true);
		if (!isset($desc['field']['id_liste']))
			$current_version = 0.0;
		if(
			sql_getfetsel("*", 'spip_articles'
				, "statut=".sql_quote('liste')." OR statut=".sql_quote('inact')." OR statut=".sql_quote('poublist'))
		) {
			$current_version=0.0;
		}

		if ($current_version==0.0){
			// Verifie que les tables spip_listes existent, sinon les creer
//spiplistes_debug_log("UPGRADE: current_version: $current_version");
			include_spip('base/create');
			include_spip('base/abstract_sql');
			
			//Migrer des listes anciennes // a deplacer dans une en fonction
			$resultat_aff = sql_select("*", 'spip_articles'
				, "statut=".sql_quote('liste')." OR statut=".sql_quote('inact')." OR statut=".sql_quote('poublist'));
			if(@sql_count($resultat_aff) > 0) {
				echo _T('spiplistes:mettre_a_jour');
				while ($row = sql_fetch($resultat_aff)) {
					$id_article=$row['id_article'];
					$titre_liste=corriger_caracteres($row['titre']);
					$texte_liste = corriger_caracteres($row['texte']);
					$date_liste = $row['date'];
					$langue=$row["lang"];
					$statut = $row['statut'];
					$extra=unserialize($row['extra']);
					$patron_liste=$extra["squelette"];
					$periode_liste=$extra["periode"];
					$maj_liste=$extra["majnouv"];
					$email_envoi=$extra["email_envoi"];
					$message_auto=$extra["auto"];
					$options="<p>".$titre_liste."<br/>";
					echo $options."</p>";
					
					// ajout du pied de page
					include_spip('public/assembler');
					$contexte_pied = array('lang'=>$langue);
					$pied = recuperer_fond('modeles/piedmail', $contexte_pied);
					
					$id_liste = sql_insertq(
						"spip_listes"
						, array(
							'titre' => $titre_liste
							, 'texte' => $texte_liste
							, 'statut' => $statut
							, 'date' => $date_liste
							, 'lang' => $langue
							, 'pied_page' => $pied
						)
					);
					if($message_auto=="oui")
						sql_update(
							'spip_listes'
							, array(
								'patron' => sql_quote($patron_liste)
								, 'periode' => sql_quote($periode_liste)
								, 'maj' => "FROM_UNIXTIME(".sql_quote($maj_liste).")"
								, 'email_envoi' => sql_quote($email_envoi)
								, 'message_auto' => sql_quote($message_auto)
								)
							, "id_liste=".sql_quote($id_liste)
							);
//.........这里部分代码省略.........
开发者ID:rhertzog,项目名称:lcs,代码行数:101,代码来源:spiplistes_upgrade.php

示例14: base_preparer_table_dest

/**
 * Preparer la table dans la base de destination :
 * la droper si elle existe (sauf si auteurs ou meta sur le serveur principal)
 * la creer si necessaire, ou ajouter simplement les champs manquants
 *
 * @param string $table
 * @param array $desc
 * @param string $serveur_dest
 * @param bool $init
 * @return array
 */
function base_preparer_table_dest($table, $desc, $serveur_dest, $init = false)
{
    $upgrade = false;
    // si la table existe et qu'on est a l'init, la dropper
    if ($desc_dest = sql_showtable($table, true, $serveur_dest) and $init) {
        if ($serveur_dest == '' and in_array($table, array('spip_meta', 'spip_auteurs'))) {
            // ne pas dropper auteurs et meta sur le serveur principal
            // faire un simple upgrade a la place
            // pour ajouter les champs manquants
            $upgrade = true;
            // coherence avec le drop sur les autres tables
            base_vider_tables_destination_copie(array($table), array(), $serveur_dest);
            if ($table == 'spip_meta') {
                // virer les version base qui vont venir avec l'import
                sql_delete($table, "nom like '%_base_version'", $serveur_dest);
                // hum casse la base si pas version_installee a l'import ...
                sql_delete($table, "nom='version_installee'", $serveur_dest);
            }
        } else {
            sql_drop_table($table, '', $serveur_dest);
            spip_log("drop table '{$table}' sur serveur '{$serveur_dest}'", 'dump.' . _LOG_INFO_IMPORTANTE);
        }
        $desc_dest = false;
    }
    // si la table n'existe pas dans la destination, la creer a l'identique !
    if (!$desc_dest) {
        spip_log("creation '{$table}' sur serveur '{$serveur_dest}'", 'dump.' . _LOG_INFO_IMPORTANTE);
        include_spip('base/create');
        creer_ou_upgrader_table($table, $desc, 'auto', $upgrade, $serveur_dest);
        $desc_dest = sql_showtable($table, true, $serveur_dest);
    }
    if (!$desc_dest) {
        spip_log("Erreur creation '{$table}' sur serveur '{$serveur_dest}'" . var_export($desc, 1), 'dump.' . _LOG_ERREUR);
    }
    return $desc_dest;
}
开发者ID:loorenzooo,项目名称:aslfc,代码行数:47,代码来源:dump.php

示例15: _sqlite_modifier_table

/**
 * Gestion des requêtes ALTER non reconnues de SQLite
 *
 * Requêtes non reconnues :
 *
 *     ALTER TABLE table DROP column
 *     ALTER TABLE table CHANGE [COLUMN] columnA columnB definition
 *     ALTER TABLE table MODIFY column definition
 *     ALTER TABLE table ADD|DROP PRIMARY KEY
 *
 * `MODIFY` est transformé en `CHANGE columnA columnA` par spip_sqlite_alter()
 *
 * 1) Créer une table B avec le nouveau format souhaité
 * 2) Copier la table d'origine A vers B
 * 3) Supprimer la table A
 * 4) Renommer la table B en A
 * 5) Remettre les index (qui sont supprimés avec la table A)
 *
 * @param string|array $table
 *     - string : Nom de la table table,
 *     - array : couple (nom de la table => nom futur)
 * @param string|array $colonne
 *     - string : nom de la colonne,
 *     - array : couple (nom de la colonne => nom futur)
 * @param array $opt
 *     options comme les tables SPIP, qui sera mergé à la table créee :
 *     `array('field'=>array('nom'=>'syntaxe', ...), 'key'=>array('KEY nom'=>'colonne', ...))`
 * @param string $serveur
 *     Nom de la connexion SQL en cours
 * @return bool
 *     true si OK, false sinon.
 */
function _sqlite_modifier_table($table, $colonne, $opt = array(), $serveur = '')
{
    if (is_array($table)) {
        reset($table);
        list($table_origine, $table_destination) = each($table);
    } else {
        $table_origine = $table_destination = $table;
    }
    // ne prend actuellement qu'un changement
    // mais pourra etre adapte pour changer plus qu'une colonne a la fois
    if (is_array($colonne)) {
        reset($colonne);
        list($colonne_origine, $colonne_destination) = each($colonne);
    } else {
        $colonne_origine = $colonne_destination = $colonne;
    }
    if (!isset($opt['field'])) {
        $opt['field'] = array();
    }
    if (!isset($opt['key'])) {
        $opt['key'] = array();
    }
    // si les noms de tables sont differents, pas besoin de table temporaire
    // on prendra directement le nom de la future table
    $meme_table = $table_origine == $table_destination;
    $def_origine = sql_showtable($table_origine, false, $serveur);
    if (!$def_origine or !isset($def_origine['field'])) {
        spip_log("Alter table impossible sur {$table_origine} : table non trouvee", 'sqlite' . _LOG_ERREUR);
        return false;
    }
    $table_tmp = $table_origine . '_tmp';
    // 1) creer une table temporaire avec les modifications
    // - DROP : suppression de la colonne
    // - CHANGE : modification de la colonne
    // (foreach pour conserver l'ordre des champs)
    // field
    $fields = array();
    // pour le INSERT INTO plus loin
    // stocker la correspondance nouvelles->anciennes colonnes
    $fields_correspondances = array();
    foreach ($def_origine['field'] as $c => $d) {
        if ($colonne_origine && $c == $colonne_origine) {
            // si pas DROP
            if ($colonne_destination) {
                $fields[$colonne_destination] = $opt['field'][$colonne_destination];
                $fields_correspondances[$colonne_destination] = $c;
            }
        } else {
            $fields[$c] = $d;
            $fields_correspondances[$c] = $c;
        }
    }
    // cas de ADD sqlite2 (ajout du champ en fin de table):
    if (!$colonne_origine && $colonne_destination) {
        $fields[$colonne_destination] = $opt['field'][$colonne_destination];
    }
    // key...
    $keys = array();
    foreach ($def_origine['key'] as $c => $d) {
        $c = str_replace($colonne_origine, $colonne_destination, $c);
        $d = str_replace($colonne_origine, $colonne_destination, $d);
        // seulement si on ne supprime pas la colonne !
        if ($d) {
            $keys[$c] = $d;
        }
    }
    // autres keys, on merge
    $keys = array_merge($keys, $opt['key']);
//.........这里部分代码省略.........
开发者ID:JLuc,项目名称:SPIP,代码行数:101,代码来源:sqlite_generique.php


注:本文中的sql_showtable函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。