Rechercher : dans
Par :

Problème d'utilisation de script php en local

Dernière réponse le 10 jun 2008 à 12:09:27 Aym, le 10 jun 2008 à 10:52:52 
 Signaler ce message aux modérateurs

Bonjour tout le monde.

Voilà je suis un peu embêté.
Je suis un pur novice et je tente d'utiliser un script php qui par le biais d'un fichier .csv va gentiment me remplir une base de données mysql sous phpmyadmin en localhost avec un serveur wamp.

J'ai bien renseigné les identifiants de la base, à savoir $server, $username, $password, $database.

Seulement j'ai des doutes concernant le path du fichier .csv

Voilà le bout de code incriminé:

function read_csv( $filename, $separateur) // transfert le fichier dans un tableau
{
if ( $FILE=fopen($filename,"Test.csv") ) // ouverture du fichier
{
while ($ARRAY[]=fgetcsv($FILE,1024,$separateur)); // lire ligne par ligne et coupe colonne par colonne
fclose($FILE) ; // ferme le fichier
array_pop($ARRAY); // efface la derniere ligne
return $ARRAY ; // renvoie le tableau
}
}
$pathFic = $HTTP_GET_VARS['C:\wamp\www\NomDeLaBase\Test.csv'];

$ARRAY=read_csv($pathFic,"Test.csv"); // lit le fichier

Alors première question: est-ce que j'ai bien tout renseigné partout, est-ce que j'aurais pas confondu le path et le nom à un endroit ?

Seconde question: est-ce que la syntaxe suivante d'appel du script est correcte ?
http://localhost/NomDuScript.php?path=Test.csv

Merci d'avance pour vos réponses!

Configuration: Windows XP
Firefox 2.0.0.14

Meilleures réponses pour « Problème d'utilisation de script php en local » dans :
Implantation du code Php VoirL'interprétation du code par le serveur Un script PHP est un simple fichier texte contenant des instructions écrites à l'aide de caractères ASCII 7 bits (des caractères non accentués) incluses dans un code HTML à l'aide de balises spéciales et...

1

ortys4, le 10 jun 2008 à 10:59:25

Salut, déjà la sa pause problème. En php le caractère \ annule celui qui le suit, ce qui veut dire que tu dois écrire les chemins de tel manière :
$pathFic = $HTTP_GET_VARS['C:\\wamp\\www\\NomDeLaBase\\Test.csv'];

ensuite cette adresse http://localhost/NomDuScript.php?path=Test.csv ne nous est pas accessible car elle est en interne sur ton ordi. Tu peut si tu veut nous montrer un exemple de ligne.

Répondre à ortys4

2

Aym, le 10 jun 2008 à 11:08:27

Arf ok merci beaucoup donc déjà je vais modifier ça '-'

Ensuite oui je voulais pas montrer ce que ça donne avec le lien d'appel du script, juste savoir si j'avais pas fait d'erreur grossière de syntaxe, comme par exemple celle que tu as relevée^^

J'ai globalement peur d'avoir oublié de renseigner des champs dans le script, d'avoir confondu path et nom, voire même d'en avoir trop mis vu que j'avais cru comprendre que le path du .csv était relatif donc qu'on avait limite pas besoin de mettre le chemin complet.

Répondre à Aym

3

ortys4, le 10 jun 2008 à 11:12:25

En relisant ya encore une erreur :
la declaration de ta fonction : function read_csv( $filename, $separateur)
elle attent en parametre un chemin pour le fichier, et un séparateur. le séparateur par default du csv c ";", donc lors de son appel :
$ARRAY=read_csv($pathFic,";"); // lit le fichier

et là tt devrai etre ok

Répondre à ortys4

4

Aym, le 10 jun 2008 à 11:23:06

Ah ben oui merci bcp en effet, quand je disais que je confonds tout...
Donc au final on se retrouve avec quelque chose de tout à fait correct dans ce gout là:

function read_csv( $filename, $separateur) // transfert le fichier dans un tableau
{
if ( $FILE=fopen($filename,"Test.csv") ) // ouverture du fichier
{
while ($ARRAY[]=fgetcsv($FILE,1024,$separateur)); // lire ligne par ligne et coupe colonne par colonne
fclose($FILE) ; // ferme le fichier
array_pop($ARRAY); // efface la derniere ligne
return $ARRAY ; // renvoie le tableau
}
}
$pathFic = $HTTP_GET_VARS['C:\\wamp\\www\\nice-antiques\\Test.csv'];

$ARRAY=read_csv($pathFic,";"); // lit le fichier


Cependant lorsque j'appelle le script il ne se passe rien. J'en déduis que ma syntaxe d'appel est bancale. Ai-je bien utilisé le "?", ai-je fait une erreur de chemin, est-ce que j'ai encore raté un truc évident ?
http://localhost/NomDuScript.php?path=C:\wamp\www\NomDeLaBase\Test.csv

Bien entendu mon script ainsi que mon fichier Test.csv sont dans le répertoire NomDeLaBase.

Répondre à Aym

5

ortys4, le 10 jun 2008 à 11:24:27

Voila, sa devrai le faire comme ca ! :-)

Répondre à ortys4

6

Aym, le 10 jun 2008 à 11:28:27

Helas, trois fois helas, j'ai juste la date d'affichée ce qui montre que le script s'exécute bien, mais aucune des informations relatives à la lecture du .csv

Donc mon appel doit être foireux :(

Que faire ? (en dehors de pleurer, taper des enfants, ou me suicider)

Répondre à Aym

7

ortys4, le 10 jun 2008 à 11:30:16

Donne nous un exemple de ton fichier, il y à peu etre plus simple pour l'affichage.

Répondre à ortys4

8

Aym, le 10 jun 2008 à 11:38:05

Alors pour l'instant justement c'est un fichier test d'une seule occurrence histoire de ne pas en faire des caisses tant que ça marche pas.

Il a cette structure:

|Champ 0 | Champ 1 |Champ 2 |Champ 3 |Champ 4 |Champ 5 |
|Catégorie |Nom du produit |Description |Nom de l'image |Code à Barres |Prix |

J'en ai environ 2000 à rentrer comme ça.
Le souci c'est que c'est sensé fonctionner (je l'ai vu de mes petits yeux meurtris), c'est vraiment à une couille près.

Soit j'ai encore rentré des paramètres débiles dans le code mais apparemment d'après les réponses il a fini par être bon, soit mon appel est pas conforme.

Répondre à Aym

9

ortys4, le 10 jun 2008 à 11:42:58

Ton séparateur c'est un "|" ? tu la bien remplacé dans le code dans ce cas :
$ARRAY=read_csv($pathFic,"|");

Répondre à ortys4

10

Aym, le 10 jun 2008 à 11:47:33

Whoops mille excuses non du tout c'était pour plus de lisibilité, c'est bien un ";" classique et élégant.

Répondre à Aym

11

ortys4, le 10 jun 2008 à 12:00:20

En fait ta fonction en pas bonne ! En voici une qui marche (tiré de http://www.manuelphp.com/php/function.fgetcsv.php

$handle = fopen("test.csv", "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}

Avec ca tu devrai t'en sortir

Répondre à ortys4

12

Aym, le 10 jun 2008 à 12:08:37

Impeccable !
merci de ta patience et de ta rapidité, bonne journée :)

Répondre à Aym

13

 ortys4, le 10 jun 2008 à 12:09:27

De rien, j'ai que ca à faire en ce moment. :-)
A+

Répondre à ortys4
Collection CommentÇaMarche.net