Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/04/2011, 22h28   #1
Invité régulier
 
jm schweitzer
Inscription : juin 2010
Messages : 39
Détails du profil
Informations personnelles :
Nom : jm schweitzer

Informations forums :
Inscription : juin 2010
Messages : 39
Points : 6
Points : 6
Par défaut mise à jour base distante depuis base locale

Bonjour,
Je ne sais pas comment faire pour mettre à jour 2 tables de ma base de données chez mon Hébergeur, OVH.

1) Explication : Je travaille avec 2 bases de données, une chez OVH qui comporte 8 tables dont 2 intitulées« clients et animal » qui servent à pré remplir les formulaires de demande de devis sur le site.

2) L’autre base est sur mon pc en local. C’est elle la base principale. Elle tourne avec Wampserveur et comporte 18 tables dont « clients et animal » identiques à celle du site.

3) Il faudrait que je puisse facilement et régulièrement faire une copie des 2 tables de ma base locale principale pour mettre à jour les 2 tables de ma base chez OVH.
Actuellement j’exporte les données de ma base locale et les importe via la commande SQL chez OVH tout ça avec un copier coller du code. Ca fonctionne mais ce n’est pas très simple…..le problème est que je ne sais pas comment faire autrement.

Si quelqu’un a un peu de temps à perdre, son aide serait la bien venue.
Merci.
jmsch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 00h13   #2
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 587
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 587
Points : 861
Points : 861
un script en local et un script sur ton serveur chez ovh, le premier appelant le deuxième, pour l'implémentation tout dépend de ce que tu veux faire précisément...
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 07h37   #3
Invité régulier
 
jm schweitzer
Inscription : juin 2010
Messages : 39
Détails du profil
Informations personnelles :
Nom : jm schweitzer

Informations forums :
Inscription : juin 2010
Messages : 39
Points : 6
Points : 6
Je pense faire une copie des 2 tables locales et remplacer les données dans les tables chez OVH, mais hélas je ne sais pas comment le faire.
jmsch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 09h45   #4
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
tu devrais regarder pour faire un "Service web".

tu créés une page de webservice sur ton site ovh qui se chargera de prendre les données que tu lui donnes et de les mettre dans la db.

En local, tu fais un script qui génère les données de tes deux tables et qui les envoie au web service. Ensuite, tu n'auras qu'à appeler ta page en local pour faire la MAJ dans la db ovh.

Pour le web service, pour la sécurité: tu peux tester le passage d'une clef en parametre, clef que seul toi connait pour eviter que n'importe qui puisse mettre des données dans ta table.

C'est une solution. Ca requiert de passer un peu de temps à la faire si tu ne connais pas les webservices mais ensuite, ça pourra t'eviter de perdre tu temps à tout le temps faire des copier/coller.

Cordialement, Guillaume.
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

- Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 11h03   #5
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 709
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 709
Points : 3 279
Points : 3 279
Salut

Peut être n'est ce pas ce qui est souhaité, mais pourquoi ne pas créer un espace spécifique avec identification directement en ligne (genre Panel Admin), donc sur l'hébergeur et travailler directement sur la même Bdd ce qui évite toute la problématique de synchronisation de 2 Bdd locale/distante.
En somme, tout faire en ligne, presque comme Web Service finalement.

Ceci dit, une connexion internet sera obligatoire, c'est peut être ça le souci, c'est à dire travailler "Offline".


Autre solution aussi, ce serait de rendre la connexion de la Bdd de manière distante pour après pouvoir l'interroger en local (par exemple).
Mais faut en mesurer les risques.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 12h13   #6
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 587
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 587
Points : 861
Points : 861
Citation:
tu devrais regarder pour faire un "Service web".
c'est ce que je voulais lui suggérer mais c'est beaucoup de travail pour quelque chose qui ne risque d'être utilisé que par lui, sans compter le fichier WSDL qu'il faudra créer...
je pensé plus à un petit formulaire en local (un simple bouton...) traité par un script en local avec des file_get_contents() avec des paramètres en url que le script chez ovh utiliserait pour mettre à jour les tables et ferait un echo "ok" ou echo "ko" selon le résultat qui serait récupéré par file_get_contents...je sais ça ressemble beaucoup à un web service...
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 18h59   #7
Invité régulier
 
jm schweitzer
Inscription : juin 2010
Messages : 39
Détails du profil
Informations personnelles :
Nom : jm schweitzer

Informations forums :
Inscription : juin 2010
Messages : 39
Points : 6
Points : 6
pour répondre à RunCodePhp je n'ai pas en permanence une connexion sur mon pc local.
Je ne suis pas sur de tout comprendre, j'ai débuté php et le reste y a pas très longtemps.
Si je comprends bien en local je crée une page qui récupère mes données et cette page devra transmettre à une page distante.

sur la page local j'utilise quelque chose qui ressemble à ça: echo rawurlencode(serialize($data));

pour le récupérer sur le site je fais avec
Code php :
1
2
$data_x= file_get_contents('mapage.php');
$data_x = unserialize(rawurldecode($data_x));
et après j'insère dans ma base de donnée.
jmsch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 22h00   #8
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 709
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 709
Points : 3 279
Points : 3 279
Citation:
je n'ai pas en permenence une connection sur mon pc local.
C'est plutôt embêtant.


Il y a tout de même un point qui m'interpelle, car utiliser file_get_contents() c'est plutôt fait pour récupérer un fichier qui se trouverait déjà sur son espace d'hébergement.
Or, le besoin serait de, depuis un poste en local de déposer un fichier sur cet espace d'hébergement (fichier .sql, ou .xml, voir .php, peu importe).

Et bien utiliser les fonctions FTP de Php peut être une bonne solution, car plutôt simple d'usage.

En gros :
- On exécute en local une page qui elle se charge de déposer le fichier via FTP (des données récupérées dans la Bdd locale).
- Immédiatement après, on exécute un code qui pointera vers un fichier Php sur le serveur distant (la fonction header peu suffire).
- Ce fichier Php distant se chargerait de faire ce que l'on souhaite (comme par exemple de récupérer le contenu du fichier déposé précédemment, et insérer les données dans la Bdd distante).
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 22h12   #9
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 587
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 587
Points : 861
Points : 861
un script chez ovh qui recevera des paramètres en GET, par exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
if($action == "insert"){
$requete = "INSERT INTO ".mysql_real_escape_string($_GET['table']);
$requeteChamps = "(";
$requeteValeurs = "VALUES (";
foreach($_GET['champs'] as $cle => $valeur){
for($i=0; $i < count($_GET['champs']); $i++){
if($i == count($_GET['champs'])){
$requeteChamps .= mysql_real_escape_string($cle).")";
$requeteValeurs .= mysql_real_escape_string($valeur).")";
}else{
$requeteChamps .= mysql_real_escape_string($cle).",";
$requeteValeurs .= mysql_real_escape_string($valeur).",";
}
}
}
$requete .= $requeteChamps.$requeteChamps.")".$requeteVALEURS.")";
//tu exécutes la requete et selon le résultat tu mes echo "ok" ou echo "ko" si c'est pas bon c'est ce que ton script en local va récupérer via file_get_contents()
un script en local :
Code :
1
2
3
4
$_GET['action'] = "insert";
$_GET['table'] = "clients";
$_GET['champs'] = array("champs1" => "valeur1",...);
//la tu fais un file_get_content() avec les paramètres récupérés depuis ta bdd locale.
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 22h39   #10
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 587
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 587
Points : 861
Points : 861
Citation:
Il y a tout de même un point qui m'interpelle, car utiliser file_get_contents() c'est plutôt fait pour récupérer un fichier qui se trouverait déjà sur son espace d'hébergement.
non avec un script php dans lequel il y'a un echo() c'est ce qui a dans l'echo qui est récupéré et pas le script lui même...
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 12h53   #11
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 709
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 709
Points : 3 279
Points : 3 279
Citation:
non avec un script php dans lequel il y'a un echo() c'est ce qui a dans l'echo qui est récupéré et pas le script lui même...
Effectivement, je ne l'avais perçu ainsi.
Plutôt astucieux et simple, faut le dire.


En fait, ça revient un peu faire un header(), avec l'avantage d'obtenir une réponse : Ok ou Ko, ce qui n'est pas négligeable.


De mon coté j'aurais instinctivement sortie l'artillerie (un peu) lourde comme cUrl, Ajax, ou FTP.
J'ai déjà fait quelques essai comme ça juste par curiosité pour un Web Service (SoapServer/SoapClient), c'est plutôt hard.
Je dirais que ça ne s'improvise pas.


Il me semble qu'il est bon de rajouter que créer une page pouvant être exécutée via une URL qui au bout effectue des modifications dans une Bdd demanderait un minimum de sécurité afin d'éviter que n'importe qui ne le fasse.
Une authentification par exemple ne serait pas du superflu.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 14h19   #12
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 587
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 587
Points : 861
Points : 861
Citation:
Effectivement, je ne l'avais perçu ainsi.
Plutôt astucieux et simple, faut le dire.
merci, j'ai grand besoin d'encouragement en ce moment...
effectivement un mot de passe et un identifiant ne serait pas du luxe...
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 16h59   #13
Invité régulier
 
jm schweitzer
Inscription : juin 2010
Messages : 39
Détails du profil
Informations personnelles :
Nom : jm schweitzer

Informations forums :
Inscription : juin 2010
Messages : 39
Points : 6
Points : 6
Je regarde un peu tout ce que vous proposer. Pas très évident pour un débutant. Va falloir que je potasse encore un peu les divers tutos sur le Net. Lol.
Je suis toute à fait d'accord quand vous dite qu'il faut sécuriser la connexion à la page distante.
Vous me dite de faire le transfert via GET. Il me semble qu’on est limité en nombre de données transférables. N’est-il pas mieux de le faire en post ?
jmsch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 17h03   #14
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 587
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 587
Points : 861
Points : 861
Citation:
N’est-il pas mieux de le faire en post ?
si t'arrives à faire passer des paramètres entre deux script php en post je suis preneur.
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 17h53   #15
Invité régulier
 
jm schweitzer
Inscription : juin 2010
Messages : 39
Détails du profil
Informations personnelles :
Nom : jm schweitzer

Informations forums :
Inscription : juin 2010
Messages : 39
Points : 6
Points : 6
un petit formulaire avec un champs input au quel on attribuerait le résultat du select fait sur la table clients, ca ne fonctionnerait pas?
jmsch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 23h06   #16
Invité régulier
 
jm schweitzer
Inscription : juin 2010
Messages : 39
Détails du profil
Informations personnelles :
Nom : jm schweitzer

Informations forums :
Inscription : juin 2010
Messages : 39
Points : 6
Points : 6
voilà comment j'ai fait ca pourra peut être servir à quelqu'un un jour.

sur la page local
Code :
1
2
3
4
5
6
7
8
echo '<form method="POST" action="mapagechezOVH.php">';//pour envoie chez OVH
 
echo '<input name="identifiant" type="hidden" value="',IDENTIFIANT,'" />';
 
echo '<input name="update_data_cl" type="hidden" value="', rawurlencode(serialize($data_cl)), '" />';
echo '<input name="update_data_ani" type="hidden" value="', rawurlencode(serialize($data_ani)), '" />';
echo '<input type="submit" value="mettre à jour" />';
echo '</form>';


Code :
1
2
3
4
5
6
 
//récupération des données
$update_data_cl = unserialize(rawurldecode($_POST['update_data_cl']));
$update_data_ani = unserialize(rawurldecode($_POST['update_data_ani']));
if($_POST['identifiant']=IDENTIFIANT)
{insertion dans la base}
jmsch est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h43.


 
 
 
 
Partenaires

Hébergement Web