zemacse Posted March 8, 2013 Share Posted March 8, 2013 Bonjour à tous, j'utilise la fonction PHP fopen() afin d'extraire des données d'un fichier csv, seulement cela ne marche pas et j'aimerais savoir si quelqu'un avait connaissance d'un test me permettant de véréfier que mon pointeur pointe bien vers mon fichier. J'ai effectué le test suivant : FILE* $fp = NULL; $fp = fopen('C:\Users\Philippe\Downloads'.$_POST['fichier'], 'r'); if ($fp = NULL) { echo"echoue"; } else if($fp != NULL) { echo"success"; } il n'affiche rien et impossible de faire marcher la fonction fgetcsv() donc si mon pointeur ne contient ni la valeur "NULL" ni mon fichier, que contient il? Si j'effectue le test suivant : FILE* $fp = NULL; $fp = fopen('C:\Users\Philippe\Downloads'.$_POST['fichier'], 'r'); if ($fp = NULL) { echo"echoue"; } else { echo"success"; } Il m'affiche "success" Voici la suite de monde code pour ceux que sa interesserai : if(isset($_POST['fichier'])) { FILE* $fp = NULL; $fp = fopen('C:\Users\Philippe\Downloads'.$_POST['fichier'], 'r'); if ($fp = NULL) { echo"echoue"; } else { echo"success"; } while ($data = fgetcsv($fp, 1000, ";")) { $num = count($data); for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; $insert += $data[$c].", "; if($num = $c) { $test = true; } } } fclose($fp); } En vous remerciant d'avance de l'attention accordé à mon problême. Link to comment Share on other sites More sharing options...
Pepitoww Posted March 8, 2013 Share Posted March 8, 2013 Bonjour, il semblerait que vous n'écrivez pas correctement l'opérateur sur la condition du If, il s'agit d'un double opérateur concernant "EGALE" c'est à dire : if ($fp == NULL) { echo 'echoue'; } elseif($fp != NULL) { echo 'success'; } Cordialement Link to comment Share on other sites More sharing options...
zemacse Posted March 8, 2013 Author Share Posted March 8, 2013 merci infiniment pepitoww, effectivement je pouvais pas trouver la solution si mes test était mal construit ^^ je vais continuer de chercher un moyen de remplir ce pointeur. Link to comment Share on other sites More sharing options...
Broceliande Posted March 9, 2013 Share Posted March 9, 2013 (edited) merci infiniment pepitoww, effectivement je pouvais pas trouver la solution si mes test était mal construit ^^ je vais continuer de chercher un moyen de remplir ce pointeur. fopen retourne false en cas d'échec, un pointeur sinon... False étant différent de null ... Ton code devrait plutôt ressembler à ça ; $file = "c:\dossier/dossier2/monfichier.ext"; $fp = fopen($file); if($fp) { ...do something ... } else { die('echec à l\'ouverture du fichier : '.$file); } Un autre problème est l'utilisation des antislashs dans le chemin de ton fichier : 'C:\Users\Philippe\Downloads... Il faut savoir que si windows utilise des \ pour séparer les dossiers dans un chemin d'accès, ce n'est pas le cas du tout d'apache, issu de linux, dans lequel ce sont des slashes : / Donc sur un wamp , si tu pars de la racine pour arriver dans un dossier apache , par ex c:\wamp\www , il est préférable d'utiliser / pour les dossiers suivants ... ex : c:\wamp\www/classes/.... Autre point , Users dans windows est un dossier protégé par utilisateur. Il y a peu de chance à mon sens qu'apache ait les droits suffisants pour sortir de sa racine et ainsi aller lire des fichiers un peu partout (et c'est un euphémisme) .... Je te conseillerais de commencer par mettre le csv que tu veux charger dans le même répertoire que celui qui exécute le script. Au moins pour éliminer des erreurs possibles ... Tu accèdes ainsi facilement à ton fichier : $csvfile=dirname(__FILE__).'/monfichier.csv'; Dernier point, tu vas avoir un peu de mal si tu bloques déjà à ce stade de traiter ton fichier j'ai l'impression , surtout avec fopen. Préfère la methode file_get_contents à fopen , qui t'évitera pas mal de déboires. Je te donne un exemple basique qui charge monfichier.csv , le décortique en ligne , puis en champs. On suppose que le fichier est dans le même dossier que le script : $csvfile=dirname(__FILE__).'/monfichier.csv'; // fichier dans le dossier courant d'éxécution du script $content = file_get_contents($csvfile); // contenu du fichier chargé dans $content $lines = explode("\r\n", $content); // on place chaque ligne dans un tableau foreach($lines as $line) // pour chaque ligne du tableau { $fields = explode(';', $line); // on place chaque champ dans le tableau $fields ........ ton code à toi .... } Edited March 9, 2013 by Broceliande (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now