Ré-installer une base de donnée sqlite

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

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.