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

MkFramework Discussion :

Restauration de la base mysql


Sujet :

MkFramework

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 201
    Points : 75
    Points
    75
    Par défaut Restauration de la base mysql
    Bonjour

    Sur le même schéma que pour la sauvegarde, j'aimerai pouvoir restaurer un fichier sauvegardé.

    J'ai pensé ajouter un bouton restaurer la base en face de chaque ligne qui affiche les sauvegarde faite.

    pour cela je doit créer une méthode dans le main que j’appellerai restore()

    Dans cette méthode, je peux récupérer l'adresse du fichier pour faire le traitement
    J'ai récupéré un code qui fait la restauration et je pense m'aider de celuici
    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
    <?php
    /*
     * Restore MySQL dump using PHP
     * (c) 2006 Daniel15
     * Last Update: 9th December 2006
     * Version: 0.2
     * Edited: Cleaned up the code a bit. 
     *
     * Please feel free to use any part of this, but please give me some credit :-)
     */
     
    // Name of the file
    $filename = 'test.sql';
    // MySQL host
    $mysql_host = 'localhost';
    // MySQL username
    $mysql_username = 'root';
    // MySQL password
    $mysql_password = '';
    // Database name
    $mysql_database = 'secu02';
     
    //////////////////////////////////////////////////////////////////////////////////////////////
     
    // Connect to MySQL server
    mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Error connecting to MySQL server: ' . mysql_error());
    // Select database
    mysql_select_db($mysql_database) or die('Error selecting MySQL database: ' . mysql_error());
     
    // Temporary variable, used to store current query
    $templine = '';
    // Read in entire file
    $lines = file($filename);
    // Loop through each line
    foreach ($lines as $line)
    {
        // Skip it if it's a comment
        if (substr($line, 0, 2) == '--' || $line == '')
            continue;
     
        // Add this line to the current segment
        $templine .= $line;
        // If it has a semicolon at the end, it's the end of the query
        if (substr(trim($line), -1, 1) == ';')
        {
            // Perform the query
            mysql_query($templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />');
            // Reset temp variable to empty
            $templine = '';
        }
    }
     echo "restauration faite";
    ?>
    Comme j’interviens sur la base j'ai pensé qu'il fallait créer un model/model_restore.php
    Est-ce utile?
    Le traitement ne peux-t-il pas se faire directement dans mon main?
    Si oui comment me connecter à la base et réaliser ma sauvegarde?

  2. #2
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    IL faudrait faire comme pour la méthode sqldump
    et y ajouter votre méthode de restauration à la place de create_tables...
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    Désolé je ne comprend pas.

    Il faut bien que je fasse un model?

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Oui comme le model model_sqldump
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Comme ceci:
    Code php : 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
    <?php 
    class model_sqlrestore extends abstract_model{
     
    //profil de connexion
    protected $sConfig='mysqlExple';
     
     
     
    private $tables = array();
    private $options = array(
        'MySQL_HOST' => '',
        'MySQL_USERNAME' => '',
        'MySQL_PASSWORD' => '',
        'MySQL_DATABASE' => '',
        'CHARSET' => 'UTF8',
        'PATH' => '/',
        'FTP' => false,
        'FTP_HOST' => '',
        'FTP_USERNAME' => '',
        'FTP_PASSWORD' => '',
        'FTP_PATH' => '/'
        'filename' => ''
     
    );
     
    private $string = "SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\";\n\n";
    private $connect;
     
        public static function getInstance(){
        return self::_getInstance(__CLASS__);
        }
     
        public function __construct($options = array()){
            foreach($options as $k => $v){
                $this->options[$k] =  $v;
            }
    		$this->save()
        }
     
    	private function save(){
     
    		$lines = file($this->options['filename']);
    		// Loop through each line
    		foreach ($lines as $line)
    		{
    			// Skip it if it's a comment
    			if (substr($line, 0, 2) == '--' || $line == '')
    				continue;
     
    			// Add this line to the current segment
    			$templine .= $line;
    			// If it has a semicolon at the end, it's the end of the query
    			if (substr(trim($line), -1, 1) == ';')
    			{
    				// Perform the query
    				$this->execute($templine) or print('Error performing query \'<strong>' . $templine . '\': <br /><br />');
    				// Reset temp variable to empty
    				$templine = '';
    			}
    		}
    	} 
     
        protected function query($sReq,$tParam=null){
     
    		$this->getSgbd()->getPdo()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 
    		$sth = $this->getSgbd()->getPdo()->prepare($sReq);
    		if(is_array($tParam)){
    			$sth->execute($tParam);
    		}else{
    			$sth->execute();
    		}
    		return $sth;
    	}
     
    }
    Pensez bien a utiliser l'option "filename" pour indiquer le fichier sql à charger
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  6. #6
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    Merci j'ai pu avancer plus vite cette fois. Mais la restauration ne se fait pas malgrés qu'il ny ai pas d'erreur.

    Mon model
    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
    <?php 
    class model_sqlrestore extends abstract_model{
     
    //profil de connexion
    protected $sConfig='mysqlExple';
     
     
     
    private $tables = array();
    private $options = array(
        'filename' => '' 
    );
     
    private $string = "SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\";\n\n";
    private $connect;
     
        public static function getInstance(){
        return self::_getInstance(__CLASS__);
        }
     
        public function __construct($options = array()){
            foreach($options as $k => $v){
                $this->options[$k] =  $v;
            }
            $this->save();
        }
     
        private function save(){
     
            $lines = file($this->options['filename']);
            // Loop through each line
            foreach ($lines as $line)
            {
                // Skip it if it's a comment
                if (substr($line, 0, 2) == '--' || $line == '')
                    continue;
     
                // Add this line to the current segment
                $templine .= $line;
                // If it has a semicolon at the end, it's the end of the query
                if (substr(trim($line), -1, 1) == ';')
                {
                    // Perform the query
                    $this->execute($templine) or print('Error performing query \'<strong>' . $templine . '\': <br /><br />');
                    // Reset temp variable to empty
                    $templine = '';
                }
            }
        } 
     
        protected function query($sReq,$tParam=null){
     
            $this->getSgbd()->getPdo()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 
            $sth = $this->getSgbd()->getPdo()->prepare($sReq);
            if(is_array($tParam)){
                $sth->execute($tParam);
            }else{
                $sth->execute();
            }
            return $sth;
        }
     
    }
    Ma methode

    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
    public function _restore(){
    		if(!_root::getRequest()->isGet() ){ //si ce n'est pas une requete get on ne soumet pas
    			return null;
    		}
    		$oFile=new _file(_root::getParam('file'));
    		try{
            new model_sqlrestore(array(
                'filename' => '$oFile'
                ));
            	echo "Restauration faite";
        	}catch (Exception $e) {
        		echo 'Restauration impossible',  $e->getMessage(), "\n";
    		}
            _root::redirect('gestionBase::sauve');
     
    	}

  7. #7
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Il y a une erreur au passage de paramètre
    remplacez
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    'filename' =>'$oFile'
    par
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    'filename' => $oFile->getAdresse()
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  8. #8
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    En fait je le fait dans ma vue sauve.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php if($this->tFile):?>
    		<?php foreach($this->tFile as $oFile):?>
    	<div class="ligne" >
    		<?php echo $oFile->getName() ?> <a href="<?php echo $this->getLink('gestionBase::restore',array('file'=>$oFile->getAdresse()))?>" title="restaurer la sauvegarde">Restaurer</a>
    		<a href="<?php echo $this->getLink('gestionBase::delete',array('file'=>$oFile->getAdresse()))?>" title="Créer une sauvegarde">Supprimer</a>
            <br>
    	</div>
    	<?php endforeach;?>
    <?php endif;?>
    J'ai debugé $oFile dans ma méthode restore() du main et il retourne bien l'adresse du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    object(_file)#8 (2) { ["sAdresse":"_file":private]=> string(47) "../data/dump//db_backup_2013-06-07-19-27-49.sql" ["sContent":"_file":private]=> NULL }
    J'ai essayé ça mais c'est toujours pareil

  9. #9
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    L erreur vient du fait que vous envoyez l adresse du fichier dans vos lines (ça c'est bon)
    Mais a la récupération vous instanciez un objet _file avec cette variable et vous passez cet objet en paramètre
    Donc corrigez comme indiqué dans mon précédent post
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  10. #10
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    bonsoir,

    J'avais fait un test avec le précédent post mais sans succès.

    C'est pour ça que j'ai continué à tester autres choses.

  11. #11
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Pouvez vous poster le code modifiė que je teste
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  12. #12
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par pitu69 Voir le message
    J'ai essayé ça mais c'est toujours pareil
    J'ai dit dans mon post de remplacer par
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    'filename' => $oFile->getAdresse()
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  13. #13
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    Oui ce test aussi je l'ai fait.
    Mes fichiers:

    model_restore
    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
    <?php 
    class model_sqlrestore extends abstract_model{
     
    //profil de connexion
    protected $sConfig='mysqlExple';
     
     
     
    private $tables = array();
    private $options = array(
        'filename' => '' 
    );
     
    private $string = "SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\";\n\n";
    private $connect;
     
        public static function getInstance(){
        return self::_getInstance(__CLASS__);
        }
     
        public function __construct($options = array()){
            foreach($options as $k => $v){
                $this->options[$k] =  $v;
            }
            $this->save();
        }
     
        private function save(){
     
            $lines = file($this->options['filename']);
            // Loop through each line
            foreach ($lines as $line)
            {
                // Skip it if it's a comment
                if (substr($line, 0, 2) == '--' || $line == '')
                    continue;
     
                // Add this line to the current segment
                $templine .= $line;
                // If it has a semicolon at the end, it's the end of the query
                if (substr(trim($line), -1, 1) == ';')
                {
                    // Perform the query
                    $this->execute($templine) or print('Error performing query \'<strong>' . $templine . '\': <br /><br />');
                    // Reset temp variable to empty
                    $templine = '';
                }
            }
        } 
     
        protected function query($sReq,$tParam=null){
     
            $this->getSgbd()->getPdo()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 
            $sth = $this->getSgbd()->getPdo()->prepare($sReq);
            if(is_array($tParam)){
                $sth->execute($tParam);
            }else{
                $sth->execute();
            }
            return $sth;
        }
     
    }
    main
    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
     
    <?php 
     
    class module_gestionBase extends abstract_module{
     
    	public function before(){
    		$this->oLayout=new _layout('template1');
     
    		$this->oLayout->addModule('menu','menu::left');
    	}
    	/* #debutaction#
    	public function _exampleaction(){
    	
    		$oView=new _view('examplemodule::exampleaction');
    		
    		$this->oLayout->add('main',$oView);
    	}
    	#finaction# */
     
     
    	public function _sauve(){
     
    		$oDir=new _dir('../data/dump/');
    		$tFile=$oDir->getListFile();
    		$oView=new _view('gestionBase::sauve');
    		$oView->tFile=$tFile;
    		$this->oLayout->add('main',$oView);
    	}
     
    	public function _createSave(){
    		$oSqldump=new model_sqldump;
    		_root::redirect('gestionBase::sauve');
    	}
     
    	public function _delete(){
    		if(!_root::getRequest()->isGet() ){ //si ce n'est pas une requete get on ne soumet pas
    			return null;
    		}
    		$oFile=new _file(_root::getParam('file'));
     
    		$oFile->delete();
     
    		_root::redirect('gestionBase::sauve');
    	}
     
     
    	public function _restore(){
    		if(!_root::getRequest()->isGet() ){ //si ce n'est pas une requete get on ne soumet pas
    			return null;
    		}
    		$oFile=new _file(_root::getParam('file'));
     
    		try{
            new model_sqlrestore(array(
            	'filename' => $oFile->getAdresse()
                ));
            	echo "Restauration faite";
        	}catch (Exception $e) {
        		echo 'Restauration impossible',  $e->getMessage(), "\n";
    		}
            _root::redirect('gestionBase::sauve');
     
    	}
     
     
     
    	public function after(){
    		$this->oLayout->show();
    	}
     
     
    }
    vue sauve
    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
    <div class="titre">SAUVEGARDE</div> 
     
    <?php if($this->tFile):?>
    		<?php foreach($this->tFile as $oFile):?>
    	<div class="ligne" >
    		<?php echo $oFile->getName() ?> <a href="<?php echo $this->getLink('gestionBase::restore',array('file'=>$oFile->getAdresse()))?>" title="restaurer la base de donnée">Restaurer</a>
    		<a href="<?php echo $this->getLink('gestionBase::delete',array('file'=>$oFile->getAdresse()))?>" title="Créer une sauvegarde">Supprimer</a>
            <br>
    	</div>
    	<?php endforeach;?>
    <?php endif;?>
     
    <a href="<?php echo $this->getLink('gestionBase::createSave')?>" title="Créer une sauvegarde">
    	<div class="button">Sauvegarder la base de donnée
    	</div>
    </a>

  14. #14
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Il y avait une erreur dans la classe modele: $templine n'etait pas initialisée
    Testé sur mon poste
    Code php : 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
    <?php 
    class model_sqlrestore extends abstract_model{
     
    //profil de connexion
    protected $sConfig='mysqlExple';
     
     
     
    private $tables = array();
    private $options = array(
        'filename' => '' 
    );
     
    private $string = "SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\";\n\n";
    private $connect;
     
        public static function getInstance(){
        return self::_getInstance(__CLASS__);
        }
     
        public function __construct($options = array()){
            foreach($options as $k => $v){
                $this->options[$k] =  $v;
            }
            $this->save();
        }
     
        private function save(){
     
            $lines = file($this->options['filename']);
            $templine=null ;
            // Loop through each line
            foreach ($lines as $line)
            {
                // Skip it if it's a comment
                if (substr($line, 0, 2) == '--' || $line == '')
                    continue;
     
                // Add this line to the current segment
                $templine .= $line;
                // If it has a semicolon at the end, it's the end of the query
                if (substr(trim($line), -1, 1) == ';')
                {
                    // Perform the query
                    $this->execute($templine) or print('Error performing query \'<strong>' . $templine . '\': <br /><br />');
                    // Reset temp variable to empty
                    $templine = '';
                    print $templine;
                }
            }
        } 
     
        protected function query($sReq,$tParam=null){
     
            $this->getSgbd()->getPdo()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 
            $sth = $this->getSgbd()->getPdo()->prepare($sReq);
            if(is_array($tParam)){
                $sth->execute($tParam);
            }else{
                $sth->execute();
            }
            return $sth;
        }
     
    }
    note: j'ai du ajouté un exit dans la methode restore du module gestionBase sinon je ne voyais pas l'erreur vu que vous faisiez ensuite une redirection
    Code php : 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
    public function _restore(){
    		if(!_root::getRequest()->isGet() ){ //si ce n'est pas une requete get on ne soumet pas
    			return null;
    		}
    		$oFile=new _file(_root::getParam('file'));
     
    		try{
            new model_sqlrestore(array(
            	'filename' => $oFile->getAdresse()
                ));
            	echo "Restauration faite";
        	}catch (Exception $e) {
        		echo 'Restauration impossible',  $e->getMessage(), "\n";
    		}exit;
            _root::redirect('default::sauve');
     
    	}
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  15. #15
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    Oui en effet il manqué la declaration de la variable.

    Le fait du exit avant le redirection c'est une idée que je retient.


    L'erreur actuelle est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Restauration impossible :PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
    Je suis en local mais la base est chez un hébergeur. C'est à cause de ça?

  16. #16
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Non il doit y avoir une erreur dans le fichier sql de restauration
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  17. #17
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    La requete contenu dans le fichier sql fonctionne-t-elle si vous utilisez phpmyadmin ?
    C'est soit la syntaxe soit un problème de droit du user sql.
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  18. #18
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    ça marche: Ccool:

    En fait dans ma base il y a des tables du cms 'spip' qui y sont aussi et les apostrophes ne sont pas encodé html. Du coup il y avait une erreur sql.

    Merci encore et Bonne journée.

  19. #19
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 201
    Points : 75
    Points
    75
    Par défaut
    Comment faire pour afficher dans ma vue 'sauvegarde supprimée' si on vient de la supprimer ou 'Sauvegarde effectuée' ...?

    Je doit l'écrire dans le méthodes respectives mais comme à la fin je fini par une redirection.

  20. #20
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Vous pourriez ajouter une variable lors de la redirection et afficher un message en fonction
    Code php : 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
    public function _restore(){
    		if(!_root::getRequest()->isGet() ){ //si ce n'est pas une requete get on ne soumet pas
    			return null;
    		}
    		$oFile=new _file(_root::getParam('file'));
     
    		try{
            new model_sqlrestore(array(
            	'filename' => $oFile->getAdresse()
                ));
            	$ok='ok';
        	}catch (Exception $e) {
        		$ok='nok';
    		}exit;
            _root::redirect('default::sauve',array('restore'=>$ok));
     
    	}
    Et lors de l'affichage de la page sauve
    Code php : 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
     
    <div class="titre">SAUVEGARDE</div> 
     
    <?php if($this->tFile):?>
    		<?php foreach($this->tFile as $oFile):?>
    	<div class="ligne" >
    		<?php echo $oFile->getName() ?> <a href="<?php echo $this->getLink('gestionBase::restore',array('file'=>$oFile->getAdresse()))?>" title="restaurer la base de donnée">Restaurer</a>
    		<a href="<?php echo $this->getLink('gestionBase::delete',array('file'=>$oFile->getAdresse()))?>" title="Créer une sauvegarde">Supprimer</a>
            <br>
    	</div>
    	<?php endforeach;?>
    <?php endif;?>
     
    <a href="<?php echo $this->getLink('gestionBase::createSave')?>" title="Créer une sauvegarde">
    	<div class="button">Sauvegarder la base de donnée
    	</div>
    </a>
    <?php if(_root::getParam('restore')=='ok'):?>
    <p>Restauration faite</p>
    <?php elseif(_root::getParam('restore')=='nok'):?>
    <p>Restauration a echou&eacute;</p>
    <?php endif;?>
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Sauvegarde et restauration automatique d'une base MySQL
    Par izem_n_dzayer dans le forum JDBC
    Réponses: 2
    Dernier message: 11/12/2013, 09h47
  2. Restaurer sauvegarde base mysql + wordpress
    Par lanuti69 dans le forum Installation
    Réponses: 2
    Dernier message: 24/09/2012, 22h33
  3. Restaurer une base mysql a partir de fichier .frm
    Par bigbo26 dans le forum Administration
    Réponses: 3
    Dernier message: 07/10/2011, 17h53
  4. Pb restauration base MySQL innodb via un dump
    Par Y.Guillermin dans le forum Administration
    Réponses: 4
    Dernier message: 27/09/2006, 16h49
  5. Problème de restauration de base mysql.
    Par Debellez dans le forum Administration
    Réponses: 4
    Dernier message: 14/12/2005, 12h52

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