Installer sa bdd via php

Répondre
bibi
le 04/12/2004 à 16:00
bibi
remplacer les i par des $i dans le for, l'habitude du c++ :)
commit suicide
bibi
le 04/12/2004 à 16:09
bibi
Bon ca marche niquel donc je vous fournis le code

<?


$bdd = mysql_connect("localhost","root","");

$req = mysql_query('CREATE DATABASE testons') or die ("Erreur");

if($req)
{
echo "Création de la base ..... OK\r\n";
/*mysql_select_db("testons",$bdd) or die("erreur de connexion à la base");*/
$fd = fopen("projet.sql","r");
$buffer = "";
while (!feof ($fd)) {
$buffer .= fgets($fd, 4096);
}

$requete = explode(";",$buffer);
mysql_select_db("testons",$bdd) or die("erreur de connexion a la base");
for($i=0;$i<count($requete)-1;$i++)
{
$req = mysql_query($requete[$i]) or die(mysql_error());
}
}


PS: j'ai enlevé les lignes de commentaires dans le fichier .sql , on sait jamais . Ca bouclait une fois de trop voila pourquoi le count($requete)-1
pcke la derniere requete se termine par un ";"

voilou merci glob :) j'espere que ca pourra aider des gens
commit suicide
moogli
le 04/12/2004 à 17:26
moogli
Salut,

Bibi je te propose une tite association pour réinventer la roue !

Perso j'ai un script de dump de base mysql :)

my_admin.php
<?php
$nom_base="";//Nom de la table ici
$table_sql="Tables_in_".$nom_base;
$base = mysql_connect('localhost','root','');
mysql_select_db($nom_base,$base);
//on essai d'avoir toute les tables
$sql = 'SHOW TABLES';
$req = mysql_query($sql) or die ('Erreur sql :'.mysql_error());
$nb_table = mysql_num_rows($req);
//$table=array(array());
//REcupe des noms des tables
while ($data = mysql_fetch_object($req))
{
$table[$data->$table_sql]='';
}
//On a le nom de toute les tables il faut maintenant créer un fichier avec les requetes qui vont avec
//print_r($table);
mysql_free_result($req);

foreach ($table as $nom_table => $champ)
{
//On parcour $table pour avoir la descriptoin de chaque table
$sql_des = 'DESCRIBE '.$nom_table;
$req_des = mysql_query($sql_des) or die ('Erreur sql lors de la description des table :'.mysql_error());
while ($data = mysql_fetch_object($req_des))
{
$table[$nom_table][$data->Field]['Type']=$data->Type;
$table[$nom_table][$data->Field]['Null']=$data->Null;
$table[$nom_table][$data->Field]['Key']=$data->Key;
$table[$nom_table][$data->Field]['Default']=$data->Default;
$table[$nom_table][$data->Field]['Extra']=$data->Extra;
}
mysql_free_result($req_des);

}
//On a la structure de toute les tables on va (pour l'instant) afficher la requete de création de la table avec commentaire avant pour dire le nom de la table :)
//On crée nom de fichier apartir du nom de la base et time stamp pour éviter de niquer u autre fichier
$nom_fichier = $nom_base.'_'.date("U").'.sql';
//Ouverture du fichier
$fp = fopen($nom_fichier,"wb");//création du fichier s'il n'existe pas
//Définition des entetes
$comment_head = '-------------------------------------------------
--
-- Utilitaire de dump de base MySQL (V 1.0)
-- par Moogli => moogli_gl@yahoo.fr
--
-- Base de donnée : '.$nom_base.'
-- Cette base contient '.$nb_table.' table(s).
-- Fichier crée le '.date("d/m/Y").' à '.date("H:i:s")."\n---------------------------------------------------\n\n";
//On met l'entete dans le fichier
fputs($fp,$comment_head);
//$comment_table = "--Struture de la table :";
$i=0;
foreach ($table as $nom_table => $champ)
{
//print_r($champ);
//pour chaque table nom de la table=> $nom_table, nom des champ $champ[]
$structure = 'CREATE TABLE `'.$nom_table.'` (
';
foreach ($champ as $nom_champ=> $value) {
// $clef contient type, null,key,default,extra
$structure.= '`'.$nom_champ.'` '.$champ[$nom_champ]['Type'];
if ($champ[$nom_champ]['Null'] == "") {
$structure .= ' NOT NULL ';
}
else {
$structure .= ' NULL ';
}
$structure .= ' default \''.$champ[$nom_champ]['Default'].'\'';
if ($champ[$nom_champ]['Extra'] != "") $structure .= ' '.$champ[$nom_champ]['Extra'];
$structure .= ',
';
if ($champ[$nom_champ]['Key']=='PRI') $prim_key = $nom_champ;
if ($champ[$nom_champ]['Key']=='KEY') $key .= $nom_champ.',';
$list_champ[$nom_table][]=$nom_champ;
}
//On a presque tout fait on verifie s'il y a ue clef primaire
if (isset($prim_key) && $prim_key!="")
{
$structure .= " PRIMARY KEY (`'.$prim_key.'`)\n";
}
else {
$tructure = substr($structure,0,strlen($struture)-1);//enlève la vigule dû au dernier champ
}
if (isset($key) && $key != '')
{
$tab = explode(',',$key);
foreach($tab as $clef)
{
if ($clef!="") {
$struture .= ",\nKEY (`$clef`)\n";
}
}
}
$structure .= ") TYPE=MyISAM;\n\n";
$structure_table[$nom_table]=$structure;
//recupe de infos a insérer de la table en cours

$sql_sel = 'SELECT * FROM '.$nom_table;
$req_sel = mysql_query($sql_sel) or die ('Erreur selection (pour insert) => '.mysql_error());
if (mysql_num_rows($req_sel)!= 0) {
//On a des données dans la table !
while ($data = mysql_fetch_object($req_sel))
{
$in = 'INSERT INTO '.$nom_table.' VALUES(';
$nb = count($list_champ[$nom_table]);
foreach ($list_champ[$nom_table] as $valeurduchamp)
{
--$nb;
if ($nb !=0){
$in .= '"' . $data->$valeurduchamp .'", ';
}
else {
$in .= '"' . $data->$valeurduchamp .'" ';
}
}
$in .= ");";
$insert[$nom_table][]=preg_replace("/(.)?\\n/","\\r\\n",$in);
//$insert[$nom_table][]=$in;
}
}
else {
//On a aucun tuple on insert dans la table un champ vide
$insert[$nom_table][] = '';
}
mysql_free_result($req_sel);
//Insertion dans le fichier de la structure de la tables ainsi que des données.
$pointille = "-------------------------------------------------";
$comment_table = "--\n--Struture de la table : $nom_table\n--\n\n";
//Insertion dans le fichier de la structure de la table et des info
//Nom de la table
fputs($fp,$comment_table);
//structure de la table
fputs($fp,$structure.'
');
//Contenu de la table
$contenu = "--\n--Contenu de la table :$nom_table\n--\n\n";
$contenu .= join("\n",$insert[$nom_table])."\n$pointille\n";

fputs($fp,$contenu); //addslashes() ?

}
fclose($fp);
mysql_close();
//On met un lien vers le fichier
echo 'Le fichier de sauvegarde se trouve <a href="./',$nom_fichier,'" target="_blank">ici</a>';
?>


Avec sa + ton truc a toi et deux trois vérif pour virer les simples et doubles quotes des fichiers pour éviter les erreurs.
Une petite interface interface graphique et se fait Da Dump smiley

Qu'est ce t'en pense smiley

m'enfin moi pers il m'interesse ton script :)
Mici smiley

Ps : j'ai pas retrouvé le poste ou j'avais bazardé sa :)
Il en faut peu pour être heureux !!!!!
bibi
le 04/12/2004 à 18:43
bibi
oué Da Dump spa mal, une alternative a phmyadmin apres et hop hop on devient les maitres du monde smiley
pas mal ton script :)
commit suicide
moogli
le 04/12/2004 à 19:12
moogli
oué mé y a de la concurence :) :bound:

thx ;king: smiley

smiley
Il en faut peu pour être heureux !!!!!
bibi
le 04/12/2004 à 19:57
bibi
stu veux jlai continué et jlai fai en plusieurs étapes avec création d'un owner smiley
commit suicide
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours