IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[CSV] Lecture de fichier CSV


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut [CSV] Lecture de fichier CSV
    Bonjour à tous
    j'ai regardé le tutoriel AJAX pour modifier en ligne un tableau avec des données provenants d'une BD http://olance.developpez.com/article...cation-inline/

    il se trouve que j'aimerai faire la même chose mais en prenant les données d'un fichier.csv (séparateur";")

    je ne connait pas le code pour ouvrir les fichiers .csv , j'ai trouvé celui ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $row = 1;
    $handle = fopen("test.csv", "r");
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num champs à la ligne $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
    ?>
    mais il me provoque cette erreur, j'ai l'impression qu'il ne ferme j'amai la boucle???

    Warning: fopen("000ACR47820_1-1.csv", "r") - No such file or directory in c:\program files\easyphp\www\acrbo5\csvphp.php on line 3

    Warning: fgetcsv(): supplied argument is not a valid File-Handle resource in c:\program files\easyphp\www\acrbo5\csvphp.php on line 4

    0 champs à la ligne 1:

    Warning: fgetcsv(): supplied argument is not a valid File-Handle resource in c:\program files\easyphp\www\acrbo5\csvphp.php on line 4

    0 champs à la ligne 2:

    AINSI DESSUITE...

    De plus, je ne voit pas comment l'adapter avec ce code "modification en ligne"
    Si quelqu'un peut m'aider
    Merci

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    d'après le premier message, le problème est plutôt qu'il ne trouve pas le fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: fopen("000ACR47820_1-1.csv", "r") - No such file or directory in c:\program files\easyphp\www\acrbo5\csvphp.php on line 3
    Les erreurs suivantes sont donc inévitables

    A+

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    Salut à tous
    ça y est, j'arrive à ouvrir mon fichier "000ACR47820_1-1.csv"(pour moi c'est énorme...)
    Il fallait juste que je le déplace dans le même dossier ou se trouve mon code php
    mais je préfère le mettre dans un dossier spécifique comment dois-je indiquer le chemin:
    Par exemple:j'ai mon code php dans le dossier tartampion, et je voudrais pouvoir mettre mon fichier "000ACR47820_1-1.csv" sous tartampion/fivhiercsv/

    Ensuite, il m'ouvre mon fichier csv en me mettan les données à la ligne les unes sous les autres et moi, j'aimerai faire ouvrir un tableau comme ceci
    http://olance.developpez.com/article...cation-inline/
    Comment puis-je ajuster les 2 codes?
    Merci

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    Resalut
    j'ai mis ce code qui m'ouvre les données sous forme de tableau il m'affiche le bon nombre de lignes mais il ne m'affiche que 4 colonnes au lieu de huits, comment cela se fait-il?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php 
     
    $nom_fichier = 'ex_1.csv'; 
    $id = fopen($nom_fichier,'r'); // Ouverture du fichier en lecture seule 
    // Affiche le fichier sous forme de tableau (HTML) 
    echo '<table border=\'1\'>'; 
    // On parcours les lignes jusqu'à la fin du fichier CSV 
    for($lig=fgetcsv($id,1024,';');!feof($id);$lig=fgetcsv($id,1024,';')) { 
      // $lig est un tableau contenant les colonnes d'une ligne 
      echo '<tr>'; 
      // On parcours et affiche le contenu des colonnes 
      for($i=0;$i<strlen($lig);$i++) 
          echo "<td>$lig[$i]</td>"; 
      echo '</tr>'; 
    } 
    echo '</table>'; 
     
    ?>
    N'y a-t-il personne pour m'aider??????
    MERCI

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Tu utilise 2 fois 'fgetcsv' avant affichage, donc il saute 1 ligne sur 2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <?php 
      $nom_fichier = 'ex_1.csv'; 
      $id = fopen($nom_fichier, 'r'); // Ouverture du fichier en lecture seule 
      // Prépare le tableau (HTML) 
      $tableau = '<table border="1">'; 
      // On parcours les lignes jusqu'à la fin du fichier CSV 
      while (($lig = fgetcsv($id, 1024, ';')) !== FALSE) 
      {
        $tableau .= '<tr>';
        foreach ($lig as $valeur)
        {
          // Si par hasard une colonne est vide
          $valeuraAfficher = ($valeur != '') ? $valeur : '&nbsp;';
          $tableau .= '<td>' . $valeuraAfficher . '</td>'; 
        }
        $tableau .= '</tr>'; 
      }
      $tableau .= '</table>';
     
      fclose($id);
     
      // Affiche le fichier sous forme de tableau (HTML) 
      echo $tableau;
    ?>
    D'autre part, je pense plus rapide de concaténer la totalité du tableau dans une chaîne, plutôt que d'afficher chaque élément séparément.

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    Salut et merci pour ta réponse, mais je ne sait pas si je part dans la bonne direction en fait je voudrais ouvrir mon fichier csv sous forme de tableau modifiable comme ceci :http://olance.developpez.com/article...nline/exemple/ (double clique sur une celule du tableau et elle devient modifiable)
    Seulement, l'exemple donné pour ça ouvre le tableau depuis une BD et non d'un fichier csv, c'est là que je ne sait pas


    une autre question
    quel est le code pour demander l'ouverture, mais dans une nouvelle fenètre????

  7. #7
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    pour ouvrir une nouvelle fenetre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script>
    function VoirListe(){ 
     
    window.open('listes.php?Load=','popup','width=283,height=193,Left=300,Top=200').focus();
     
    }
    </script>
    <a href="javascript:VoirListe()">Liste</a>
    <p>
      <a href="lien" target="_blank">open</a>
    </p>

  8. #8
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    Salut à tous
    Jeca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tu utilise 2 fois 'fgetcsv' avant affichage, donc il saute 1 ligne sur 2.
    Peut étre mais ton code ne fonctionne pasil m'ouvre une page vide???????

    QUANT à TOI DELPHI
    il me met une erreur dés la première ligne???

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Sans savoir comment tu as intégré leur suggestion, aucun des deux ne pourra t'aider plus

    A+

  10. #10
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    pour jeca j'ai intégré son code en entier en mettant juste le nom de mon fichier en faisant ça je pense que ça aurrait du marcher
    quant à delphi, il m'a donné tellemnt de bouts de codes :VBA, php, extc..
    Que j'aurrais bien aimé qu'il me fasse un récap de tout.
    Merci

  11. #11
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    Bonjour
    voici ce class qui traite les fichier csv lesfonction disponibles:
    csv_create creer un nouveau fichier
    csv_truncate vider le fichier
    csv_open ouvrir un fichier
    csv_assoc tableau associatif
    csv_array tableau indexé
    csv_delete supprimer une ligne
    csv_insert ajouter une ligne
    csv_edit modifier une ligne
    csv_refresh recharger le ficher
    csv_echo afficher le contennu

    row_count nombre des lignes
    col_count nombre des colonnes
    assoc cle des colones
    champs nom des colonnes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
     
    <?php 						
    class cvs_data						
    {						
    	private $open=false;					
    	private $filname='';					
    	private $isbusy=false;					
    	private $starts=false;					
    	private $ends=false;					
    	private $canedit=false;					
    	private $delete=array();					
    	public $row_count=0;					
    	public $col_count=0;					
    	private $buff=array();					
    	public $champs=array();					
    	public $assoc=array();					
    	public function csv_create($filname,$colnames)					
    	{					
    		$fl=explode(';',$colnames);				
    		if(is_array($fl))				
    		{				
    			$this->col_count=count($fl);			
    			foreach($fl as $k=>$val)			
    			{			
    				if(!is_string($val))return false;		
    				$this->champs[$k]=$val;		
    				$this->assoc[$val]=$k;		
    			}			
    			$this->filname=$filname;			
    			$this->csv_update();			
    			return true;			
    		}				
    	}					
    	public function csv_truncate()					
    	{					
    		$this->buff=array();				
    		$this->csv_update();				
    	}					
    	public function csv_open($filname,$start=0,$limit=false)					
    	{					
    		if($limit!=false)				
    		{				
    			$this->ends=$limit+$start;			
    		}				
    		else				
    		{				
    			$this->ends=10000;			
    		}				
    		$this->starts=$start;				
    		$this->filname=$filname;				
    		$this->csv_read();				
    	}					
    	private function csv_read()					
    	{					
    		$h=@ fopen($this->filname,"r");				
    		$this->buff=array();				
    		if($h)				
    		{				
    			$inc=0;			
    			$srat=false;			
    			while(($data=fgetcsv($h,4096,";"))!==false)			
    			{			
    				if($srat==false)		
    				{		
    					$srat=true;	
    					$this->buff[]=$data;	
    				}		
    				else		
    				{		
    					$inc++;	
    					if($inc>$this->starts)	
    					{	
    						if($inc>$this->ends)break;
    						$this->buff[]=$data;
    					}	
    				}		
    			}			
    			if(count($this->buff)>0)			
    			{			
    				if(is_array($this->buff[0]))		
    				{		
    					$this->col_count=count($this->buff[0]);	
    					$this->assoc=@ array_flip($this->buff[0]);	
    					$this->champs=$this->buff[0];	
    					@ array_shift($this->buff);	
    					$this->row_count=count($this->buff);	
    				}		
    				$this->isbusy=true;		
    			}			
    			$this->index=1;			
    			$this->open=true;			
    			@ fclose($h);			
    		}				
    		$this->delete=array();				
    		return $this->open;				
    	}					
    	public function csv_assoc()					
    	{					
    		return $this->csv_ex(true);				
    	}					
    	public function csv_array()					
    	{					
    		return $this->csv_ex();				
    	}					
    	private function csv_ex($arr=false)					
    	{					
    		if(count($this->buff)==0 || $this->isbusy==false)				
    		{				
    			$this->isbusy=false;			
    			return false;			
    		}				
    		if(count($this->champs)==count($this->buff[0]))				
    		{				
    			$out=($arr)?@ array_combine($this->champs,$this->buff[0]):$this->buff[0];			
    		}				
    		else				
    		{				
    			$out='erreur a '.count($this->buff);			
    		}				
    		@ array_shift($this->buff);				
    		return $out;				
    	}					
    	public function csv_delete($val,$refresh=true)					
    	{					
    		if($this->isbusy)				
    		{				
    			if(is_array($val))			
    			{			
    				@ $this->delete=array_merge($this->delete,$val);		
    			}			
    			else			
    			{			
    				@ $this->delete[]=$val;		
    			}			
    			if($refresh)			
    			{			
    				$this->csv_update();		
    			}			
    			return true;			
    		}				
    	}					
    	public function csv_insert($val,$refresh=true)					
    	{					
    		if($this->isbusy)				
    		{				
    			if(is_array($val)&& count($val)==$this->col_count)			
    			{			
    				$this->buff[]=$val;		
    				if($refresh)		
    				{		
    					$this->csv_update();	
    				}		
    				return true;		
    			}			
    		}				
    	}					
    	public function csv_edit($val,$rw,$col,$refresh=true)					
    	{					
    		if($this->can_edit())				
    		{				
    			if(intval($rw)<$this->row_count && in_array($col,$this->assoc))			
    			{			
    				@ $this->buff[intval($rw)][$this->assoc[$col]]=$val;		
    			}			
    			if($refresh)			
    			{			
    				$this->csv_update();		
    			}			
    			return true;			
    		}				
    	}					
    	private function can_edit()					
    	{					
    		return(count($this->buff)==$this->row_count && $this->isbusy)?true:false;				
    	}					
    	private function csv_update()					
    	{					
    		$this->csv_refresh();				
    		$this->csv_read();				
    	}					
    	public function csv_refresh()					
    	{					
    		$this->open=false;				
    		$h=@ fopen($this->filname,"w");				
    		if($h)				
    		{				
    			@ fputcsv($h,$this->champs,';');			
    			foreach($this->buff as $lin=>$val)			
    			{			
    				if(!in_array($lin,$this->delete))		
    				{		
    					@ fputcsv($h,$val,';');	
    				}		
    			}			
    			fclose($h);			
    			$this->delete=array();			
    			return true;			
    		}				
    		return false;				
    	}					
    	public function csv_echo()					
    	{					
    		$out='<table border="1">';				
    		$out.='<tr><th>'.implode('</th><th>',$this->champs).'</th></tr>';				
    		foreach($this->buff as $lin=>$val)				
    		{				
    			$out.='<tr><td>'.implode('</td><td>',$val).'</td></tr>';			
    		}				
    		$out.='<table>';				
    		echo $out;				
    	}					
    }	
     
    $db=new cvs_data;						
    $db->csv_open('test.csv');						
    while($out=$db->csv_assoc())						
    {						
    	echo $out['colonne1'].'<br>';					
    }						
    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    $db=new cvs_data;
    // creation de fichier test.csv avec 4 colonnes 
    $db->csv_create('test.csv','colonne1;colonne2;colonne3;colonne4');
     
    //insertion des element dans le fichier 
    $db->csv_open('test.csv');
    $ins=array("item1","item2","item3","item4")
    $db->csv_insert($ins);//insertion derect
     
    //si on veux ajouter plusieurs lignes 
    $ins=array("item1","item2","item3","item4")
    $db->csv_insert($ins,false);
     
    $ins=array("elem1","elem2","elem3","elem4")
    $db->csv_insert($ins,false);
     
    $db->csv_refresh();//ici insertion final
     
     
    //ajouter avec boucle
    for($i=0;$i<10;$i++)
    {
    $db->csv_insert(array("aa{$i}","bb{$i}","cc{$i}","ss{$i}"),false);
    }
    $db->csv_refresh();//ici insertion des 10 elements final
     
    //suprimer une ligne 
    $db->csv_open('test.csv');
    $db->csv_delete(5)// suppression direct de la ligne 5
     
    //supprimer plusieurs lignes derectement
    $del=array(0,1,2,3,4,5,6,7,8,9,10,11);
    $db->csv_delete($del);
     
    //suppression inderect
    $db->csv_delete(4,false)
    $db->csv_delete(6,false)
    $db->csv_refresh();//ici la suppression
     
    //modifier  lignes derectement
    $ligne=21;//numero de la ligne 
    $colonne='role_type'; //nom du olonne 
    $valeur='nouvellevaleur'; //nouvelle valeur
    $db->csv_edit($valeur,$ligne,$colonne);
     
     
    $db->csv_truncate();//efface toutes les donne et garde les nom des colonnes
    $db->csv_echo();//affiche le contennu 
     
    //Affichage
    //tableau associatif
    while($out=$db->csv_assoc())
    {
    echo $out['colone1'].$out['colone4'].'<br>';
    }
    //Affichage
    //tableau indexé
    while($out=$db->csv_array())
    {
    echo $out[3].'<br>';
    }
     
     
    //pour limiter les lignes d'affichage mais seulement en lecture 
    //si vous utilisez ça pour modifier ajouter supprimer vous risquez de supprimer le 
    $db=new cvs_data;
    $db->csv_open('test.csv',4,7);//affiche 7 lignes en commençant par la 4eme
    $db->csv_echo();

  12. #12
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    tu peux voir ici
    ouvrer le fichier index et tester je vais envoyer plus de details
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <?php  include('csvclass.php');
    if(isset($_GET['item']))
    {
    	$Value=(!get_magic_quotes_gpc())?addslashes($_POST['data']):$_POST['data'];
    	$pos=intval($_GET['item']);
    	$db=new cvs_data;
    	$db->csv_open('test.csv');
    	$rw=intval(($pos/$db->col_count));
    	$cl=$db->champs[($pos%$db->col_count)];
    	if($db->csv_edit($Value,$rw,$cl))
    	{
    		echo 'ok';
    	}
    	else
    	{
    		echo 'err';
    	}
    }
    ?>
    ca marche

  13. #13
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    Merci de consacrer autant de temps à mon problème
    j'ai téléchargé ton .rar
    lorsque je double clique sur index.php, il m'ouvre une page sur fond bleu avec ce code à l'interieur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    csv_open('test.csv'); $linescount=0; $ids=0; $htmlout=''; $htmlout.=" ".implode(" ",$db->champs)." 
    \r"; $htmlout.=" "; while($out=$db->csv_array()) { $htmlout.=' '; for($p=0; $p<$db->col_count; $p++) { $htmlout.=' '.$out[$p]; $htmlout.=' '; $ids++; } $linescount++; $htmlout.=" 
    \r"; } $htmlout.=' '; ?>
    je ne comprends pas comment tester pour voir que ça marche,
    de plus ton fivhier .cs est idéal, il n'y a qu'un point virgulre à chaque séparation alors que moi il arrive que j'ai 4 points virgules vu qu'il y a des cellules vides

  14. #14
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    Bonjour
    D'abord il faut extraire et mettre les 5 fichier dans le meme dossier sur ton serveur local et quand tu dis que
    j'ai double cliqué sur le fichier index
    ça pose des question?
    j'ai teste encore ça mache chez moi je ne sais pas ce que se passe avec toi je ne utilise pas le easyphp mais le wamp5
    version php 5.1.2 et ie 6 comme explorer .
    je domonde si qlq'un d'autre l'a essayer
    Si tu veux utiliser ton fichier tu vas changer ces lignes
    dans index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //ligne 3
    $db->csv_open('test.csv');//entrer le nom de ton fichier
    dans modifier.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //ligne 3
    $db->csv_open('test.csv');//entrer le nom de ton fichier
    enfin si ça marche n'oublier pas d'ajouter "htmlentities"et "stripslashes"dans le ficher index pour afficher correctement tes textes

  15. #15
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    je ne pourrait pas retester avant lundi
    je te tiens au courant
    bon week end

  16. #16
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    Re bonjour
    je pense que vous avez tester les fichies avec lexplorer derectement vous n'avais pas demarrer le easyphp server !
    essaie ceci
    creer un dossier "csv" dans "c:\program files\easyphp\www\" et mettez les 5 fichier dedans demarrez le ton easyphp
    entrer dans votre internet explorer l'adressesiuvant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    http://localhost/csv/
    ou 
    http://localhost/csv/index.php

  17. #17
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    Salut,
    j'ai fait comme tu as dit, j'ai créé un dossier "csv" (avec tous les fichiers dedans) sous "c:\program files\easyphp\www\acrbo5\"

    lorsque je tape l'adresse :"http://acrnmp.kwe.egs.edf.fr/acrbo5/csv/index.php"

    Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in c:\program files\easyphp\www\acrbo5\csv\csvclass.php on line 3

    Fatal error: Cannot instantiate non-existent class: cvs_data in c:\program files\easyphp\www\acrbo5\csv\index.php on line 2


    d'ou que ça pourrait venir?

    Apparement cela viendrait d'un problème PHP4/PHP5
    Y-a-til une solution au niveau du code sans avoir à charger php5???

  18. #18
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    Bonjour
    vous etes sous php4 si possible mais avec qlq modification noter que pour écrire dans un fichier .cvs on utilise la fonction "fputcsv" ça n'existe pas sous php4 mais j'ai trouve une sur le site "http://www.php.net/"
    tu peux charger un autre
    la fonction csv_assoc ne marche pas si tu veux l'utiliser .
    j'ai testé sous easyphp 1.6 php 4.2 ça marche
    avant d'essayer vérifier que la taille du fichier test.csv n'est pas a zéro

    si tu veux un moyen qui t’aide pour comprendre le code ‘ ou tes codes en général ‘ voici mon code c'est bien je le utilise souvent
    http://www.developpez.net/forums/d60...colorier-code/
    remplacer le fichier
    csvclass.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
     
    <?php  class cvs_data
    {
    	var $open=false;
    	var $filname='';
    	var $isbusy=false;
    	var $starts=false;
    	var $ends=false;
    	var $canedit=false;
    	var $delete=array();
    	var $row_count=0;
    	var $col_count=0;
    	var $buff=array();
    	var $champs=array();
    	var $assoc=array();
    	 function csv_create($filname,$colnames)
    	{
    		$fl=explode(';',$colnames);
    		if(is_array($fl))
    		{
    			$this->col_count=count($fl);
    			foreach($fl as $k=>$val)
    			{
    				if(!is_string($val))return false;
    				$this->champs[$k]=$val;
    				$this->assoc[$val]=$k;
    			}
    			$this->filname=$filname;
    			$this->csv_update();
    			return true;
    		}
    	}
    	 function csv_truncate()
    	{
    		$this->buff=array();
    		$this->csv_update();
    	}
    	 function csv_open($filname,$start=0,$limit=false)
    	{
    		if($limit!=false)
    		{
    			$this->ends=$limit+$start;
    		}
    		else
    		{
    			$this->ends=10000;
    		}
    		$this->starts=$start;
    		$this->filname=$filname;
    		$this->csv_read();
    	}
    	 function csv_read()
    	{
    		$h=@ fopen($this->filname,"r");
    		$this->buff=array();
    		if($h)
    		{
    			$inc=0;
    			$srat=false;
    			while(($data=fgetcsv($h,4096,";"))!==FALSE)
    			{
    				if($srat==false)
    				{
    					$srat=true;
    					$this->buff[]=$data;
    				}
    				else
    				{
    					$inc++;
    					if($inc>$this->starts)
    					{
    						if($inc>$this->ends)break;
    						$this->buff[]=$data;
    					}
    				}
    			}
    			if(count($this->buff)>0)
    			{
    				if(is_array($this->buff[0]))
    				{
    					$this->col_count=count($this->buff[0]);
    					$this->assoc=@ array_flip($this->buff[0]);
    					$this->champs=$this->buff[0];
    					@ array_shift($this->buff);
    					$this->row_count=count($this->buff);
    				}
    				$this->isbusy=true;
    			}
    			$this->index=1;
    			$this->open=true;
    			@ fclose($h);
    		}
    		$this->delete=array();
    		return $this->open;
    	}
    	 function csv_assoc()
    	{
    		return $this->csv_ex(true);
    	}
    	 function csv_array()
    	{
    		return $this->csv_ex();
    	}
    	 function csv_ex($arr=false)
    	{
    		if(count($this->buff)==0 || $this->isbusy==false)
    		{
    			$this->isbusy=false;
    			return false;
    		}
    		if(count($this->champs)==count($this->buff[0]))
    		{
    			$out=($arr)?@ array_combine($this->champs,$this->buff[0]):$this->buff[0];
    		}
    		else
    		{
    			$out='erreur a '.count($this->buff);
    		}
    		@ array_shift($this->buff);
    		return $out;
    	}
    	 function csv_delete($val,$refresh=true)
    	{
    		if($this->isbusy)
    		{
    			if(is_array($val))
    			{
    				@ $this->delete=array_merge($this->delete,$val);
    			}
    			else
    			{
    				@ $this->delete[]=$val;
    			}
    			if($refresh)
    			{
    				$this->csv_update();
    			}
    			return true;
    		}
    	}
    	 function csv_insert($val,$refresh=true)
    	{
    		if($this->isbusy)
    		{
    			if(is_array($val)&& count($val)==$this->col_count)
    			{
    				$this->buff[]=$val;
    				if($refresh)
    				{
    					$this->csv_update();
    				}
    				return true;
    			}
    		}
    	}
    	 function csv_edit($val,$rw,$col,$refresh=true)
    	{
    		if($this->can_edit())
    		{
    			if(intval($rw)<$this->row_count && in_array($col,$this->champs))
    			{
    				@ $this->buff[intval($rw)][$this->assoc[$col]]=$val;
    				if($refresh)
    				{
    					$this->csv_update();
    				}
    				return true;
    			}
    		}
    	}
    	 function can_edit()
    	{
    		return(count($this->buff)==$this->row_count && $this->isbusy)?true:false;
    	}
    	 function csv_update()
    	{
    		$this->csv_refresh();
    		$this->csv_read();
    	}
    	 function csv_refresh()
    	{
    		$this->open=false;
    		$h=@ fopen($this->filname,"w");
    		if($h)
    		{
    			@ $this->fputcsv($h,$this->champs,';');
    			foreach($this->buff as $lin=>$val)
    			{
    				if(!in_array($lin,$this->delete))
    				{
    					@ $this->fputcsv($h,$val,';');
    				}
    			}
    			fclose($h);
    			$this->delete=array();
    			return true;
    		}
    		return false;
    	}
    	 function csv_echo()
    	{
    		$out='<table border="1">';
    		$out.='<thead><tr><th>'.implode('</th><th>',$this->champs)."</th></tr>\r";
    		$out.='</thead><tbody>';
    		foreach($this->buff as $lin=>$val)
    		{
    			$out.="<tr><td>".implode('</td><td>',$val)."</td></tr>\r";
    		}
    		$out.='</tbody><table>';
    		echo $out;
    	}
     
    	  function fputcsv(&$handle, $fields = array(), $delimiter = ',', $enclosure = '"') {
        $str = '';
        $escape_char = '\\';
        foreach ($fields as $value) {
          if (strpos($value, $delimiter) !== false ||
              strpos($value, $enclosure) !== false ||
              strpos($value, "\n") !== false ||
              strpos($value, "\r") !== false ||
              strpos($value, "\t") !== false ||
              strpos($value, ' ') !== false) {
            $str2 = $enclosure;
            $escaped = 0;
            $len = strlen($value);
            for ($i=0;$i<$len;$i++) {
              if ($value[$i] == $escape_char) {
                $escaped = 1;
              } else if (!$escaped && $value[$i] == $enclosure) {
                $str2 .= $enclosure;
              } else {
                $escaped = 0;
              }
              $str2 .= $value[$i];
            }
            $str2 .= $enclosure;
            $str .= $str2.$delimiter;
          } else {
            $str .= $value.$delimiter;
          }
        }
        $str = substr($str,0,-1);
        $str .= "\n";
        return fwrite($handle, $str);
      }
     
     
    }
    ?>
    supprimer le variable "$linescount" dans index.php ça ne sert a rien !
    finalement éxcuser mois pour mon français

  19. #19
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 255
    Points : 50
    Points
    50
    Par défaut
    écoutes, tu es tout excusé pour ton français car ton anglais (tes codes) sont excelents, ça marche du tonerre
    Merci, tu m'as fait faire un grand pas en avant
    Allez, je voudrais fignoler un peu

    pour corsser le tout peut-on rajoutter 2 boutons en bout de chaque ligne qui pourraient soit insérrer une ligne vide ( au format existant)par exemple ou supprimer une ligne????

    Sinon encore une question dans mon fichier .csv joint,je voufrait laisser les trois prelières lignes telles quelles sont , la 4ème ligne (numérotée 1)(non modifiables couleur de fonds (bleu un peu diférent des autres) la 4éme ligne fond bleu ciel et modifiable, let systématiquement les 4 dernières non modifiables sur fond bleu foncé tel la première.
    c'est tout
    c'est-y compliqué?
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [Toutes versions] Ventiler mon fichier .csv en plusieurs fichiers .csv
    Par X.e.N.o.N dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/07/2018, 05h11
  2. lecture de fichier CSV
    Par bakaratoun dans le forum MATLAB
    Réponses: 12
    Dernier message: 07/12/2009, 17h00
  3. VB.Net - Lecture de fichiers csv
    Par House MD dans le forum VB.NET
    Réponses: 16
    Dernier message: 19/10/2008, 16h56
  4. [CSV] Lecture de fichier "volumineux"
    Par damaskinos dans le forum Langage
    Réponses: 8
    Dernier message: 12/06/2007, 11h22
  5. Réponses: 12
    Dernier message: 07/12/2005, 18h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo