Comment créer un Script d’installation de votre application Web (Wizard)

Par défaut

Bonjour, Aujourd’hui, nous allons voir comment créer une procédure d’installation de votre application Web. Cette procédure d’installation est à peu près similaire aux autres installations de logiciel Windows appelé le Guide Wizard. Lorsque vous développez des applications pour un client, il faut toujours lui donner la possibilité de l’installer lui-même en suivant des instructions d’installation tel qu’un logiciel Windows. N’oublier pas d’avoir le fichier SQL de votre DB à l’extension .sql

Pour notre tutoriel on considère le répertoire « geschools »  comme la racine de notre application. Dans cette racine on peut trouver plusieurs repertoires tels que:

  • config (contiendra le fichier de connexion à notre DB appelé config.php et bien d’autres)
  • include
  • fonction
  • db (contient le fichier SQL de notre base de données appelé: geschools_dump.sql)
  • installation (contiendra notre procédure d’installation de notre application)
  • images
  • css
  • js
  • index.php

et bien d’autres fichiers

Comment faire ?

  1. Dans le répertoire « installation » créer un fichier index.php. Dans ce fichier, on aura un formulaire qui permettra au client de spécifier les informations de connexion à sa base de données.
<h2 align="center">INSTALLATION DE GESCHOOLS 3.0 BETA</h2>
<hr /><hr />
<form action="" method="post">
<div class="form-group">
<div class="col-lg-3">
<label>Adresse du Serveur MySQL<em class="rouge">*</em></label>
<input type="text" name="db_host" value="" class="form-control" placeholder="localhost" required>
</div>
<div class="col-lg-3">
<label>Nom d'utilisateur du serveur MySQL:<em class="rouge">*</em></label>
<input type="text" name="db_user" value="" class="form-control" placeholder="root" required>
</div>
<div class="col-lg-3">
<label>Mot de passe du Serveur MySQL:<em class="rouge">*</em></label>
<input type="text" name="db_pass" value="" class="form-control">
</div>
<div class="col-lg-3">
<label>Nom de la DB (ne pas changer):<em class="rouge">*</em></label>
<input type="text" name="db_name" value="geschools" class="form-control" required>
</div>
<div class="col-lg-3">
<label>#</label>
<input type="submit" name="process" value="Commencer l'Installation" class="form-control btn btn-danger">
</div>
</div>
</form>

<div class="clearfix"></div>
index.php

2. Toujours dans le même fichier index.php coller le code suivant. Ce code procédera à l’installation de notre application en important la DB de notre application qui se trouve dans le repertoire db/ puis créer le fichier de connexion config.php de notre DB dans le répertoire: config/

<?php 
if(isset($_POST['process'])){
// Recuperation des information du formualire
extract($_POST);
// Verification si les champs sont vides
$champFormulaire=array("db_host","db_user","db_pass","db_name");
foreach($champFormulaire as $champ){
if(empty($_POST["$champ"])){
die('Tous les champs sont obligatoires');
}
}
// Connexion au serveur avec MySQLi
$con = new mysqli($db_host,$db_user,$db_pass);
// Verification si les données de connexion saisies dans le Formulaire sont Bons
if($con->connect_error){
die('<h3 style="color:red;">IMPOSSIBLE D\'ETABLIR LA CONNEXION AU SERVEUR MySQL, VERIFIER LES INFORMATIONS RENSEIGNEES</h3>'.mysqli_error($con));
}
// Création de la base de donnée dans
$sql="CREATE DATABASE $db_name"; // requête de création de la DB
if($con->query($sql) === TRUE){
echo '<h3 style="color:green;">La base de donnée à été créer !!!</h3>';
}
// Importation des tables dans la DB
$insert = new mysqli($db_host,$db_user,$db_pass,$db_name);
$fichier ="../db/geschools_dump.sql"; // Fichier SQL qui se trouve dans le repertoire db/
$templine=''; // Variable temporaire pour sauver les requêtes
$lines =file($fichier); // lecture du fichier entier
foreach($lines as $line){ // parcourire les ligne du fichier
if(substr($line,0,2)== '--' || $line == '')
continue;
$templine .=$line;
if(substr(trim($line),-1,1) == ';'){
$insert->query($templine) or print('Error dans la requête' .$templine. '\' '.mysqli_error($con));
$templine='';
}
}

// Fin
// Création du fichier config.php dans le repertoire config/
$valeur='
<?php
// Modifier le '.date('d-m-Y').'
session_start();
/* DATABASE CONFIGURATION */
define("DB_SERVER", "'.$db_host.'");
define("DB_USERNAME", "'.$db_user.'");
define("DB_PASSWORD", "'.$db_pass.'");
define("DB_DATABASE", "'.$db_name.'");

function getDB(){
$dbhost=DB_SERVER;
$dbuser=DB_USERNAME;
$dbpass=DB_PASSWORD;
$dbname=DB_DATABASE;
try {
$dbConnection = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$dbConnection->exec("set names utf8");
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $dbConnection;
}
catch (PDOException $e) {
echo "connection failed:" .$e->getMessage();
}
}

$mysqli = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
// TEST DE CONNEXION 1
if($mysqli->connect_errno > 0){
die("IMPOSSIBLE DE SE CONNECTER AU SERVEUR" .$mysqli->connect_error);
}
?>';
// Création et Insertion de donnée dans le fichier config.php
$fichier= "../config/config.php";
$fo=fopen($fichier,"w"); // ouverture du fichier
$go=fputs($fo,$valeur); // Insetion de la variable $valeur dans le fichier config.php
fclose($fo); // fermeture du fichier
if($go){
echo '<center><h2 style="color:green;">Installation réussie</h2> <a href="../">Clique ici</a> pour te connecter</center>';
}
else {
die ('IMPOSSIBLE D\'INSTALLER, CONTACTER L\'ADMINISTRATEUR');
}

// Fin
$con->close(); // fermeture de la Connexion au Serveur MySQL
}
?>
Toujours dans index.php

Et voila c’est tout. Si vous avez d’incompréhension sur ce code n’hésitez pas à poster votre commentaires. je suis là pour vous aider et à comprendre mieux.