Ré-installer une base de donnée sqlite

0/5 (7 avis)

Snippet vu 3 900 fois - Téléchargée 16 fois

Contenu du snippet

Peut-être m'y suis-je toujours mal pris, mais c'est toujours compliqué de mettre en ligne une base de données sqlite parce que le manager livré par wamp est bogué. Aussi, en me servant de diverses sources, j'ai créé ce script qui fabrique un fichier d'installation de la base sqlite. Pour cela, il suffit d'installer un fichier, qu'on nommera par ex. save_all.php avec le code ci dessous, dans le dossier où il y a la base sqlite en localhost. On lance save_all.php et il génère un fichier reinstall_db.php qui contient tous les code d'installation de la base. Ce dernier, on l'uploade chez l'hébergeur et on le lance : la base sqlite est créée avec tout dedans.

Source / Exemple :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>fabriquation du fichier de ré-installation</title>
<?php
$action = @$_GET["action"];

if($action=="oui") {    
	$fname = "reinstall_db.php"; 
	$fichier=fopen( $fname,"w");     
	$str = "<?php \r\n"; 
	$str .= '$db = sqlite_open(\'monsite_db\', 0666, $sqliteerror);'. "\r\n";
		  
	//on ouvre la base sqlite	     
	$db = sqlite_open('monsite_db', 0666, $sqliteerror);  
	// on extrait la liste des noms de table 
	$result = sqlite_query ($db, "SELECT name,sql FROM sqlite_master WHERE type='table'");
		while ($row = sqlite_fetch_array($result)) { 	 
     		$str .= 'sqlite_query($db,"'.$row['sql'].'");'."\r\n"; // on écrit la liste des codes de création des tables
		}
	//on liste les insert par table $row[0]
	//on refait la même requête	
	$insert = sqlite_query ($db, "SELECT name FROM sqlite_master WHERE type='table'");
		while ($row = sqlite_fetch_array($insert)) { 
		//on écrit dans le fichier le nom de la table, pour info
		$str .= "\r\n".'#'.$row[0]."\r\n\r\n";	
		//requête avec le nom de la table
     	$table = sqlite_query($db, "SELECT * FROM $row[0]  ");
		//nombre de champs
     	$nb_field=sqlite_num_fields($table);
		//nombre de lignes	 	
		$nb_rows = sqlite_num_rows($table);	
		//on liste les lignes
	 		$c=0;
	 		while($c<$nb_rows){
				//on fetche ce qu'il y a dans la ligne
				$row_table=sqlite_fetch_array($table);
				//on écrit le code d'insert
				$str .= 'sqlite_query($db,"INSERT INTO '.$row[0]." VALUES ('";
				//on liste les champs
				$i=0;
					while($i<$nb_field){
						//on cherche les noms de chaque champ
						$name= sqlite_field_name($table,$i);
						//on met une virgule devant sauf au premier	
						if($i>0) $str .=  "','";
						//on écrit dans le fichier le contenu de chaque champ	
						//on s'occupe des quotes et des double quotes
						$antislsh = str_replace('"','\"',$row_table["$name"]);
						$antislsh = str_replace("'","''",$antislsh);
						//on enlève les doublons d'anti-slashes éventuels
						$str .= str_replace('\\\\','\\',$antislsh);					
					$i++;
				}			
			$str .= '\')")'.";\r\n";			
			$c++;
			}
}		
	$str .='?>';
//on écrit le fichier de ré-installation
fputs($fichier,$str);
?>
<p>Un fichier de création de base de donnéee a été fabriqué : reinstall_db.php<br />Il contient toute la base de données de mon site.com 
</p>            
<?php
   }
else { ?>   
<p align="center">
<form action="save_sqlite_all.php?action=oui" method="post"> 
Fabrication du fichier de ré-installation de la base de données de mon site<br />
 <br />
<input name="send" type="submit" value="Allez!"> 
</form> 
</p>
<?php } ?>

A voir également

Ajouter un commentaire

Commentaires

cs_armenak
Messages postés
58
Date d'inscription
vendredi 29 août 2003
Statut
Membre
Dernière intervention
25 octobre 2010
-
J'étais en vacances et je n'ai donc pas encore pu participer à la conversation.
Je connaissais l'addon, et c'est pour cela que j'ai bricolé ce script. Tout se passe d'une manière bien plus simple qu'avec l'outil Firefox: un clic pour générer le fichier, on uploade le fichier dans le dossier où doit être la base, on l'ouvre et voilà. De plus, en faisant évoluer le script (compression et envoi du fichier sql par mail), on peut s'en servir comme sauvegarde de la base. Ce que ne permet pas le manager de Ffox.
valneandre
Messages postés
35
Date d'inscription
mardi 7 novembre 2006
Statut
Membre
Dernière intervention
18 septembre 2009
-
Merci !
cs_stailer
Messages postés
511
Date d'inscription
jeudi 28 mars 2002
Statut
Membre
Dernière intervention
13 mai 2009
1 -
Si tu es sur du PHP5 , normalement ton hébergeur t'as donné les 2 : MySQL, mais aussi SQLite car il fait partie de la librairie native de PHP5.
Pour voir toutes les extensions installées avec PHP (SOAP, SQLite, XSLT etc... ) , tu dois créer un fichier php (info.php par exemple) et taper :
<?php
echo phpinfo();
?>

Lance cette page sur ton serveur, tu verras toute ta configuration php et les extensions proposées
valneandre
Messages postés
35
Date d'inscription
mardi 7 novembre 2006
Statut
Membre
Dernière intervention
18 septembre 2009
-
Merci Stailer !
Effectivement, j'ai PHP et SQL (non SQLite), et jusqu'à présent je ne me suis servi que de PHP avec des fichiers texte. Je vais potasser l'interface d'admin de mon hébergeur (Coeur-Internet, basé en Angleterre) pour voir comment créer une base et y accéder.
Encore merci de ton aide.
Valnéandre
cs_stailer
Messages postés
511
Date d'inscription
jeudi 28 mars 2002
Statut
Membre
Dernière intervention
13 mai 2009
1 -
Ce serait long de tout t'expliquer en détail et j'ai pas vraiment le temps.

en revanche petite précision :
tu as pris un hébergement PHP et SQL. En fait, je suis quasiment sur que ton hébergement est basé sur une base de données MySQL. c'est un SGBR, une base de données installée sur un serveur avec comme adresse de connexion : l'adresse d'un serveur, port, login et mot de passe.

Ici nous parlons d'une base de données SQLite dont les pilotes pour s'y connecter par php sont installés en natif. Ce n'est pas un SGBDR mais une base de données "fichiers" utilisée pour un faible volume de données et peu de demande en bande passante. Pour se connecter il faut : l'adresse du fichier de base de données sur le serveur, login et mot de passe.

Donc toi je pense que tu parles du 1er cas : MySQL.
Dans ton interface d'administration de ton hébergement tu dois avoir la possibilité de créer une ou plusieurs bases de données. Lorsque ce sera fait, on te donnera son adresse, son nom , login et mot de passe. C'est ça qu'il faudra utiliser en PHP pour s'y connecter.

Bref, la je te résume en gros.

Il faudrait que tu t'achètes un bouquin sur PHP/MySQL, ou que tu regardes des tutoriaux et il faudrait voir qui est ton hébergeur précisément pour pouvoir t'aider concernant la création des bases.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.