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 :

Synchroniser une base locale et une base distante


Sujet :

PHP & Base de données

  1. #21
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    en fait non ca me sort une erreur sql, le probleme c'est que c'est jamais la meme et jamais sur le meme index du tableau non plus...

    exemples
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    REQUETE ECHOUEE (469): You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'Guinea', 'GQ', 'GNQ', '1')' at line 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    REQUETE ECHOUEE (1404): Table '***_compare.products_ts' doesn't exist
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    REQUETE ECHOUEE (1741): You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'zones VALUES('166', '195', 'Ourense', 'Ourense')' at line 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    REQUETE ECHOUEE (58): You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '49', 'essuie-mains.jpg', '23', '4', '2006-02-02 14:35:29', '200
    Ca fait comme si il sautait des lignes alors qu'elles ne sont pas vides non ?
    Le contenu est roi, optimisé il est empereur...

    Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.

    http://www.tethis-interactive.com

  2. #22
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    À la place de die(mysql_error()), utilise die($sql.'<br />'.mysql_error()), cela te donnera davantage d'infos.
    Ce sont visiblement des requêtes syntaxiquement incorrectes (si je sais encore lire) : c'est relativement facile à corriger mais cela signifie que le fichier que tu lis ne contient pas des requêtes correctes (c'est en partie ce qui motive ma suggestion du fichier brut).

  3. #23
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    Citation Envoyé par Kirkis
    À la place de die(mysql_error()), utilise die($sql.'<br />'.mysql_error()), cela te donnera davantage d'infos.
    Ce sont visiblement des requêtes syntaxiquement incorrectes (si je sais encore lire) : c'est relativement facile à corriger mais cela signifie que le fichier que tu lis ne contient pas des requêtes correctes (c'est en partie ce qui motive ma suggestion du fichier brut).
    on a eu la meme idée en meme tps

    effectiveemnt les requetes contiennent des erreurs cela veut dire qu'il y a des erreur dans mon fichier dump.php que j'ai mis ci-dessus et qui génére mon sql mais la je vois vraiment pas d'ou ca peut venir...

    pas de fichier brut desolé...

    Si quelqu'un voit l'erruer je suis preneur car c'est un fichier que j'ai repris sur le net et je vois pas ce qui peut clocher a moins que vous ayez un autre script du meme genre a me proposer qui me génére une chaine sql en sortie que je stocke dans un fichier

    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
     
    <?php
    //renvoye une chaine de caracteres contenant le dump de la base passée en parametres
    function mysql_structure($base) {
     
      $tables = mysql_list_tables($base);
     
      while ($donnees = mysql_fetch_array($tables))
        {
        $table = $donnees[0];
        $res = mysql_query("SHOW CREATE TABLE $table") or die('ERREUR : '.mysql_error());
        if ($res)
          {
          $insertions = "";
          $tableau = mysql_fetch_array($res);
          $tableau[1] .= ";";
          $dumpsql[] = str_replace("\n", "", $tableau[1]);
          $req_table = mysql_query("SELECT * FROM $table") or die('ERREUR : '.mysql_error());
          $nbr_champs = mysql_num_fields($req_table);
          while ($ligne = mysql_fetch_array($req_table))
            {
            $insertions .= "INSERT INTO $table VALUES(";
            for ($i=0; $i<=$nbr_champs-1; $i++)
              {
              $insertions .= "'" . mysql_real_escape_string($ligne[$i]) . "', ";
              }
            $insertions = substr($insertions, 0, -2);
            $insertions .= ");\n";
            }
          if ($insertions != "")
            {
            $dumpsql[] = $insertions;
            }
          }
        }
      return implode("\r", $dumpsql);
      }
    ?>
    Le contenu est roi, optimisé il est empereur...

    Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.

    http://www.tethis-interactive.com

  4. #24
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Si cela peut t'aider (j'ai la flemme de tout copier ici), j'ai fait un script qui dumpe une BDD [lien].

  5. #25
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    bah moi il me faudrait plutot une sortie dans une chaine ou un fichier comme le code que j'ai mis au dessus...
    Le contenu est roi, optimisé il est empereur...

    Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.

    http://www.tethis-interactive.com

  6. #26
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Mon script écrit dans un fichier texte compressé. Il ne te reste plus qu'à trouver la portion qui t'intéresse (la 2º partie sur 3, celle qui extrait les données) et à l'adapter. Comme tu cherches à le simplifier, je ne pense pas que tu auras trop de problèmes.
    En tout cas, la méthode est similaire.

  7. #27
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    dump2.php
    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
    <?
    //function
    function mysql_sauv($server,$login,$pass,$base){
    	$bdd = mysql_connect($server,$login,$pass) or die ("Impossible de se connecter à la base");
    	mysql_select_db($base,$bdd) or die ("Impossible d'ouvrir la base de donnees");
     
    	$liste_tables = mysql_list_tables($bdd);
     
    	$dump=null;
     
    	// pour chaque table
    	for ($i=0;$i<mysql_numrows($liste_tables);$i++){
    	   $table_actuelle=mysql_result($liste_tables,$i,0);
    	   $create= mysql_query("SHOW CREATE TABLE ".$table_actuelle) or die('ERREUR : '.mysql_error());
    	   $var = mysql_result($create,0);
    	   $dump .= $var;
    	   $nb_colonnes=mysql_num_rows(mysql_query("SHOW COLUMNS FROM ". $table_actuelle));
    	   $contenu=mysql_query("SELECT * FROM ".$table_actuelle);
     
    	   // pour chaque ligne de la table en cours
    	   for ($j=0;$j<mysql_numrows($contenu);$j++){
    	       $dump=$dump. 'INSERT INTO '.$table_actuelle.' VALUES (';
     
    	       // pour chaque colonne de la ligne en cours
    	       for($k=0;$k<$nb_colonnes;$k++){
    	            // si 1ère colonne, la position des virgules est diff dans VALUES()
    	               if($k==0){
    	                 $dump=$dump.'\''.mysql_result($contenu,$j,$k).'\'';
    	                }
    	               if($k!= 0){
    	                $dump=$dump.',\''.mysql_result($contenu,$j,$k).'\'';
    	                }
    	            }
    	         $dump=$dump. ');';
    	       }
    	  }
     
    	mysql_close();
     
    	return $dump
    }
     
    ?>
    generer.php
    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
    <?php
    include('dump2.php');
     
    $server = 'localhost';
    $user = '***';
    $pass = '***';
    $base = '***';
     
    //$bdd = mysql_connect($server,$user,$pass) or die('IMPOSSIBLE DE SE CONNECTER : '.mysql_error());
    //mysql_select_db("lespm",$bdd) or die('IMPOSSIBLE DE SE SELECTIONNER LA BASE : '.mysql_error());
     
    $chemin = '***.sql';
     
    	if(!$fichier = fopen($chemin,'w')){
     
    		echo "Impossible d'ouvrir le fichier ($chemin)";
    		exit;
    	}
    	else{
    		$sauv = mysql_sauv($server,$user,$pass,$base);
    		if(fwrite($fichier,$sauv) === FALSE){
    			echo "Impossible d'écrire dans le fichier ($chemin)";
    			exit;
    		}
    		else{
    			echo "L'écriture de dans le fichier ($chemin) a réussi";
    			fclose($fichier);
    		}
    	}	
     
    mysql_close($bdd);
     
    ?>
    Erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Call to undefined function: mysql_sauv() in C:\wamp\www\lespm\generer.php on line 20
    Je comprends pas la... ou est l'erreur ?

    Sinon à votre avis ma fonction de sauvegarde elle fonctionne ?
    Le contenu est roi, optimisé il est empereur...

    Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.

    http://www.tethis-interactive.com

  8. #28
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    Citation Envoyé par Kirkis
    Mon script écrit dans un fichier texte compressé. Il ne te reste plus qu'à trouver la portion qui t'intéresse (la 2º partie sur 3, celle qui extrait les données) et à l'adapter. Comme tu cherches à le simplifier, je ne pense pas que tu auras trop de problèmes.
    En tout cas, la méthode est similaire.
    je m'en sors pas dans ton code je comprends pas tout donc a moins que tu me donnes exactement ce qui est bon pour moi je préfére pas y toucher
    Le contenu est roi, optimisé il est empereur...

    Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.

    http://www.tethis-interactive.com

  9. #29
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    help help je comprends pas pourquoi il me dit que je fais appel a une fonction indéfinie...
    Le contenu est roi, optimisé il est empereur...

    Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.

    http://www.tethis-interactive.com

  10. #30
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Re

    J'essaierai de te répondre plus précisément ce soir.
    En attendant, essaie d'utiliser require() pour les fichiers fondamentaux et les long tags <?php.

  11. #31
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    non c'est bon j'ai trouvé le probleme c'était effectivement le <?php j'avais oublié de le préciser, merci quand meme
    Le contenu est roi, optimisé il est empereur...

    Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.

    http://www.tethis-interactive.com

  12. #32
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    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
    <?php
    //function
    function mysql_sauv($server,$login,$pass,$base){
     
    	$bdd = mysql_connect($server,$login,$pass) or die ("Impossible de se connecter à la base");
    	mysql_select_db($base,$bdd) or die ("Impossible d'ouvrir la base de donnees");
     
    	$liste_tables = mysql_list_tables($base);
     
    	$dump=null;
     
    	// pour chaque table
    	for ($i=0;$i<mysql_num_rows($liste_tables);$i++){
    	   $table_actuelle=mysql_result($liste_tables,$i,0);
    	   //structure
    	   $create= mysql_query("SHOW CREATE TABLE ".$table_actuelle) or die('ERREUR : '.mysql_error());
    	   $tableau = mysql_fetch_array($create);
    	   $tableau[1] .= ";";
    	   $dump .= str_replace("\n", "", $tableau[1]);
    	   $dump .= "<finReq>\n";
     
    	   //données
    	   $nb_colonnes=mysql_num_rows(mysql_query("SHOW COLUMNS FROM ". $table_actuelle));
    	   $contenu=mysql_query("SELECT * FROM ".$table_actuelle);
     
    	   // pour chaque ligne de la table en cours
    	   for ($j=0;$j<mysql_num_rows($contenu);$j++){
    	       $dump=$dump. 'INSERT INTO '.$table_actuelle.' VALUES (';
     
    	       // pour chaque colonne de la ligne en cours
    	       for($k=0;$k<$nb_colonnes;$k++){
    	            // si 1ère colonne, la position des virgules est diff dans VALUES()
    	               if($k==0){
    	                 $dump=$dump.'\''.addslashes(mysql_result($contenu,$j,$k)).'\'';
    	                }
    	               if($k!= 0){
    	                $dump=$dump.',\''.addslashes(mysql_result($contenu,$j,$k)).'\'';
    	                }
    	            }
    	         $dump=$dump. ');';
    			 $dump .= "<finReq>\n";
    	       }
    	  }
     
    	mysql_close($bdd);
     
    	return $dump;
    }
     
    ?>
    Ma fonction marche bien mais a la fin du dump il me rajoute 3 lignes qui sont déjà dans le dump.
    Pouvez vous le tester chez vous pour voir si vous avez le meme probleme et si oui essaye de me dire d'ou ca peut venir parce que la je vois vraiment pas...
    Le contenu est roi, optimisé il est empereur...

    Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.

    http://www.tethis-interactive.com

  13. #33
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    Je vous montre le probleme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //fichier dump valide
     
    CREATE TABLE `zones_to_geo_zones` (  `association_id` int(11) NOT NULL auto_increment,  `zone_country_id` int(11) NOT NULL default '0',  `zone_id` int(11) default NULL,  `geo_zone_id` int(11) default NULL,  `last_modified` datetime default NULL,  `date_added` datetime NOT NULL default '0000-00-00 00:00:00',  PRIMARY KEY  (`association_id`)) TYPE=MyISAM;<finReq>
     
    INSERT INTO zones_to_geo_zones VALUES ('1','74','','1','2006-02-01 15:22:35','2006-01-30 15:43:23');<finReq>
     
    ia','Palencia');<finReq>
     
    INSERT INTO zones VALUES ('168','195','Pontevedra','Pontevedra');<finReq>
     
    INSERT INTO zones VALUES ('169','195','Salamanca','Salamanca');<finReq>
    Voila le probleme se pose sur les 3dernieres lignes, en effet la 3eme en partant de la fin pose évidemment problèeme alors que les deux dernières sont déjà présente dans le dump
    Le contenu est roi, optimisé il est empereur...

    Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.

    http://www.tethis-interactive.com

  14. #34
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    En fait sur le fichier qui est sur le serveur c'est bon, ces 3 lignes sont rajoutées dans le fichier que j'ai récupéré sur ma machine local via ftp..

    je récupére comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // Mise en place d'une connexion basique
    			$conn_id = ftp_connect($ftp_server);
    			// Identification avec un nom d'utilisateur et un mot de passe
    			$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
    			//telechargement du dump sql généré
    			ftp_get($conn_id,'sql/distant.sql','/sql/***.sql',FTP_ASCII);
     
    		//fermeture de la connexion FTP
    			ftp_close($conn_id);
    Le contenu est roi, optimisé il est empereur...

    Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.

    http://www.tethis-interactive.com

  15. #35
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    help help
    Le contenu est roi, optimisé il est empereur...

    Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.

    http://www.tethis-interactive.com

  16. #36
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    Pour ceux que le projet interese j'ai résolu le problème en modifiant ma solution, je ne passe plus par le ftp mais c'est mon ficher générer.php qui est sur le serveur qui me sert mon dump...

    generer.php
    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
     
    <?php
    include('dump2.php');
     
    $server = 'localhost';
    $user = '***';
    $pass = '***';
    $base = '***';
     
    $chemin = '/home/lespm/sql/lespm.sql';
     
    	if($fichier = fopen($chemin,'w')){
    		$sauv = mysql_sauv($server,$user,$pass,$base);
    		fwrite($fichier,$sauv);
    		fclose($fichier);
    	}	
     
    	echo $sauv;
     
    ?>
    Le contenu est roi, optimisé il est empereur...

    Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.

    http://www.tethis-interactive.com

  17. #37
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    Pour ceux que le projet interese j'ai résolu le problème en modifiant ma solution, je ne passe plus par le ftp mais c'est mon ficher générer.php qui est sur le serveur qui me sert mon dump...

    Sur le serveur
    generer.php
    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
     
    <?php
    include('dump2.php');
     
    $server = 'localhost';
    $user = '***';
    $pass = '***';
    $base = '***';
     
    $chemin = '/home/lespm/sql/lespm.sql';
     
    	if($fichier = fopen($chemin,'w')){
    		$sauv = mysql_sauv($server,$user,$pass,$base);
    		fwrite($fichier,$sauv);
    		fclose($fichier);
    	}	
     
    	echo $sauv;
     
    ?>
    dump2.php
    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
     
    <?php
    //function
    function mysql_sauv($server,$login,$pass,$base){
     
    	$bdd = mysql_connect($server,$login,$pass) or die ("Impossible de se connecter à la base");
    	mysql_select_db($base,$bdd) or die ("Impossible d'ouvrir la base de donnees");
     
    	$liste_tables = mysql_list_tables($base);
     
    	$dump=null;
     
    	// pour chaque table
    	for ($i=0;$i<mysql_num_rows($liste_tables);$i++){
    	   $table_actuelle=mysql_result($liste_tables,$i,0);
    	   //structure
    	   $create= mysql_query("SHOW CREATE TABLE ".$table_actuelle) or die('ERREUR : '.mysql_error());
    	   $tableau = mysql_fetch_array($create);
    	   $tableau[1] .= ";";
    	   $dump .= str_replace("\n", "", $tableau[1]);
    	   $dump .= "<finReq>\n";
     
    	   //données
    	   $nb_colonnes=mysql_num_rows(mysql_query("SHOW COLUMNS FROM ". $table_actuelle));
    	   $contenu=mysql_query("SELECT * FROM ".$table_actuelle);
     
    	   // pour chaque ligne de la table en cours
    	   for ($j=0;$j<mysql_num_rows($contenu);$j++){
    	       $dump=$dump. 'INSERT INTO '.$table_actuelle.' VALUES (';
     
    	       // pour chaque colonne de la ligne en cours
    	       for($k=0;$k<$nb_colonnes;$k++){
    	            // si 1ère colonne, la position des virgules est diff dans VALUES()
    	               if($k==0){
    	                 $dump=$dump.'\''.addslashes(mysql_result($contenu,$j,$k)).'\'';
    	                }
    	               if($k!= 0){
    	                $dump=$dump.',\''.addslashes(mysql_result($contenu,$j,$k)).'\'';
    	                }
    	            }
    	         $dump=$dump. ');';
    			 $dump .= "<finReq>\n";
    	       }
    	  }
     
    	mysql_close($bdd);
     
    	return $dump;
    }
     
    ?>
    En local
    synchroniser.php
    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
     
    <?php session_start();
    require('librairie/connexion.php');
     
    if($_SESSION['login'] != true){
    	unset($_SESSION['login']);
    	header('Location:index.php');
    }
    else{
    	if(isset($_POST['synchro'])){
     
    		//remplissage de la deuxième base
    			$base = '***';//base locale
    			$base_compare = '***_compare';//base créé pour mettre la base distante et comparer
     
    			//recuperation du dump
    			$filename = 'http://www.***/***/***/generationSQL/generer.php';		
    			$chaine = file_get_contents($filename);
     
    			//stockage du dump dans un tableau ou chaque index contient une requete
    			$tableau = explode("<finReq>",$chaine);
    			$nb_lignes = count ($tableau)-1;
     
    			mysql_drop_db($base_compare);//supprime la base existante
    			mysql_create_db($base_compare);//crée la base			
    			mysql_selectdb($base_compare);//selectionne la base
     
    			//on parcourt le tableau pour executer les requetes
    			for ($i=0; $i<=$nb_lignes; $i++) {
    				if(!empty($tableau[$i]) and (trim($tableau[$i]) != ''))//verifie que l'index $i n'est pas vide
    					mysql_query( $tableau[$i]) or die('REQUETE ECHOUEE ('.$i.'): '.mysql_error());
    			}
     
    		//comparaison des deux bases
     
     
     
    		//drop de la base locale et traitement du dump
     
    	}
    	else{
     
    ?>
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    		<link rel="stylesheet" type="text/css" href="css/style.css">
    		<title>***</title>
    	</head>
     
    	<body>
    		<h1>***</h1>
    		<h2>***</h2>
    		<table>
    			<tr>
    				<td valign='top' width='200px'>
    					<?php
    						require('menu.php'); 
    					?>
    				</td>
    				<td valign='top' width='1000px'>
     
    					<h3>***</h3>
    					<form action = 'synchroniser.php' method = 'post'>
    						<input type = 'submit' name = 'synchro' value = 'Synchroniser'>
    					</form>
    				</td>			
    			</tr>
    		</table>
     
    	</body>
     
    </html>
     
     
    <?php
    	}
    }
    ?>
    N'hésitez pas si vous avez des questions...

    Je vais maintenant m'attaquer à la comparaison de mes deux bases afin de les synchroniser...
    Le contenu est roi, optimisé il est empereur...

    Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.

    http://www.tethis-interactive.com

  18. #38
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    Si il y a des gens qui veulent me donner un coup de main a developper la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function synchronisation($base,$base_compare){
     
    }
    je suis pas contre parce que ca va etre long...

    la fonction prend deux bases en parametres et renvoye une chaine de caracteres contenant le dump de la base synchronisée...
    Le contenu est roi, optimisé il est empereur...

    Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.

    http://www.tethis-interactive.com

  19. #39
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Est-ce que tu souhaites simplement ajouter les nouveaux tuples dans la 2º base ou bien réellement synchroniser les bases ?

  20. #40
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    non non bien synchroniser les deux bases c'est a dire que dans les deux bases il peut y avoir des tuples ajoutés, modifiés ou supprimer iil faut donc synchroniser les 2 bases pour n'en faire qu'une et en perdnat aucune information...tout en sacahnt que si 1 tuples sont modifiés dans ls deux base, c'est $base qui a raison ($base_compare est la base distante que l'on a importé alors que $base est la base locale)

    j'espére avoir été clair
    Le contenu est roi, optimisé il est empereur...

    Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.

    http://www.tethis-interactive.com

Discussions similaires

  1. Choix entre une base local ou la base distante
    Par bm10 dans le forum WinDev
    Réponses: 1
    Dernier message: 23/01/2015, 08h08
  2. Réponses: 82
    Dernier message: 05/02/2011, 14h34
  3. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  4. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24
  5. mise à jour d'une BDD locale sur un serveur distant
    Par jive dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 22/08/2005, 21h26

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