Page 1 sur 1

Insertion données csv dans un tableau

Posté : 14 nov. 2017, 12:51
par biddal
Bonjour à tous,
Je viens auprès de vous car j'ai un souci.
En effet j'essaie de mettre les informations qui se trouvent dans un csv dans un tableau avant de faire leur insertion en bdd.
Voici mon code:

Code : Tout sélectionner

<?php $nb_fichier = 0; $dossier = ""; $ok=0; echo '<ul>'; //Scan du dossier csv if($dossier = opendir('./csv')) { while(false !== ($fichier = readdir($dossier))) { // le count inclut toujours le dossier actuel et le dossier parent d'où ce test avec le . et le .. if($fichier != '.' && $fichier != '..') { $nb_fichier++; echo '<li><a href="./csv/' . $fichier . '">' . $fichier . '</a></li>'; } } echo '</ul><br />'; $ok=1; closedir($dossier); } else { echo 'Le dossier n\' a pas pu être ouvert'; } ?> </main> <?php if($ok==1) { echo "<div id=\"rslt\">"; if($nb_fichier<0) echo 'Il n\'y a aucun fichier dans le dossier'; else echo 'Il y a <strong>&nbsp;' . $nb_fichier . '&nbsp;</strong> fichier(s) dans le dossier'; //Connection des fichiers en base include 'connectBDD.php'; connectBdd(); $fichier = $fichier.".csv"; $fic = fopen($fichier,'rb'); echo "<table border='1'>\n"; for($ligne = fgetcsv($fic, 1024);!feof($fic);$ligne = fgetcsv($fic, 1024)) { echo "<tr>"; $j = sizeof($ligne); for($i = 0; $i < $j; $i++) { echo "<td>$ligne[$i]</td>"; } echo "</tr>"; } echo "</table>\n"; echo "</div>"; } ?>
Et voici l'erreur que j'ai en boucle:
Warning: feof() expects parameter 1 to be resource, boolean given in C:\wamp64\www\Gestion_Compteur_Eau\view.php on line 58
Call Stack
# Time Memory Function Location
1 0.0010 232840 {main}( ) ...\index.php:0
2 0.0020 245280 require( 'C:\wamp64\www\Gestion_Compteur_Eau\view.php' ) ...\index.php:2
3 0.5211 254904 feof ( ) ...\view.php:58
Sauriez-vous me dire ce qui n'est pas bon?
J'ai suivi un tutoriel que j'ai trouvé sur internet mais chez moi cela ne fonctionne pas.
Merci beaucoup par avance pour le temps que vous me consacrerez.

Re: Insertion données csv dans un tableau

Posté : 14 nov. 2017, 12:52
par biddal
La ligne 58 de view.php correspond à celle ci:
for($ligne = fgetcsv($fic, 1024);!feof($fic);$ligne = fgetcsv($fic, 1024))

Re: Insertion données csv dans un tableau

Posté : 14 nov. 2017, 13:13
par or 1

Re: Insertion données csv dans un tableau

Posté : 14 nov. 2017, 14:45
par biddal
J'ai bien suivi l'exemple mais je dois avoir une petite erreur quelque part.
Voici mon code:

Code : Tout sélectionner

<!doctype html> <html lang="fr"> <head> <meta charset="utf-8"> <title>Gestion compteur d'eau</title> <link rel="stylesheet" href="style.css"> </head> <body> <h1>Gestion des compteurs d'eau</h1> <main> <?php $nb_fichier = 0; $dossier = ""; $ok=0; echo '<ul>'; //Scan du dossier csv if($dossier = opendir('./csv')) { while(false !== ($fichier = readdir($dossier))) { // le count inclut toujours le dossier actuel et le dossier parent d'où ce test avec le . et le .. if($fichier != '.' && $fichier != '..') { $nb_fichier++; echo '<li><a href="./csv/' . $fichier . '">' . $fichier . '</a></li>'; } } echo '</ul><br />'; $ok=1; closedir($dossier); } else { echo 'Le dossier n\' a pas pu être ouvert'; } ?> </main> <?php if($ok==1) { echo "<div id=\"rslt\">"; if($nb_fichier<0) { echo 'Il n\'y a aucun fichier dans le dossier'; } else { echo 'Il y a <strong>&nbsp;' . $nb_fichier . '&nbsp;</strong> fichier(s) dans le dossier'; //Connection des fichiers en base include 'connectBDD.php'; connectBdd(); ?> <?php $row = 1; if($dossier = opendir('./csv')) { while(false !== ($fichier = readdir($dossier))) { if (($handle = fopen($fichier, "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num champs à la ligne $row: <br /></p>\n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } } } } echo "</div>"; } ?> </body> </html>
L'erreur retournée est :
Warning: fopen(.): failed to open stream: Permission denied in C:\wamp64\www\Gestion_Compteur_Eau\view.php on line 63
Call Stack
# Time Memory Function Location
1 0.0000 232840 {main}( ) ...\index.php:0
2 0.0000 246424 require( 'C:\wamp64\www\Gestion_Compteur_Eau\view.php' ) ...\index.php:2
3 0.0140 255432 fopen ( ) ...\view.php:63
Je ne vois pas d'où vient cette erreur de permission.

Re: Insertion données csv dans un tableau

Posté : 14 nov. 2017, 14:46
par biddal
Petite question qui n'a rien à voir mais est ce normal que l'indentation ne se fasse pas lorsque j'insère du code sur le forum ou est ce que je fais quelque chose pas correctement mdr?

Re: Insertion données csv dans un tableau

Posté : 14 nov. 2017, 14:51
par biddal
Le problème vient de la récupération de la variable fichier!
Lorsque je met le chemin en dur dans le code, il arrive bien à me récupérer ce qu'il y a dedans.

Re: Insertion données csv dans un tableau

Posté : 14 nov. 2017, 17:17
par or 1
normal les fichiers sont dans le répertoire ./csv, pas dans le même répertoire que le php.