begin process at 2012 05 31 11:31:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Un truc que je capte pas


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Un truc que je capte pas

vendredi 26 novembre 2010 à 21:13:22 | Un truc que je capte pas

vxr888

Membre Club
Salut,

J'essaye de travailler avec des csv mais la fonction fgetcsv me pose un soucis.

Dans les FAQ il est dit :
array fgetcsv ( resource $handle [, int $length [, string $delimiter [, string $enclosure [, string $escape ]]]] )

length
Doit être plus grand que la plus grande ligne (en terme de caractères) à lire dans le fichier (y compris le caractère de fin de ligne). Ce paramètre est optionnel depuis PHP 5. Omettre ce paramètre (ou le définir à 0 en PHP 5.0.4 et suivant) fait que la longueur maximale de la ligne n'est pas limitée, ce qui est légèrement plus lent.

Je ne comprends pas ce qu'ils entendent par là.

En gros ce que je veux, c'est pouvoir lire dans un fichier csv ou il y a environ 2000 chiffres séparés par des virgules.

Ca marche comment cette fonction ? Je mets quoi en length et surtout, pourquoi ?
vendredi 26 novembre 2010 à 21:54:18 | Re : Un truc que je capte pas

cod57

bonsoir
si ça peut t'aider

fichier.csv

1;2;3;4;5;6;7
8;9;
10;

<?php

$fp = fopen('fichier.csv','r') or die("ouverture impossible");

print "<table border=\"3\">\n";

while($csv_line = fgetcsv($fp,1024)) {

print '<tr>';

for ($i = 0, $j = count($csv_line); $i < $j; $i++) {

$delimiter = ";";

$n=explode($delimiter,$csv_line[$i]);

for ($k = 0, $l = count($n); $k < $l; $k++) {

print '<td bgcolor="#ffeedd">'.$n[$k].'</td>';

}

}

print "</tr>";

}

print '</table>';

fclose($fp) or die("erreur fermeture");

?>

a++
samedi 27 novembre 2010 à 13:45:09 | Re : Un truc que je capte pas

vxr888

Membre Club
Salut,

Merci de ton aide mais un peu de texte m'aiderait beaucoup.

Je comprends que ce que tu veux me dire c'est de travailler avec plusieurs lignes.

Ainsi, je pense que le while correspond à la lecture de plusieurs lignes (dites-moi si je me trompe).

Ensuite il y a 2 for (pourquoi 2 et pas un ?) et un explode. Là je n'en saisis pas le sens.

Si quelqu'un peut m'expliquer, je l'en remercierais !
samedi 27 novembre 2010 à 14:29:48 | Re : Un truc que je capte pas

cod57

bonjour


explode() le csv contient un delimiteur souvent un ;
je l'enléve ...
2 for pour reconstruire le tableau html ou autre

il faudrait que tu expliques comment est construit ton csv de 2000 nbres
colonnes fixes lignes variables ... ?
a;
a;
c; ...

ou

a;b;c;d; ...

ou

a;b;
c;d;e;

...

a++
samedi 27 novembre 2010 à 16:16:33 | Re : Un truc que je capte pas
samedi 27 novembre 2010 à 17:59:19 | Re : Un truc que je capte pas

vxr888

Membre Club
Ok je comprends un peu mieux sauf l'explode...

Pourquoi ne pas utiliser l'entièreté de la fonction ?

A la place de :
while($csv_line = fgetcsv($fp,1024))

Mettre :
while($csv_line = fgetcsv($fp,1024,';'))

??

samedi 27 novembre 2010 à 19:21:49 | Re : Un truc que je capte pas

cod57

bonsoir
oui on peut faire comme ça
while($csv_line = fgetcsv($fp,1024,';'))
pour ce que tu comprends pas la ligne à une longueur
a;b; ... ;z <-- 1024
int $length 1024 si à 1 (ou 512 ou 2048 ce qu'on veut ...)
int $length pas de limite si à 0
a++
samedi 27 novembre 2010 à 21:11:54 | Re : Un truc que je capte pas

vxr888

Membre Club
Oui length = longueur en français mais à quoi correspond cette valeur ?

Une unité de longueur est-elle égale à un caractère ?

En gros 1024 c'est 1024 caractères ?

J'ai lu un truc qui parlait d'octets ; à quoi ça correspond ; bref comment connaître la limite ?
samedi 27 novembre 2010 à 23:36:28 | Re : Un truc que je capte pas

cod57

re
1024 octets
a++
dimanche 28 novembre 2010 à 09:06:14 | Re : Un truc que je capte pas

kohntark

Membre Club
Réponse acceptée !
Salut,

Oui length = longueur en français mais à quoi correspond cette valeur ?

Une unité de longueur est-elle égale à un caractère ?


La réponse est dans la doc que tu as toi même cité dans ton premier post :

Doit être plus grand que la plus grande ligne (en terme de caractères)



bref comment connaître la limite ?


Nb de caractères maxi de la ligne la plus longue + caractères de fin de ligne.
Ca peut être utile de préciser ce paramètre dans le cas de gros fichiers, ou lorsque la taille de chaque ligne est fixe.
Mettre 0 (ou une valeur suffisamment élevée) assure que le fichier sera correctement lu, avec une perte de performance qui doit être négligeable.

En gros ce que je veux, c'est pouvoir lire dans un fichier csv ou il y a environ 2000 chiffres séparés par des virgules.


Dans ce cas mettre length à la valeur du nombre maxi de caractères du plus grand chiffre +2 est correct.

Cordialement,

Kohntark -


Cette discussion est classée dans : ligne, string, truc, length, capte


Répondre à ce message

Sujets en rapport avec ce message

Comment avoir la ligne d'arguments complete ? [ par azerty25 ] Hello allJe voudrais savoir comment récupérer la ligne d'arguments complète transmise à un fichier, c'est à dire, par exemple, pour une page page.php? probleme de retour à la ligne [ par ehmarc ] Bonjour,j'ai un script assez simple de update d'une bdd mysql à partir d'un .csv le probleme c que dans mon fichier donne un truc comme ca toto;toto;t panier virtuel php ??!! [ par KIss Cool ] Salut a tousJe suis nouveau sur ce site et complètement debutant en php, limite ignard.Je dois créer un système de panier virtuel pour un site commerc lecture d'un fichier... [ par l0sth34d ] bonjour, jaimerais savoir comment a l'aide d'un include.. afficher c'est informations.. http://www.nforce.nl/rss/bots_last-10.php dans un tableau ... Afficher du texte ¿Brut? [ par VooDooS ] Bonjour !Voila la situation :J'ais créé un site, ou je veut pouvoir poster des news, depuis un formulaire php, pour les voir s'affichées sur la page d couper une chaine [ par brezoneg ] Dans des champs j'insère des valeurs du type :champ amachin.(PLR) truc.(SH) bins.(JCL) pendant un affichage je voudrais couper cet enregistrement en r probleme de lecture sur 2 BD [ par ekipage2 ] Bonjour,Je cherche à afficher les infos de 2BDLe script est le suivant//lecture infos joueur et score$ligne = "SELECT * FROM joueur WHERE idjoueur='$i Service de pages persos en ligne sur mon site [ par tony4758 ] Bonjour, je voudrais savoir comment créer un service de pages persos en ligne sur mon site du style wanadoo page perso expresse, je voudrais savoir le problème de redirection [ par ekipage2 ] Bonsoir à tous,Je voudrais faire une redirection automatique après une inscriptionJe ne peux pas utiliser Header car j'ai du html dans ma pagej'ai mis Affichage des resultat d'une requete sur plusieur pages [ par zizou94 ] Bonjour a tous Voila je suis toujours sur la programmation de mon premier site et j ai un souci. Je souhaiterai limiter l'affichage de mes résultat su


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,103 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales