[RESOLU] créer un array à partir d'un csv (colonne/colonne)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] créer un array à partir d'un csv (colonne/colonne)

Re: [Résolu]

par zeus » 16 août 2006, 14:12

le must c'est quelqu'un marque le sujet comme resolu !!!!
Oui en effet, depuis je suis enregistré dans le forum !
Je demande aux modérateurs d'ajouter la mention "[Résolu]"
c'est fait ;)

[Résolu]

par superyms » 16 août 2006, 13:55

[quote="thehawk"]le must c'est quelqu'un marque le sujet comme resolu !!!![/quote]

Oui en effet, depuis je suis enregistré dans le forum !
Je demande aux modérateurs d'ajouter la mention "[Résolu]" (je ne peux pas le faire, car j'étais invité lorsque j'ai écrit mon message ainsi que sa solution !)

@+ :)

par thehawk » 16 août 2006, 13:41

le must c'est quelqu'un marque le sujet comme resolu !!!!

[Résolu]

par superyms » 16 août 2006, 13:37

bonjour, :D

c'est bon j'ai tout résolu, j'ai juste mal lu tout ce qui est lié aux arrays !

voici mon code !
<?php 
//Lire le CSV et lire ligne par ligne (enfin colonne par colonne)
ini_set("auto_detect_line_endings", 1);
$current_row = 1;
$handle = fopen("test.csv", "r");
while ( ($liste = fgetcsv($handle, 10000, ";") ) !== FALSE )
{ 
// J'enregistre toutes les données dans des variables 
      $pays[] = $liste[0]; 
      $fixe[] = $liste[1];
      $mobile[] = $liste[2]; 
      $sms[] = $liste[3];  
      $fax[] = $liste[4];	  
}
//pour les futures incrémentations le nombre d'éléments de chaque colonne
$number_of_fields = count($pays);
?>
pour le menu des pays rien de plus simple !
        <blockquote>
          <select name="ListePays" class="majuscule">
<?php
//incrémentation de la liste de la colonne pays, où PAYS (nom de la colonne est affiché en premier, tant mieux !)
for ($i = 0; $i < $number_of_fields; $i++)
{           echo "<option value='$i' class='majuscule'>$pays[$i]</option>";
}
?>
          </select>
        </blockquote>

Milles merci à tous !

J'ai trouvé grâce à vous alors je partage tout naturellement ! (on ne sait jamais cela peut servir à quelqu'un d'autre !) :wink:

Ps: sert à lire des csv réaliser avec excel !

par Truc » 15 août 2006, 20:43

Si quelqu'un à plus à proposer qu'il ne se gêne pas !
Essaie déjà de travailler avec ce dont tu disposes :wink:

Tu n'as pas besoin de te documenter tellement plus sur les array... un test d'affichage pour visualiser le contenu d'un array (tableau) :
<pre>
<?php print_r($array); // avec $array un tableau ... ex : $pays?>
</pre>

par graphistnet » 15 août 2006, 16:02

T'es tu suffisamment documenté sur la fonction fgetcsv() ? je me pencherais précisément là dessus pour avancer

par superyms » 15 août 2006, 15:44

Le multipostage est interdit ici... [-X

Tu aurais dû passer par les Rèlements généraux avant de poster
Oui c'est vrai désolé !
Je ne les aient pas lues !

Je n'ai fait que 2 postages du mêm sujet , je pensaitt que cela me donnerai plus de réponses (c'ets bête mais c'ets plutot naïf car au bord du pêtage de plomb !)

<?php boucle ($ligne = fgetcsv()) // à voir dans la doc  
{         
      $pays[] = $ligne[0]; 
      $fixe[] = $ligne[1]; 
      //... idem pour les autres    
} 
Merci je vais essayé ! j'espère que je vais m'en sortir (j'ai lu environs une vintaine de documents sur les arrays dont certains en anglais, j'ai l'impression d'avoir compris mais pas suffisemment pour faire ce que je veux ! c'est frustrant !!!)

Si quelqu'un à plus à proposer qu'il ne se gêne pas !

Meric à tous!

vive PHP vive PHPFrance (et tous ceux qui aident ceux qui essayent comem moi !)

@+

par Truc » 15 août 2006, 15:34

Le multipostage est interdit ici... [-X

Tu aurais dû passer par les Rèlements généraux avant de poster

par Truc » 15 août 2006, 15:29

Salut,

Voila un début de piste pour la construction des tableaux :
boucle ($ligne = fgetcsv()) // à voir dans la doc 
{        
      $pays[] = $ligne[0];
      $fixe[] = $ligne[1];
      //... idem pour les autres   
} 
Pourquoi veux tu que le tableau débute à 1 ça n'aura pas d'influance sur la suite ?

créer un array à partir d'un csv (colonne/colonne)

par superyms » 15 août 2006, 14:19

Bonjour, :D

j'ai le fichier 'test.csv' que j'essai depuis maintenant assez longtemps pour ne pas m'en sortir seul !

Code : Tout sélectionner

test.csv ================== pays;fixe;mobile;sms;fax algérie;0,18;0,2;0,08;0,2 argentine;0,07;0,21;0,06;0,09 australie;0,04;0,21;0,05;0,08 autriche;0,04;0,25;0,05;0,08 belgique;0,03;0,18;0,05;0,06
je dois (veux) faire ceci :

1/ il faut savoir que le csv est composée de 5 colonnes (pays, fixe, mobile, sms et fax) séparée par un ";"
2/ je sais que je dois me servir de fgetscsv() pour ouvrir et rapatrié les données !
3/ je sais que les données incluses dans les lignes (rows) peuvent être lues et obtenues ! sous forme de tableaux de données (arrays)

a/obtenir des arrays comme ceci : (colonne par colonne et pas ligne par ligne !)
$pays = array ('algérie', 'autriche', 'australie', ...);
$ fixe = array ('0,15', '0,08', ...);
idem pour les autres

b/une fois ces tableaux créés je souhaite les utiliser dans des boucles (foreahc sinon foravec incrémentation) pour généré :
- une liste déroulante pour les pays :

Code : Tout sélectionner

<select name="ListePays"> <option value='1'>Algeria</option><option value='2'>Argentina</option><option value='3'>Australia</option><option value='4'>Austria</option><option value='5'>Belgium</option></select>
je sais que je peux le faire comme ceci, mais je n'ai pas les données tableau plus haut :
<select name="ListePays" onChange="chklayer(this.value)">
<?php
$pays = array ("Algeria", "Argentina", "Australia", "Austria", "Belgium");

for ($i = 0; $i < count($pays); $i++)
{ echo "<option value='$i'>$pays[$i]</option>";
}
?>
</select>

- une boucle qui affiche les détails des autres colonnes :
<?php
for ($i = 1; $i < count($pays); $i++)
{
echo "<div id=Layer$i class=tarif style=display:none>";
echo "<p><span class=Style2>Téléphonie</span><br />";
echo "Fixe: <span class=Style1><strong>$fixe[$i]</strong></span><br />";
echo "Mobile: <span class=Style1><strong>$mobile[$i]</strong></span></p>";
echo "<p><span class=Style2>Fax: </span><span class=Style1><strong>$fax[$i]</strong></span></p>";
echo "<p><span class=Style2>Sms: </span><span class=Style1><strong>$sms[$i]</strong></span></p>";
echo "</div>";
}
?>
vous voyez je coince ! :shock: :oops:

1/ je ne sais pas comment créer un tableau (array) que je nommerai $pays et qui me donne toutes la liste des pays inclus dans le csv ! (idem pour les autres colonnes !)
2/ je ne sais pas comment iplémenter uen boucle de manière à ce que le 1er élément du tableau array soit $i =1 et non pas =0 (peutre que foreach est meilleure en utilisant un tableau associatif ?

Milles merci de me donner conseil et orientation sinon un début de oslution (une solution complète aussi) car là vraiment je n'en peux plus !

A l'aide ! :idea: