[PHP] Acceder a un fichier depuis n'importe qu'elle page d'un site ?

Acceder a un fichier depuis n'importe qu'elle page d'un site ? [PHP] - PHP - Programmation

Marsh Posté le 10-07-2008 à 23:01:41    

Bonsoir,
 
J'utilise une classe PHP pour me connecter à ma base de données ( centralisation de l'exécution des requêtes, classique ) j'aimerais sauvegarder dans un fichier texte les requêtes d'insertion, de modification et de suppression.
Seul problème, dans mon projet j'appelle ma classe dans différent endroit comment faire pour écrire un fichier dans un répertoire sans devoir modifier tous mes scripts (environ 30  :sweat: )  :??:  :??:  
 
voici le code qui exécute les requêtes :

Code :
  1. // PUBLIC : Envoi d'une requete a la DB
  2. function send_query($query) {
  3.  if ( !$this->connect_id ) $this->connect($this->host,$this->user,$this->pass,$this->base);
  4.  if ( $this->result_id = mysql_query($query, $this->connect_id) ) {
  5.   $this->query = trim($query);
  6.   $this->error = '';
  7.   if ( preg_match('`^(insert|update|delete)`i',$this->query) ) $this->log_query();
  8.   return $this->result_id;
  9.  } else {
  10.   $this->error = mysql_error();
  11.   return FALSE;
  12.  }
  13. }


 
Voici la fonction dans la meme classe qui doit enregistrer les requetes :

Code :
  1. function log_query() {
  2.  $fic = "../../backup/".date("Ymd" ).".sql";
  3.  if ($fp = fopen($fic , "a" ) ) {
  4.   fwrite($fp , $this->query."\n" );
  5.   fclose($fp);
  6.  }
  7. }


 
ma classe mysql ce trouve dans un répertoire type : "/includes/class/"
et le fichier de sauvegarde dans le répertoire "/backup/fichier.sql"
 
en faite le problème ce situe ici :

Code :
  1. $fic = "../../backup/".date("Ymd" ).".sql";


 
dés fois j'accède au log par '../../backup/' et dés fois c'est en faisant '../backup/' comment faire pour avoir une adresse fixe ?
 
Cela ne doit pas être très claire, mais n'hésitais pas à me poser des questions, j'y répondrais du mieux que je peux.


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 10-07-2008 à 23:01:41   

Reply

Marsh Posté le 11-07-2008 à 18:59:40    

UP, en gros je voudrais faire un genre de log binaire mais en plus simple.


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 12-07-2008 à 11:30:38    

UP, on va ce concentrer juste sur le problème  de base:
Comment atteindre un fichier sur un serveur web, quelque soit l'emplacement du script qui est exécuté ?


Message édité par stef_dobermann le 12-07-2008 à 11:31:15

---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 12-07-2008 à 12:16:10    


bonjour,
 
euh... donne le chemin en absolu ?
'http://www...../chemin.../fichier'
( ou '/chemins.../fichier' )
non ?  enfin , si jai compris la question...
 
Cordialement.


---------------
[mon site] [m'écrire]
Reply

Marsh Posté le 12-07-2008 à 19:49:08    

Comment atteindre un fichier sur un serveur web, quelque soit l'emplacement du script qui est exécuté ?
 
J'ai écris un "logiciel" pour gérer un Service Après Vente. Celui-ci utilise une BDD MySQL pour stocker les informations (rien de bien compliqué). Le logiciel est écrit en utilisant les classe de PHP4 (je passerais bientôt en PHP5) et j'ai centralisé l'accès à la BDD en utilisant une classe.
Dans mon arborescence j'ai créé un répertoire qui se nomme "backup" dans lequel je vais stocker les log.  
 
Ma question est la suivantes :
quand j'instencie ma classe mysql, je voudrais atteindre un fichier dans le répertoire "backup" pour stocker les requêtes qui sont exécuté par les utilisateurs.
le fichier en question sera la date du jour avec l'extension SQL.
 
j'ai déjà essayé ta solution (chemin absolu ) mais cela ne fonctionne pas.
j'ai essayé aussi en faisant "../../backup/" cela fonctionne avec certain script, mais pas tous (en fonction de leur emplacement par rapport au répertoire).


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 13-07-2008 à 10:42:55    

Merci, mais cela ne me donne pas ceux que je recherche.
En revanche je viens de trouver une solution certes un peu archaïque, mais elle fonctionne  
 

Code :
  1. //PRIVATE
  2. function log_query() {
  3.  if ( is_dir("../../backup/" ) ) { $fic = "../../backup/".date("Ymd" ).".sql"; }
  4.  else { $fic = "../backup/".date("Ymd" ).".sql";}
  5.  if ($fp = fopen($fic , "a" ) ) {
  6.   fwrite($fp , $this->query."\n" );
  7.   fclose($fp);
  8.  }
  9. }


 
Bien sur le temps de trouver mieux...


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 13-07-2008 à 23:54:30    

Oui et non car il n'y a pas d'entré réel sur le site, je n'y accède pas directement à la racine.
Explication :
je travail dans une grande surface, il y a donc 3 parties :
- une pour le rayon,
- une pour la gestion (le technicien qui fait le SAV => moi)
- une autre pour l'administration du site, correction en tout genre sauvegarde de la BD (moi aussi qui le gére),...
 
Mais les classes de gestion SQL ou sortie PDF, sont centraliser à un seul endroit (plusieurs interfaces en fonction du besoin, 1 seul système de mise à jour).
et d'autre partie qui pourront être créé plus tard en fonction des besoins.
 
donc même si moi j'ai le choix entre plusieurs truc, les personne du rayon elles n'ont pas d'autre choix que d'utiliser leur partie et rien d'autre !
et dans ce cas ta solution ne peut être utilisable.
 
mais ca reste une très solution pour d'autre cas.
 
Edit : précision.


Message édité par stef_dobermann le 14-07-2008 à 12:50:30

---------------
Tout à commencé par un rêve...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed