ajouter un checkbox apresimport de csv

Eléphant du PHP | 65 Messages

02 juil. 2014, 21:25

bonjour a tous,
je vous explique mon souci :
j'ai un fichier csv que je doit parser dans un premier temps et ajouter une colonne par après insérer un checkbox pour recoupe un liste donc voilà comment je procède:
j'importe mon fichier et je crée une colonne ensuite je le parse avec un autre fichier
<?php
$newCsvData = array();
if (($handle = fopen("export.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
        $data[] = 'modifier';
        $newCsvData[] = $data;
    }
    echo $data;
    fclose($handle);
}

$handle = fopen('test.csv', 'w');
foreach ($newCsvData as $line) {
   fputcsv($handle, $line);
}
fclose($handle);

?> 
donc là j'ajoute bien ma colonne et je renomme mon fichier csv.
1 problem il m'insert modifier dans tous mes td de la colonne pas exactement ce que je veux faire
le parser
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    
    echo '<table border="1">';
    
    while (($data = fgetcsv($handle,  4096, ",")) !== FALSE) {
        $num = count($data);

        if ($row == 1) {
            echo '<thead><tr>';
        }else{
            echo '<tr>';
        }
        
        for ($c=0; $c < $num; $c++) {
            //echo $data[$c] . "<br />\n";
            if(empty($data[$c])) {
               $value = "&nbsp;";
            }else{
               $value = $data[$c];
            }
            if ($row == 1) {
                echo '<th>'.$value.'</th>';
            }else{
                echo '<td>'.$value.'</td>';
            }
        }
        
        if ($row == 1) {
            echo '</tr></thead><tbody>';
        }else{
            echo '</tr>';
        }
        $row++;
    }
    
    echo '</tbody></table>';
    fclose($handle);
}
?>
si vous avez des suggestion sur la procédure pour arriver a ce résutat
<table border="1"><thead><tr><th>Name</th><th>Path</th><th>Group</th><th>taille</th><th>Modifier le</th><th>modifier</th></tr></thead><tbody><tr><td>toto.txt</td><td>D:\toto.txt</td><td>1</td><td>36 B</td><td>08/06/2005 09:57:07</td><td>modifier [color=#FF0000]ici mes deux checkbox[/color]</td></tr></tbody></table>
merci de votre aide à tous

Mammouth du PHP | 1339 Messages

02 juil. 2014, 21:38

Donne nous le contenu de test.csv au passage ...
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphant du PHP | 65 Messages

02 juil. 2014, 23:01

salut Elie,
merci de te pencher sur mon problème je peut te filer un extrais car il fait plus de 4000 lignes le but finale étant de sélectionner les doublons pour les faire valide par l'utilisateur final.

Code : Tout sélectionner

"File Name",Path,"Group",Tailles,Datemodif,modifer, autorun.inf,"Chemin de fichier",1,"36 B","08/06/2005 09:57:07",modifer, autorun.inf,"Chemin de fichier",1,"36 B","21/06/2005 15:29:34",modifer, autorun.inf,"Chemin de fichier/doc.txt",1,"36 B","16/06/2005 15:08:31",modifer, autorun.inf,"doc2.txt",1,"36 B","21/06/2005 15:30:11",modifer,
merci de ton aide et de celle des autres

Eléphant du PHP | 65 Messages

05 juil. 2014, 08:09

Bon,
je me répond tous seul je n'y suis pas encore mais bon voila ce que j arrive a faire pour le moment
transformer mon csv en array sois par colonne soit par ligne.
la structure de base du csv est sous cette forme:
name;path;groupe;tailles;date
il faut que je classe mon tableau par groupe avant d’insérer mes 2 checkbox par ligne ou le 1 sera activer grâce a la date.
La je patauge si je fait un array multidimensionnel
ligne = array =>[0] => name [1]=>path[2]=>groupe[3] etc...
ligne suivant idem un si de suite
je ne sais pas comment faire mon tri pour gérer l''affichage.

Mammouth du PHP | 1339 Messages

05 juil. 2014, 09:52

Désolé je t'avais oublié...

Et 5min plus tard :
<table border="1">
 <thead>
  <tr>
   <th>Name</th>
   <th>Path</th>
   <th>Group</th>
   <th>taille</th>
   <th>Modifier le</th>
   <th>modifier</th>
  </tr>
 </thead>
 <tbody>
<?php
$i=0;
if (($handle = fopen("csv.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
		
		if($i > 0) { // Pour éviter la premiere ligne avec le header
		
echo '  <tr>
   <td>'.$data[0].'</td>
   <td>'.$data[1].'</td>
   <td>'.$data[2].'</td>
   <td>'.$data[3].'</td>
   <td>'.$data[4].'</td>
   <td>Modifier <input type="checkbox" value="1" name="modifier['.$i.']" id="modifier_'.$i.'" /> <input type="checkbox" value="1" name="modifier2['.$i.']" id="modifier2_'.$i.'" /></td>
  </tr>'."\n"; 
       
		}
		$i++;
  }
    fclose($handle);
}

?>
 </tbody>
</table>
Dis moi si ca te va !
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphant du PHP | 65 Messages

07 juil. 2014, 09:16

salut Elie,
l'affichage et nickel je le customiserai plus tard ?
mais la question du tri de mes tableaux et plus complexe.
j'ai deux tri a faire
le 1 par le groupe car chaque fichier appartient a un groupe qui regrouper les doublons
le 2 par la date de la dernière modif du fichier je coche par défaut le date le plus recente de mon checkbox

Mammouth du PHP | 1339 Messages

07 juil. 2014, 10:03

  • Explique moi les histories de doubles, les doublons sont sur la totalité de la ligne ou juste sur un champ ?
  • Peut-il y avoir 2 fichiers qui ont la même date de modification ?
Donne moi un liste plus complete avec un exemple de doublon...
Bon sinon tu me fais un message privé et on se fait un TeamViewer