IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Copie de base de données en PHP


Sujet :

PHP & Base de données

  1. #1
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut Copie de base de données en PHP
    Bonjour,

    Je voudrais savoir s'il est possible (et si oui comment) de copier une base de données et tout ce qu'elle contient(pour faire une sauvegarde par exemple) sans passer par une création d'une base puis une copie table par table du genre:"INSERT INTO base_destination.nom_table SELECT ... FROM base_source.nom_table"

    Merci.

  2. #2
    Membre expérimenté
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Points : 1 309
    Points
    1 309
    Par défaut
    Si tu utilises phpMyAdmin, il y a bien une fonctionalité exporter

  3. #3
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 82
    Points : 89
    Points
    89
    Par défaut
    sinon il y a mysqldump

  4. #4
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut
    Ce que je voudrais c'est faire cette copie dans un script php. J'ai un formulaire dans lequel l'utilisateur saisie le nom de la nouvelle base de données et je voudrais copier ma base XXX dans cette base nouvelle.

  5. #5
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 82
    Points : 89
    Points
    89
    Par défaut
    regarde la fonction mysqldump...

    en gros tu doit faire quelque chose comme ca :

    $auth="mysqldump -u ".USER." -B ".DB." -p".PASS;
    $par=" -all --quick --add-drop-table -e";
    $par2="";
    if ($_GET['action']=='dump') $par2=' --no-data ';
    $out=' > '.$fichier;
    $exec=$auth.$par.$par2.$out;
    if ($_GET['action']=='dumpdatagzip') $exec=$auth.$par.$par2. " | gzip > ".$fichier2;
    //echo $exec;

    exec($exec);

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 24
    Points : 25
    Points
    25
    Par défaut
    J'utilise un script que fonctionne très bien.
    Il me crée, sur le serveur, un fichier sql correspondant à l'option 'exporter' de MySqlAdmin.
    (Ma base s'appelle gpec)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    /* d'après PHPMYEXPORT v3.3, Axel de Vignon [ www.vidax.net ] */
     
     
    //Inclusion des fichiers
    require_once("cnxGPEC.php");
     
    $NbTables = 0;
    $NbRecords = 0;
     
    $dbname = 'gpec';
    $sql = "SHOW TABLES FROM $dbname";
    $result = mysql_query($sql);
     
    if (!$result) {
       $fichier .="Erreur DB, impossible de lister les tables\r\n";
       $fichier .='Erreur MySQL : ' . mysql_error();
       exit;
    }
     
    /* Génère le nom du fichier */
    $date = date("d-m-Y H\hi\m");
    $nom_fichier = $dbname." $date.sql";
     
    $fichier = "\r\n".
        "# Sauvegarde de la base GPEC le : ".$date."\r\n".
        "#\r\n";
     
     
    /* Tant qu'il y a des tables */
    while ($row = mysql_fetch_row($result)){
        $fichier .="\r\n#\r\n# Table `".$row[0]."`\r\n#\r\n";
     
        /* La suppression est demandée */
        $fichier .="DROP TABLE IF EXISTS `$row[0]`;\r\n";
     
        /* Enregistre sa structure */
        $req = mysql_query("SHOW CREATE TABLE ".$row[0]);
        $res = mysql_fetch_array($req);
        $fichier .=$res[1].";\r\n\r\n";
     
        /* Sélectionne toutes les entrées de la table */
        $requete = mysql_unbuffered_query("SELECT * FROM ".$row[0].";");
        $nb = mysql_num_fields($requete);
        $reqcomplete = "";
        $j = 0;
     
        /* Tant qu'il y a des entrées */
        while($res = mysql_fetch_array($requete)){
            $i = 0;
     
            /* Differents types de requetes */
            $fichier .="INSERT INTO `$row[0]`".$reqcomplete." VALUES (";
     
            while($i<$nb){
                /* Protege les caracteres speciaux */
                $ligne = mysql_escape_string($res[$i]);
     
                /* Si l'entree est un chiffre, pas de quotes */
                if(is_numeric($ligne))     $fichier .=$ligne;
                else             $fichier .='"'.$ligne.'"';
     
                /* Termine ou continue la ligne */
                if($i == ($nb - 1))    $fichier .=');';
                else            $fichier .=', ';
                $i++;
            }
     
            $fichier .="\r\n";
     
            /* Compteur du nombre d'enregistrements */
            $NbRecords ++;
        }
     
        /* Compteur du nombre de tables */
        $NbTables ++;
    }
     
    /* Génère le pied de page */
    $fichier .=    "\r\n\r\n".
        "#\r\n".
        "# File: \"".$nom_fichier."\", ".$NbTables." table(s), ".$NbRecords." record(s)\r\n".
        "#\r\n".
        "#";
     
    $sauvegarde = fopen($nom_fichier, "a");
    fwrite($sauvegarde, $fichier."\r\n");
    fclose($sauvegarde);
     
    mysql_free_result($result);
    Le fichier cnxGPEC.php contient les éléments de connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
     
    if ($_SERVER['REMOTE_ADDR'] == "127.0.0.1"){
        //Local
        $host = "localhost";
        $userdb = "root";
        $passdb = "";
    }else{
        //Distant
        $host = "LeServeur";
        $userdb = "LaBase";
        $passdb = "LeMotDePasse";
    }
     
    $database_CnxGPEC = "gpec";
     
    //Connexion au serveur MySQL
    $CnxGPEC = mysql_connect($host, $userdb, $passdb);
    if (!$CnxGPEC) {
       die('Non connecté : ' . mysql_error());
    }
     
    // Selection de la DB
    $db_selected = mysql_select_db($database_CnxGPEC, $CnxGPEC);
    if (!$db_selected) {
       die ('Impossible d\'utiliser la base : ' . mysql_error());
    }

  7. #7
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 82
    Points : 89
    Points
    89
    Par défaut
    après il faut voir les options de mysql pour voir laquelle sauvegarde toute les tables et leurs contenues.

  8. #8
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut
    hebus73, je ne trouve pas dans la doc php la fonction mysqldump. J'ai cherché à mysql_dump ou à mysqldump mais je ne trouve rien.

  9. #9
    Membre habitué
    Inscrit en
    Novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut
    Bonjour,

    Je suis pas sur, mais je crois bien que c'est pas une fonction php mais mysql, si j'en crois ce que dit ce lien: http://dev.mysql.com/doc/refman/5.0/fr/mysqldump.html

Discussions similaires

  1. copie de base de données
    Par dev-man dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/03/2006, 15h42
  2. [MFC] [ODBC] Pb copie de base de donnée..
    Par matth2602 dans le forum MFC
    Réponses: 3
    Dernier message: 17/01/2006, 13h20
  3. Copie de base de données vers un autre PC
    Par claire.martin dans le forum Access
    Réponses: 19
    Dernier message: 06/01/2006, 14h20
  4. probléme pour faire une copie de base de donnée
    Par nours33 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 31/12/2005, 12h35
  5. Probleme de de copie de base de données
    Par valentin4949 dans le forum Access
    Réponses: 3
    Dernier message: 01/11/2004, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo