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 :

Problème de backup par script PHP [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2005
    Messages : 74
    Par défaut Problème de backup par script PHP
    Bonjour, voici mon code :

    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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    $title = "MySQL Backup";
     
    // Your settings here
     
    $db_host = $db_host; 
    $db_user = $_SESSION['username']; 
    $db_pw   = $_SESSION['password']; 
    $db_name = $_GET['db']; 
    $path = $row_User['homedir'] . '/_Backups/'; 
     
    if (!is_dir($path)) 
    { 
    	mkdir($path, 0777);
    } 
     
    echo "<b>Database Backup</b><br>";
     
    $database = $db_name; 
    $counter = 0; 
    $file_name = $path.$database."_".date("Y-m-d_H-i").".sql"; 
     
    $connection = @mysql_connect($db_host,$db_user,$db_pw); 
    @mysql_select_db($db_name,$connection); 
     
    $text  = "# --------------------------------------------------------\r\n";
    $text .= "# DATABASE DUMP\r\n"; 
    $text .= "# Host: ".$db_host."\r\n"; 
    $text .= "# Time: ".date("d. F Y")." um ".date("H:i")."\r\n"; 
    $text .= "# Running on: ".php_uname()."\r\n"; 
    $text .= "# MySQL-Version: ".mysql_get_server_info()."\r\n"; 
    $text .= "# PHP-Version: ".phpversion()."\r\n"; 
    $text .= "# Database: `$database`\r\n"; 
    $text .= "# --------------------------------------------------------\r\n\r\n"; 
     
    $fd = fopen($file_name,"a+"); 
    fwrite($fd, $text); 
    fclose($fd); 
     
    $c = 0; 
    $result2 = @mysql_list_tables($database); 
     
    for ($i = 0; $i < @mysql_num_rows($result2); $i++) 
    { 
        $table = @mysql_tablename($result2,$i); 
        if ($table != "") { 
            $tbl_array[$c] = @mysql_tablename($result2,$i); 
            $c++; 
            $counter++; 
        } 
     
    } 
     
    for ($y = 0; $y < $c; $y++) { 
        $table = $tbl_array[$y]; 
     
        unset($def,$index); 
        $def .= "DROP TABLE IF EXISTS $table;\r\n"; 
        $def .= "CREATE TABLE $table (\r\n"; 
        $result3 = @mysql_db_query($database, "SHOW FIELDS FROM $table"); 
        while ($row = @mysql_fetch_array($result3)) { 
            $def .= "    ".$row["Field"]." ".$row["Type"]; 
            if ($row["Default"] != "") { $def .= " DEFAULT '".$row["Default"]."'"; } 
            if ($row["Null"] != "YES") { $def .= " NOT NULL"; } 
            if ($row["Extra"] != "") { $def .= " ".$row["Extra"]; } 
            $def .= ",\r\n"; 
        } 
        $def = ereg_replace(",\r\n$", "", $def); 
        $result3 = @mysql_db_query($database, "SHOW KEYS FROM $table"); 
        while ($row = @mysql_fetch_array($result3)) { 
            $kname = $row["Key_name"]; 
            if (($kname != "PRIMARY") && ($row["Non_unique"] == 0)) { $kname = "UNIQUE|".$kname; } 
            if (!isset($index[$kname])) { $index[$kname] = array(); } 
            $index[$kname][] = $row["Column_name"]; 
        } 
        while (list($xy, $columns) = foreach($index[$kname])) { 
            $def .= ",\r\n"; 
            if ($xy == "PRIMARY") $def .= "PRIMARY KEY (".implode($columns, ", ").")"; 
            else if (substr($xy,0,6) == "UNIQUE") $def .= "    UNIQUE ".substr($xy,7)." (".implode($columns, ", ").")"; 
            else $def .= "    KEY $xy (".implode($columns, ", ").")"; 
        } 
        $def .= "\r\n);\r\n\r\n"; 
     
        $db = @mysql_select_db($database); 
        $table = "".$table; 
        $text = "#\r\n# Data for table `$table`\r\n#\r\n\r\n"; 
     
        $fd = fopen($file_name,"a+"); 
        fwrite($fd, $text.$def); 
        fclose($fd); 
     
        unset($data); 
        if ($table > "") { 
            $res0[] = @mysql_select_db($database); 
            $result = @mysql_query("SELECT * FROM $table"); 
            $anzahl = @mysql_num_rows($result); 
            $spaltenzahl = @mysql_num_fields($result); 
            for ($i = 0; $i < $anzahl; $i++) { 
                $zeile = @mysql_fetch_array($result); 
                $data .= "INSERT INTO $table ("; 
                for ($spalte = 0; $spalte < $spaltenzahl; $spalte++) { 
                    $feldname = @mysql_field_name($result, $spalte); 
                    if ($spalte == ($spaltenzahl - 1)) { 
                        $data.= $feldname; 
                    } else { 
                        $data.= $feldname.","; 
                    } 
                } 
                $data .= ") VALUES ("; 
                for ($k=0;$k < $spaltenzahl;$k++) { 
                    if ($k == ($spaltenzahl - 1)) { 
                        $data .= "'".addslashes($zeile[$k])."'"; 
                    } else { 
                        $data .= "'".addslashes($zeile[$k])."',"; 
                } 
                } 
                $data .= ");\r\n"; 
            } 
            $data .= "\r\n"; 
        } else { 
            $res0[] = "There is no table"; 
        } 
     
        $fd = fopen($file_name,"a+"); 
        fwrite($fd, $data); 
        fclose($fd); 
    } 
     
    $size0 = filesize($file_name) / 1024; 
     
     
    echo"<hr>";
    echo"Database name: <i>$db_name</i><br>";
    echo"Number of tables: <i>".$counter."</i><br>";
    echo"Size: <i>".number_format($size0,2)." KB</i><br>";
    echo"<hr><br>";
     
    echo "Thanks for a backup.<br>";
    echo "The files were copied to the destination directory <b>YourAccount</b>/_Backups/<br>"; 
    @mysql_close($connection); 
     
    $counter = "";
    $size0 = "";
    ?>
    <center>[ <a href="?page=main"><?php echo $lang_back; ?></a> ]</font></center>
    C'est censé sauvegarder les bases de données de mes utilisateurs dans leurs répertoires...MAIS, il me sort une erreur qui correspond à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while (list($xy, $columns) = foreach($index[$kname])) { 
            $def .= ",\r\n"; 
            if ($xy == "PRIMARY") $def .= "PRIMARY KEY (".implode($columns, ", ").")"; 
            else if (substr($xy,0,6) == "UNIQUE") $def .= "    UNIQUE ".substr($xy,7)." (".implode($columns, ", ").")"; 
            else $def .= "    KEY $xy (".implode($columns, ", ").")"; 
        } 
        $def .= "\r\n);\r\n\r\n";
    Et je ne m'y connais pas assez en php pour savoir pourquoi le foreach merde

    Car il me sort une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: syntax error, unexpected T_FOREACH in E:\services\zpanel\modules\mysql\backup.php on line 86
    j'ai essayé de remettre le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        while (list($xy, $columns) = each($index)) { 
            $def .= ",\r\n"; 
            if ($xy == "PRIMARY") $def .= "    PRIMARY KEY (".implode($columns, ", ").")"; 
            else if (substr($xy,0,6) == "UNIQUE") $def .= "    UNIQUE ".substr($xy,7)." (".implode($columns, ", ").")"; 
            else $def .= "    KEY $xy (".implode($columns, ", ").")"; 
        } 
        $def .= "\r\n);\r\n\r\n"; 
     
        $db = @mysql_select_db($database); 
        $table = "".$table; 
        $text = "#\r\n# Data for table `$table`\r\n#\r\n\r\n";

    mais j'obtiens cette erreur :

    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
    Warning: Variable passed to each() is not an array or object in E:\services\zpanel\modules\mysql\backup.php on line 86
     
    Warning: Variable passed to each() is not an array or object in E:\services\zpanel\modules\mysql\backup.php on line 86
     
    Warning: Variable passed to each() is not an array or object in E:\services\zpanel\modules\mysql\backup.php on line 86
     
    Warning: Variable passed to each() is not an array or object in E:\services\zpanel\modules\mysql\backup.php on line 86
     
    Warning: Variable passed to each() is not an array or object in E:\services\zpanel\modules\mysql\backup.php on line 86
     
    Warning: Variable passed to each() is not an array or object in E:\services\zpanel\modules\mysql\backup.php on line 86
     
    Warning: Variable passed to each() is not an array or object in E:\services\zpanel\modules\mysql\backup.php on line 86
     
    Warning: Variable passed to each() is not an array or object in E:\services\zpanel\modules\mysql\backup.php on line 86
     
    Warning: Variable passed to each() is not an array or object in E:\services\zpanel\modules\mysql\backup.php on line 86
    Merci d'avance de votre aide

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2005
    Messages : 74
    Par défaut
    je vois que la solution n'est pas si simple...je continue a chercher sur google et dans mes bouquins pour le moment mais je ne comprends pas lagénération de cette erreur...

  3. #3
    Membre émérite Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Par défaut
    foreach te permet de faire une boucle sur ton tableau, plus d'infos ici : http://fr2.php.net/manual/fr/control...es.foreach.php

    Donc tu ne peut en aucun cas l'utiliser dans une "condition".

    Que veux tu faire au juste car j'ai la flemme de lire tout ton code.

  4. #4
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Et pourquoi pas avec

    ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2005
    Messages : 74
    Par défaut
    Avec cela, j'ai plein de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Warning: implode() [function.implode]: Bad arguments. in E:\services\zpanel\modules\mysql\backup.php on line 88
     
    Warning: implode() [function.implode]: Bad arguments. in E:\services\zpanel\modules\mysql\backup.php on line 88
     
    Warning: implode() [function.implode]: Bad arguments. in E:\services\zpanel\modules\mysql\backup.php on line 88
     
    Warning: implode() [function.implode]: Bad arguments. in E:\services\zpanel\modules\mysql\backup.php on line 88
     
    Warning: implode() [function.implode]: Bad arguments. in E:\services\zpanel\modules\mysql\backup.php on line 88
    Et en fait, la fonction de ce code est de sauvegarder les bases de données de mes utilisateurs puis de mettre cette sauvegarde dans le dossier de ce meme utilisateur dans un répertoire _backup

    Voila...

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2005
    Messages : 74
    Par défaut
    Bon, j'ai essayé plein de trucs...et rien ne marche...HELLLLPPPP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Insert passe sur Phpmyadmin et plante par script php
    Par Camillo dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 19/07/2014, 00h34
  2. [PHP 5.4] Problème pour inclure un script php avec include
    Par georgeschris dans le forum Langage
    Réponses: 25
    Dernier message: 03/11/2012, 17h32
  3. [PHP 5.3] Stream par script PHP plantant avec HTML5 <video> et <audio>
    Par Renkineko dans le forum Langage
    Réponses: 7
    Dernier message: 11/06/2012, 16h57
  4. Concaténation de CSS par script PHP
    Par nomasis dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 18/08/2008, 14h15
  5. Probléme d'appel script PHP
    Par pollux93160 dans le forum Langage
    Réponses: 3
    Dernier message: 21/10/2005, 19h06

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