APPLICATION PHP/SQL - PHP - Programmation
Marsh Posté le 12-04-2012 à 09:26:29
Oui, c'est faisable. Par contre, perds pas de vue que le sgbd utilisé doit pouvoir accéder aux bases (par ex, qu'elles soient toutes dans son répertoire contenant les BD ou que des alias ODBC ou équivalent existent et pointent sur les BD).
EX : si ton sgbd est Mysql, c'est pas parce que sur un PC ou autre machine, t'as dans des répertoires des BD au format Mysql que le sgbd de ton appli va pouvoir les ouvrir. Pour ça, il faudra que les BD se trouvent toutes soit dans le répertoire /data/ du serveur Mysql, soit qu'il existe des liens ODBC ou équivalent (je pense, sous Linux, à des montages NFS qui montraient les répertoires des BD dans le répertoire /data/ du sgbd) qui relient les BD au sgbd Mysql.
Et si tu veux que ton appli puisse ouvrir différents types de BD (Oracle, Mssql, mysql, postgres...), c'est possible, mais ça veut dire qu'il faudra installer (pas forcément sur le même serveur) autant de types de sgbd que de types de BD. Ca veut dire aussi que ton code PHP devra être capable de se connecter à ces différents types de sgbd (soit tu utilises une couche d'abstraction, soit tu codes les différents codes pour chaque sgbd).
Pour le coup de l'IP, j'ai pas trop compris. A mois que t'aies plusieurs serveurs, tu ne pourras pas créer des BD n'importe où (par ex, pas possible en local d'un poste utilisateur). Tu ne pourras écrire que sur le serveur où tourne le sgbd, voire l'appli php, si tu fais créer temporairement le BD sur le sgbd puis que tu fasses un export de la BD et que t'écrives le fichier résultant sur le serveur de l'appli. Si y'a des montages NFS en R/W sur le serveur où tourne l'appli php, tu pourras faire la même manip (création sur le sgbd, export, écriture du fichier).
Pour que ça soit écrit sur le poste utilisateur, il faudra faire un export de la BD puis proposer le fichier en téléchargement.
Marsh Posté le 12-04-2012 à 09:49:42
En fait, les BD livrées avec nos systèmes sont déposer sur le NAS (Lacie) avant la livraison (tous sont des fichiers SQL ...).
On voudrait créer une interface (via un site WEB intranet par exemple) qui demande à l'utilisateur de taper le nom d'une BDD (si le nom est trouvé dans le NAS) alors on propose la modification des valeurs des champs, puis on enrengistre la nouvelle BDD sans écraser l'ancienne sur le NAS (je pense que la meilleure solution sera de créer la BDD en local via le script puis apporter les modifications dessus). Si elle n'est pas trouvé, on crée une BDD vierge dans laquelle on rentrera les valeurs. La BDD sera crée sur le PC utilisateur (ils ont déjà MySQL installé ...), ensuite on fera une sauvegarde sur le NAS.
Merci.
Marsh Posté le 12-04-2012 à 12:17:07
Mais ton appli, elle est stockée où? Parce qu'il faut que les fichiers SQL stockés sur le NAS puissent être transférés sur le PC utilisateur et être importés dans Mysql (instance locale au poste utilisateur) et que le transfert inverse soit possible aussi. Si ton appli web est centralisée, ça suppose que le serveur hébergeant ton appli ait accès en écriture à tous les postes utilisateurs concernés et au NAS. Ca me paraît bien compliqué et dangereux
L'autre solution serait que chaque PC utilisateur ait une instance de ton appli en local (un wamp portable par ex) mais là, tu perds l'avantage de l'appli web centralisée (à chaque évol de l'appli, faudra la distribuer aux PC utilisateurs), pas top...
Je vois pas pourquoi tu pourrais pas faire tout sur une seule machine (appli web + mysql qui chargera les BD demandées et se chargera de les créer si elles n'existent pas).
Marsh Posté le 12-04-2012 à 13:37:27
L'appli peut être stockée sur chaque PC (ils y en a que 4) ou bien sur un des 4 ... (la bonne solution ?) Pour executer les scripts il faut forcément que les scripts des BDD présents sur le NAS soient importés dans le MySQL de chaque PC ? (ça ne saura donc pas automatiser ?) Puis pour la sauvegarde des BDD sur le NAS, c'est une exigence du service ...
Merci;
Marsh Posté le 12-04-2012 à 15:33:05
sur l'un des 4, ça serait mieux.
Marsh Posté le 12-04-2012 à 17:36:08
rufo a écrit : Mais ton appli, elle est stockée où? Parce qu'il faut que les fichiers SQL stockés sur le NAS puissent être transférés sur le PC utilisateur et être importés dans Mysql (instance locale au poste utilisateur) et que le transfert inverse soit possible aussi. Si ton appli web est centralisée, ça suppose que le serveur hébergeant ton appli ait accès en écriture à tous les postes utilisateurs concernés et au NAS. Ca me paraît bien compliqué et dangereux |
Heu pour ce qu'il veux faire faudrait surtout faire du sqlite...
Parce que en PHP+MySQL ça va être de l'usine à gaz quoi... Surtout que point de vue droit & co bon voilà quoi...
Marsh Posté le 12-04-2012 à 20:22:45
Pourquoi c'est pas possible avec du php ?
La 1ère étape ca sera d'abord de créer un script (php ?) qui fasse la :
- Connexion au NAS (on a nos BDD livrés dessus, fichiers .sql)
- Importation des BDD.sql dans le dossier SQL des PC (comment ça se passera si le fichier .sql a déjà était copier ?)
- Importation des .sql dans MySQL (--> création des BDD, parcontre ici vous avez dit que les BDD doivent tte être présente pour regarder si la BDD est présente ou non depuis la page HTML, donc on importe toutes les BDD à chaque fois ? )
C'est qu'à partir de là, que je pourrais commencer la suite (ecriture dans la BDD, renvoie vers le NAS ...). Avez vous des idées pour la 1ère partie (sachant que j un peu simplifier la tâche, parce que initialement l'utilisateur devait taper le nom d'une BDD sur la page HTML et ensuite il y avait une recherche dans le NAS ..., là je proposerai tout cas dans un script qui pourra éventuellement se déclencher tout seul pour plus de transparence et ce seront toutes les BDD qui seront importés parcontre!!!)
Marsh Posté le 13-04-2012 à 09:03:38
Il a pas dit que c'était pas possible en php, il a dit qu'il valait mieux utiliser Sqlite plutôt que Mysql.
Perso, je vois pas trop pourquoi. Sqlite est certes un sgbd très léger, mais vue que Mysql est déjà installé sur les PC utilisateurs, du coup, ça devient plus trop un argument à mon sens.
MEI, tu pourrais détailler ta solution, svp?
Marsh Posté le 13-04-2012 à 09:31:57
rufo a écrit : Il a pas dit que c'était pas possible en php, il a dit qu'il valait mieux utiliser Sqlite plutôt que Mysql. |
C'est beaucoup plus facile de déposer une fichier unique, qui ne demande aucune configuration que d'exporter une BDD MySQL, la réimporter, et prier que rien ne foire dans le process.
Mais bon même en sqlite j'ai peur que ça finisse en usine à gaz complexe...
Marsh Posté le 14-04-2012 à 21:13:53
La 1ère étape ca sera d'abord de créer un script (bat ?) qui fasse la :
- Connexion au NAS (on a nos BDD livrés dessus, fichiers .sql)
- Importation des BDD.sql dans le dossier SQL des PC (comment ça se passera si le fichier .sql a déjà était copier ?)
idée de code :
Code :
|
- Importation des .sql dans MySQL (--> création des BDD, parcontre ici vous avez dit que les BDD doivent tte être présente pour regarder si la BDD est présente ou non depuis la page HTML, donc on importe toutes les BDD à chaque fois ? )
C'est qu'à partir de là, que je pourrais commencer la suite (ecriture dans la BDD, renvoie vers le NAS ...). Avez vous des idées pour la 1ère partie (sachant que j un peu simplifier la tâche, parce que initialement l'utilisateur devait taper le nom d'une BDD sur la page HTML et ensuite il y avait une recherche dans le NAS ..., là je proposerai tout cas dans un script qui pourra éventuellement se déclencher tout seul pour plus de transparence et ce seront toutes les BDD qui seront importés parcontre!!!) Merci
Marsh Posté le 14-04-2012 à 22:50:12
Tu peux tout faire ne php si tu veux, pas besoin de .bat (encore que php peut exécuter un .bat via la commande shell_exec() ). Tout le pb est une question d'accès.
Par contre, je me souviens que php (et y'a peut-être pas que lui) a un souci pour manipuler les fichiers situés sur un lecteur réseau monté sous windows...
Marsh Posté le 14-04-2012 à 22:55:55
Avec cette commande, je suis sensé récupérer les fichiers .sql (BDD) du NAS et les exporter vers le serveur WEB, elle comporte beaucoup d'erreurs ? (j'opterai sans doute pour l'installation des pages WEB sur un seul PC bien que l'on en ait 4, parcontre les BDD devront être créer sur les PCs des développeurs ....)
Marsh Posté le 15-04-2012 à 18:08:09
si tu pars sur une solution web, la création des BD sur les PC des dév ne va pas être évidente, c'est pas l'architecture classique où y'a juste un seul SGBD. Là, t'es a 4...
Question : pourquoi les BD doivent être sur les PC des dév?
Marsh Posté le 15-04-2012 à 22:01:46
En fait, les BDD stockent les résultats des tests, elles sont remplis depuis les PCs de développement puis elles sont enrengistrer sur le NAS, on voudrait donc que les développeurs puissent modifier certains paramètres en reprenant des BDD issues du NAS (en sauvegardant une nouvelle version, sans toucher à la 1ère), le developpeur aura ensuite la BDD sur son PC et il pourra réaliser les tests et récupérer de nouvelles valeurs en fonction des paramètres (il y a qu'un certain nombre de tables à modifier, je pense que je devrais supprimer les enregistrements des autre tables afin de recevoir les nouvelles valeurs ...) elles devront ensuite être sauvegardé sur le NAS ...
Quelle est la meilleure solution (centraliser le site ou le dispatcher sur les PCs de dev) ? Argumentez si possible ...
ps : l'idéal serait que lorsqu'on sauvegarde une BDD sur le NAS, elle soit directement créer sur le PC de développement (on est dans ce cas plus vers la configuration centralisé, si on opte pour la 2ème solution, il faudrait la créer uniquement sur le PC qui émet la demande de modification d'une BDD ...)
Merci beaucoup ...
Marsh Posté le 16-04-2012 à 20:04:34
Personne ? (je ne suis qu'au début du projet, je dois faire valider une solution possible avec mon tuteur avant de commencer la technique ...).
Merci;
Marsh Posté le 19-04-2012 à 10:37:44
Je voudrais maintenant importer des BDD MySQL (fichiers SQL) issus d'un dossier : (je place le batch dans le dossier même ou se trouve les BDD)
j'ai commencer à code, mais ça ne fonctionne pas :
Code :
|
OU
Code :
|
Aucun des deux ne marche, ca aurait était plus compliqué en PHP !?... Il faut donc une boucle FOR qui importe les BDD pour tous les fichiers .sql
Merci;
Marsh Posté le 19-04-2012 à 11:44:40
Perso, n'étant pas très bon en Batch, je préfère ce genre d'opération en PHP, d'autant plus que PHP a des capacités de traitement bien > à batch
Marsh Posté le 19-04-2012 à 14:05:36
ben faudrait d'abord vérifier que php arrive bien à accéder au contenu du répertoire distant... Comme je te l'ai dit dans un précédent post, j'avais essayé une fois de faire ça et j'avais eu des soucis sous Windows...
Mais si ça marche, ben suffit que ton script php liste le contenu du répertoire (fonction glob() ), puis fasse la copie des fichiers (fonction copy() ).
Marsh Posté le 19-04-2012 à 16:52:39
J'ai commencer a regarder en PHP pour lister les fichiers dans une liste déroulante, ca me donne pas grand chose (affichage des noms des fichiers sur une ligne)
Code :
|
ps:pour la copie des fichiers c'est bon j'ai fais ça en batch...
Au fait, le but est de permettre la sélection d'une BDD via une liste déroulante (je me suis dis que juste en récupérant le nom du fichier ca suffira, sinon je pourrai très bien extraire les noms des BDD directement depuis le serveur MySQL, est ce meilleure comme solution ?). Je récupererai la valeurs de la variable dans d'autre pages.
Merci beaucoup!
Marsh Posté le 22-04-2012 à 22:44:25
Sur le serveur WEB, j'ai un serveur mysql avec une BDD vierge, je voudrais que les utilisateurs puissent créer de nouvelles bases en utilisant le modele de cette BDD (pour la remplir après via un formulaire ...) en lui donnant un nom mais en LAISSANT toujours de côté la BDD vierge. Quel est la meilleure solution ? Je demande le nom de la nouvelle BDD et execute le script de la BDD vierge par la suite (niveau temps d'execution c'est rapide (php) ? ...)
Merci;
Marsh Posté le 23-04-2012 à 10:03:05
Je veux faire une importation en ligne de commande après avoir créer une BDD mais ca fonctionne pas (le script PHP est un dump mysql ...)
create database serveur;
use serveur;
OK pour ces deux commandes.
Après, j'essaye de faire une importation, mais j'ai toujours le même message d'erreur :
Code :
|
Merci;
Marsh Posté le 23-04-2012 à 11:03:08
Gros malin, tu lances la ligne de commande alors que t'es déjà dans mysql, qui là, attend une requête SQL. Faut lancer ta commande direct dans le shell...
Marsh Posté le 23-04-2012 à 11:25:19
En tapant juste ça :
Code :
|
j'ai la même erreur ...
Marsh Posté le 23-04-2012 à 12:46:08
Mais non, faut sortir de mysql ! Après le prompt du shell, tu tapes mysql -h localhost -u root --password=root serveur < table.sql;
Si t'as pas mis le path de mysl dans $PATH, faut rajouter le chemin du binaire mysql en début de ta ligne de commande...
Marsh Posté le 23-04-2012 à 14:09:06
j'ai essayé ça :
Code :
|
Ca n'a évidement rien donné;
Marsh Posté le 23-04-2012 à 15:55:14
mais je viens de te dire que ce n'est pas une requête SQL !!! Ta ligne de commande ne doit donc pas se lancer dans mysql (que ce soit le binaire ou via un script php et la fonction mysql_query).
ta ligne de commande est une commande système, tu comprends? Elle doit donc se lancer via le shell (vu que tu sembles être sous Windows, via l'utilitaire cmd, la console quoi) ou via la fonction shell_exec() de php.
Marsh Posté le 23-04-2012 à 22:04:06
Le but est d'importer une BDD (après en avoir créer une ...) via une page WEB, c'est une commande de ce type là (j'ai trouvé ca sur le net) :
Code :
|
Marsh Posté le 24-04-2012 à 10:49:21
Oui, c'est ça qu'il faut faire.
Marsh Posté le 24-04-2012 à 13:57:45
J'ai essayé la commande suivante sur page web mais elle ne passe pas : (je crée avant une BDD et la selectionne avec use ...)
Code :
|
Marsh Posté le 24-04-2012 à 14:36:42
c'est à cause de l'espace dans le chemin "program files"...
Marsh Posté le 24-04-2012 à 15:14:28
Code :
|
Ca ne passe pas aussi
Marsh Posté le 24-04-2012 à 16:22:28
Déjà je n'ai plus les erreurs qui sont affichés ! J'utilise WAMP. Lors de l'ouverture du fichier php error log, WAMP me dit qu'il n'existe pas et si je veux en créer un. J'ai mis oui et du coup il reste vide ...
Merci...
Marsh Posté le 24-04-2012 à 16:35:17
Vu comment t'as écrit le contenu de $commande, ça m'étonne pas
Essayes un truc du genre :
Code :
|
Marsh Posté le 24-04-2012 à 16:40:30
Toujours, pas, la BDD est crée mais vierge. Le fichier .sql est dans /bin
Marsh Posté le 24-04-2012 à 16:44:26
Ton pb vient des espaces dans le chemin d'accès... Va falloir trouver comment le résoudre. Perso, mes serveurs de prods sont tous sous Linux... Et ce genre de ligne de commande fonctionne.
Avant de l'utiliser dans un script php, essaye de trouver la syntaxe de la ligne de commande qui va fonctionner dans la console de Windows (cmd).
Marsh Posté le 24-04-2012 à 16:49:59
Code :
|
Même en utilisant MySQL de WAMP (sans espace ...) ca passe pas
Marsh Posté le 24-04-2012 à 16:57:56
c'est --passwordroot (y'a 2 -- normalement).
Et je t'ai dit d'essayer direct dans le shell (cmd), sans passer par un script php pour trouver la bonne syntaxe. Mysql va t'afficher les erreurs.
Marsh Posté le 11-04-2012 à 23:08:00
Bonsoir, je dois réaliser une application permettant de gérer les BDD.
En fait, on a un disque réseau dans lequel on a des BDD définitives (remplies donc).
On voudrait créer une appli qui demande à l'utilisateur le nom de la BDD surlaquelle il souhaite travailler, l'appli doit ensuite se connecter au disque réseau pour voir si elle est présente, si oui (on affiche les tables remplies d'un côté et l'utilisateur est invité à les modifier d'un autre, ensuite on fera une sauvegarde de la BDD sur le disque réseau) si la BDD n'est pas trouvé (on crée une BDD vierge en lançant un script, puis on invite l'utilisateur à remplir les tables demandés). Je pense qu'il faudrait aussi demander l'IP à l'utilisateur afin de créer la BDD sur le PC même dans ce cas ...
Je voulais faire ça sur un intranet en HTML/PHP/SQL, pensez vous que c'est faisable ? Je pense que la difficulté majeure sera d'utiliser les scripts SQL des BDD présents dans le NAS .... Si vous avez des idées sur ce projet n'hésitez pas, merci