Problème d'utilisation de script php en local

Résolu/Fermé
Aym - 10 juin 2008 à 10:52
ortys4 Messages postés 254 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 26 septembre 2010 - 10 juin 2008 à 12:09
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!
A voir également:

5 réponses

ortys4 Messages postés 254 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 26 septembre 2010 51
10 juin 2008 à 10:59
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.
0
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.
0
ortys4 Messages postés 254 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 26 septembre 2010 51
10 juin 2008 à 11:12
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
0
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.
0
ortys4 Messages postés 254 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 26 septembre 2010 51
10 juin 2008 à 11:24
Voila, sa devrai le faire comme ca ! :-)
0
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)
0
ortys4 Messages postés 254 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 26 septembre 2010 51 > Aym
10 juin 2008 à 11:30
donne nous un exemple de ton fichier, il y à peu etre plus simple pour l'affichage.
0
Aym > ortys4 Messages postés 254 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 26 septembre 2010
10 juin 2008 à 11:38
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.
0
ortys4 Messages postés 254 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 26 septembre 2010 51
10 juin 2008 à 11:42
Ton séparateur c'est un "|" ? tu la bien remplacé dans le code dans ce cas :
$ARRAY=read_csv($pathFic,"|");
0
Whoops mille excuses non du tout c'était pour plus de lisibilité, c'est bien un ";" classique et élégant.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ortys4 Messages postés 254 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 26 septembre 2010 51
10 juin 2008 à 12:00
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
0
impeccable !
merci de ta patience et de ta rapidité, bonne journée :)
0
ortys4 Messages postés 254 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 26 septembre 2010 51 > Aym
10 juin 2008 à 12:09
De rien, j'ai que ca à faire en ce moment. :-)
A+
0