Récupérer le contenu des fichiers d'un dossier
Bonjour à tous !
Etant étudiante en BTS SIO, je suis actuellement en stage. Le projet que je dois mettre en place est de créer un site web avec des graphiques montrant la consommation des imprimantes d'un lycée, graphiques qui doivent être créer à partir de fichiers textes récupérés grâce à un script python. Ce dernier étant déjà fait, je n'ai pas à m'en occuper, j'ai déjà mes fichiers.
Pour le moment, j'essaie de récupérer le contenu des fichiers, pour ensuite les intégrer à ma base de données.
J'ai réussi à écrire un script php permettant d'ouvrir le dossier contenant tous mes fichiers. J'ai ensuite créé un autre script permettant de lire le contenu d'UN fichier de ce dossier. Maintenant, il faudrait que j'arrive à combiner les deux pour ouvrir tous les fichiers du dossier. Je me doute qu'il me faut faire une boucle pour cela, mais je n'arrive pas à comprendre pourquoi le script que j'ai ne fonctionne pas.
Code:
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
| <?php
function parcourir_repertoire($repertoire)
{
$le_repertoire = opendir($repertoire) or die("Erreur le repertoire $repertoire n'existe pas");
while($fichier = @readdir($le_repertoire))
{
if ($fichier == "." || $fichier == "..") continue;
if (is_dir($repertoire. '/'.$fichier))
{
print '<ul>'.$repertoire.'/'.$fichier;
parcourir_repertoire($repertoire.'/'.$fichier);
print '</ul>';
}
else
{
print "$fichier \n";
$myfile = file($fichier, "r");
echo fread($myfile, filesize($fichier));
}
}
}
parcourir_repertoire('/mon/dossier');
?> |
Je vais être franche, ce n'est pas moi qui l'ai écrit entièrement, j'ai cherché un peu d'aide sur internet.
J'ai donc rajouté dans mon "else" la fonction permettant d'ouvrir les fichiers. Sachant que cela fonctionne très bien si je mets un fichier donné à la place de ma variable. Mais avec la variable, ça me retourne des erreurs...
Auriez-vous une idée de comment faire ?
Merci par avance !
Ju'.
P.S : Je ne suis pas très douée en php malheureusement...
[Résolu] Problème de syntaxe ? Et de fonction.
Bonjour,
Je souhaite entrer dans ma base de données multiples chaînes de caractères qui se trouvent dans plusieurs fichiers. Ma base de données se compose de plusieurs tables, mais les deux qui m'intéressent sont la table imprimantes (id_imprimante, nom_imprimante, adresse_ip, ...) et ma table compteur (id_compteur, id_imprimante, date_releve et compteur). Un script python récupère ainsi les compteurs de toutes les imprimantes, en rajoutant une entrée chaque jour.
En récupérant le nom des fichiers, qui correspondent à des IP, je fais le lien entre la table compteur et la table imprimante. Puis l'objectif est d'entrer toutes ces chaînes de caractères dans la base de données.
Voici mon code :
Code:
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
| <?php
function parcourir_repertoire($repertoire)
{
$le_repertoire = opendir($repertoire) or die("Erreur le repertoire $repertoire n'existe pas");
while($fichier = @readdir($le_repertoire))
{
if ($fichier == "." || $fichier == "..") continue;
if (is_dir($repertoire. '/'.$fichier))
{
print '<ul>'.$repertoire.'/'.$fichier;
parcourir_repertoire($repertoire.'/'.$fichier);
print '</ul>';
}
else
{
//print "$fichier \n";
$myfile = file_get_contents($repertoire. '/' .$fichier, "r");
//echo $myfile;
}
}
}
mysql_connect('localhost', 'root', 'a');
mysql_select_db('imprimantes_test');
mysql_query("TRUNCATE TABLE compteurs");
// Créé une liste des fichiers du dossier Historique (avec des indices)
$dossier = '/script_python/historique';
$liste = scandir($dossier);
// Parcourt tous les fichiers
for ($seg = 2; $seg < count($liste); $seg++)
{
// Affiche seulement le nom des fichiers
$ip = substr($liste[$seg], 0, -4);
$cmd = "SELECT id_imprimante FROM imprimantes WHERE adresse_ip='$ip'";
//echo $cmd;
$impr = mysql_query($cmd);
$row = mysql_fetch_array($impr);
$result = $row['id_imprimante'];
//print "L'identifiant de $ip est $result \n";
}
// On parcourt tous les fichiers
foreach($liste as $unfichier)
{
//echo $unfichier;
while ($data = fgetcsv($unfichier, 1000, ";"))
{
parcourir_repertoire('/script_python/historique');
//$data correspond à une ligne complète, nous n'avons plus qu'à la couper pour tout récupérer
$explode = explode(' ', $data[0]);
// On l'insert dans la base
mysql_query("INSERT INTO compteurs (id_compteur, id_imprimante, date_releve, compteur)
VALUES ('', '.$result.', '$data[0]', '$data[1]');") or die(mysql_error());
}
}
// On ferme le fichier
//fclose($fichier);
?> |
Ce qui est en commentaire est soit des commentaires soit des essais que je garde en réserve.
Les différentes parties fonctionnent très bien lorsqu'elles sont séparées les unes des autres. Toutefois, ensemble, cela me retourne une erreur en boucle, qui est la suivante :
PHP Warning: fgetcsv() expects parameter 1 to be resource, string given in /var/www/test_id.php on line 50
Et je n'arrive pas à comprendre pourquoi, j'ai beau chercher et retourner le problème dans tous les sens, je ne vois pas d'où vient le problème (quelque chose me dit pourtant que c'est un truc tout bête...).
De plus, je ne sais pas exactement à quel endroit je dois faire appel à ma fonction parcourir_repertoire, ni comment je dois fermer les fichiers qu'elle ouvre.
Merci d'avance pour votre aide !
Ju'