[PHP] travail sur des fichiers
Rémy
-
s.spark Messages postés 2485 Date d'inscription Statut Contributeur Dernière intervention -
s.spark Messages postés 2485 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour tout le monde,
J'ai un intranet avec une grosse base de données. Je crée actuellement un site internet et j'ai besoin régulièrement d'informations de ma base de données d'intranet.
Mon idée : Extraire un fichier texte avec les infos nécessaires. L'importer sur ma base de données internet.
Voici un bout de code :
Je précise que j'ai 100 tables intitulées fiche1, fiche2, etc...
J'ai souvent le warning suivant :
Warning: fread(): Length parameter must be greater than 0.
Je vois pas pourquoi il me dit que mon fichier est vide...
Quelqu'un pour m'éclairer svp ?
J'ai un intranet avec une grosse base de données. Je crée actuellement un site internet et j'ai besoin régulièrement d'informations de ma base de données d'intranet.
Mon idée : Extraire un fichier texte avec les infos nécessaires. L'importer sur ma base de données internet.
Voici un bout de code :
Je précise que j'ai 100 tables intitulées fiche1, fiche2, etc...
for($i=1;$i<=100;$i++)//objectif : créer un fichier texte par table 'ficheX'. A chaque réitération, on copie le contenu du fichier dans la variable $contenu. Puis on copie le contenu de cette variable dans un fichier .txt exploitable côté serveur (internet) { $fiche="fiche".$i; $req=mysql_query("SELECT * FROM $fiche;"); $rep=mysql_fetch_array($req); if($rep[0]!=""){ mysql_query("SELECT * FROM $fiche WHERE selectionPourInternet=\"1\" INTO OUTFILE \"result.txt\";"); $filename="C:\\Program Files\\EasyPHP\\mysql\\data\\david\\result.txt"; $handle = fopen($filename, "r"); $contents = fread($handle, filesize($filename)); $contenu .= $contents; fclose($handle); } unlink($filename);//??????? } $Fnm = "chemin\resultTotal.txt"; $inF = fopen($Fnm,"w"); fwrite($inF,$contenu); fclose($inF);
J'ai souvent le warning suivant :
Warning: fread(): Length parameter must be greater than 0.
Je vois pas pourquoi il me dit que mon fichier est vide...
Quelqu'un pour m'éclairer svp ?
A voir également:
- [PHP] travail sur des fichiers
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Explorateur de fichiers - Guide
- Fichiers bin - Guide
9 réponses
Salut,
Pourquoi extraire un fichier ? Pourquoi ne pas générer un backup .sql avec juste les informations qu'il te faut ?
Pourquoi extraire un fichier ? Pourquoi ne pas générer un backup .sql avec juste les informations qu'il te faut ?
Impossible pour le coup. Ca doit fonctionner tout seul à l'avenir, sans intervention...
Par un clic, le commercial doit pouvoir mettre à jour le site internet.
Par un clic, le commercial doit pouvoir mettre à jour le site internet.
Un flux RSS serait donc le plus approprié ?
https://ghostdogpr.developpez.com/articles/rss/
Note : la méthode peut être appliqué pour n'importe quoi, là c'est un exemple de flux, mais tu peux faire ça à ta sauce.
https://ghostdogpr.developpez.com/articles/rss/
Note : la méthode peut être appliqué pour n'importe quoi, là c'est un exemple de flux, mais tu peux faire ça à ta sauce.
C'est vrai, j'ai déjà fait pour un autre site mais là.
J'ai environ 80 colonnes dans chaque fiche (table). Sachant que toutes ces colonnes sont différentes. Ca promet un travail de malade sur le XML à la réception...
J'avais plutôt pensé envoyer tout en dur dans un fichier texte comme un bourrin (ma spécialité :p)
J'ai déjà fait ça entre un serveur UNIX et un Windows mais ce n'était pas moi à l'origine de la création du txt. Par contre, à la réception du txt, je sais faire. C'est juste pour le créer que ça me chagrine...
Est-ce que mon
J'ai environ 80 colonnes dans chaque fiche (table). Sachant que toutes ces colonnes sont différentes. Ca promet un travail de malade sur le XML à la réception...
J'avais plutôt pensé envoyer tout en dur dans un fichier texte comme un bourrin (ma spécialité :p)
J'ai déjà fait ça entre un serveur UNIX et un Windows mais ce n'était pas moi à l'origine de la création du txt. Par contre, à la réception du txt, je sais faire. C'est juste pour le créer que ça me chagrine...
Est-ce que mon
SELECT * FROM $fiche WHERE selectionPourInternet="1" INTO OUTFILE "result.txt"est bon ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je ne sais pas, je ne connais pas cette requête. Mais c'est simple, tu fais la requête, et dans ta boucle tu concatènes :
Après je sais pas ce que tu veux obtenir de plus.
$fichier=''; $L=1; while() { $fichier.="[LIGNE$L]"."\n".donnees[champ1].';'.donnees[champ2].';'.donnees[champ3]."\n\n" $L=++; } $fp = fopen("resultTotal.txt", 'w+'); fputs($fp, $fichier); fclose($fp);
Après je sais pas ce que tu veux obtenir de plus.
M'ouais, c'était à peu près mon idée de départ. Mais c'est pas gagné parce que les champ1, champ2, champ3... sont différents dans chaque table...
Pareil, à l'exploitation du txt, ça va être un fameux sac de noeuds...
La requete INTO OUTFILE sert justement à extraire d'une bdd vers un fichier (l'avantage, c'est qu'il met des alinéas entre chaque donnée). Son opposé (pour faire l'opération inverse) est :
Si tu as des infos là-dessus...
Bon, ok, je m'y remets et te tiens au courant
Pareil, à l'exploitation du txt, ça va être un fameux sac de noeuds...
La requete INTO OUTFILE sert justement à extraire d'une bdd vers un fichier (l'avantage, c'est qu'il met des alinéas entre chaque donnée). Son opposé (pour faire l'opération inverse) est :
LOAD DATA INFILE 'monFichier.txt' INTO TABLE maTable
Si tu as des infos là-dessus...
Bon, ok, je m'y remets et te tiens au courant
"Mais c'est pas gagné parce que les champ1, champ2, champ3... sont différents dans chaque table... "
donnees[0]
donnees[1]
donnees[2]
donnees[0]
donnees[1]
donnees[2]
Oui, merci, j'avais compris.
Je parlais du nombre de champs...
Pour certains, le max sera donnees[85], pour d'autres, donnees[125]... quoiqu'il doit y avoir un moyen de compter le nombre... Bref.
J'ai vraiment envie de suivre mon premier post en utilisant le INTO OUTFILE. Je pense que c'est pas si compliqué...
Je suis têtu désolé. J'y retourne !
Je parlais du nombre de champs...
Pour certains, le max sera donnees[85], pour d'autres, donnees[125]... quoiqu'il doit y avoir un moyen de compter le nombre... Bref.
J'ai vraiment envie de suivre mon premier post en utilisant le INTO OUTFILE. Je pense que c'est pas si compliqué...
Je suis têtu désolé. J'y retourne !