[RESOLU] Importer le contenu d'un CSV dans formulaire

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] Importer le contenu d'un CSV dans formulaire

Re: Importer le contenu d'un CSV dans formulaire

par Pef » 28 janv. 2013, 11:01

Bon,

Je suis parvenu à faire une partie de ce que je souhaitais faire :

Le code php :
if (isset($_FILES['file'])) { 
$file = $_FILES['file']['tmp_name']; 
$row = 1;
$id = $row-29;
if (($handle = fopen("$file", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
        $num = count($data);
		if ($row > 29)
		{
			  ?><tr align="center" valign="middle" bgcolor="#DDDDDD"> 
		  <td width="20"><? echo $id; ?></td>
		  <td width="380" colspan="3"><input name="codebarre<? echo $id; ?>" type="text" id="codebarre<? echo $id; ?>" size="40" value="<? echo $data[0]; ?>"/></td>
		  <td width="200"><input name="email<? echo $id; ?>" type="text" id="email<? echo $id; ?>" size="30" value="<? echo $data[1]; ?>"/></td>
		  <td width="100"><input name="reference<? echo $id; ?>" type="text" id="reference<? echo $id; ?>" size="30" value="<? echo $data[2]; ?>"/></td>
		  </tr>
    <?
		}
	        $row++;
			$id++;
        }
    }
fclose($handle);
}
Le formulaire de récupération du fichier
 
      <td width="600" colspan="2"><form action="ajout_suivi_commande_fichier.php" method="post" enctype="multipart/form-data" name="Ajouter fichier" id="Ajouter fichier">
            <font size="1" face="Verdana, Arial, Helvetica, sans-serif"> Importer le fichier : 
             <input type="hidden" name="MAX_FILE_SIZE" id="MAX_FILE_SIZE" value="100000" />
             <input class = "texte" type="file" id="file" name="file" value="Parcourir"/>
			<input type="submit" name="Importer" value="Importer"/></font></form></td>
    </tr>
Cela fonctionne.

Il ne me reste plus qu'à récupérer une des valeurs spécifique du CSV pour pré-remplir un nouveau champ et ça sera nickel.

Je considère le problème comme résolu.

Re: Importer le contenu d'un CSV dans formulaire

par Pef » 28 janv. 2013, 10:17

J'ai regardé ce que je pouvais faire avec fgetcsv.

J'ai pondu ça :
if (isset($_FILES['file'])) { 
$file = $_FILES['file']['tmp_name']; 
$handle = fopen($file,'r'); 
$row = 1;
$id = $row-27;
if (($handle = fopen("$file", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
        $num = count($data);
		if ($row > 27)
		{
			  ?><tr align="center" valign="middle" bgcolor="#DDDDDD"> 
		  <td width="20"><? echo $id; ?></td>
		  <td width="380" colspan="3"><input name="codebarre<? echo $id; ?>" type="text" id="codebarre<? echo $id; ?>" size="40" value="<? echo $data[$0]; ?>"/></td>
		  <td width="200"><input name="email<? echo $id; ?>" type="text" id="email<? echo $id; ?>" size="30" value="<? echo $data[$1]; ?>"/></td>
		  <td width="100"><input name="reference<? echo $id; ?>" type="text" id="reference<? echo $id; ?>" size="30" value="<? echo $data[$2]; ?>"/></td>
		  </tr>
    <?
		}
	        $row++;
			$id++;
        }
    }
fclose($handle);
Pour faire simple :

Cela doit remplir les champs "codebarre", "email", et "reference" à partir de la ligne n°28 du fichier CSV, les 27 premières lignes n'étant pas utilisées dans l'import.

Pour cela, je dois donc récupérer le fichier CSV à importer.
Dans la page précédente, j'ai :
    <tr> 
      <td width="600" colspan="2"><form action="contenu/ajout_suivi_commande_fichier.php" method="post" enctype="multipart/form-data" name="Ajouter fichier" id="Ajouter fichier">
            <font size="1" face="Verdana, Arial, Helvetica, sans-serif"> Importer le fichier : 
             <input type="hidden" name="MAX_FILE_SIZE" id="MAX_FILE_SIZE" value="100000" />
             <input class = "texte" type="file" id="file" name="file" value="Parcourir"/>
			<input type="submit" name="Importer" value="Importer"/></font></form></td>
    </tr>
Je pense que je suis sur la bonne voie, je fais un test.

Re: Importer le contenu d'un CSV dans formulaire

par AB » 26 janv. 2013, 17:18

Et qu'est-ce qu'il te manque pour faire ça. Au départ pour lire dans un fichier csv on utilise souvent fgetcsv

Sinon sur le principe tu n'es peut-être pas obligé de passer par un formulaire ?

Importer le contenu d'un CSV dans formulaire

par Pef » 26 janv. 2013, 15:53

Bonjour,

Je pense être dans la bonne section pour ma question.

Je dispose aujourd'hui d'une base de donnée que j'incrémente à partir d''un formulaire, et je voudrais faire "évoluer" la méthode de saisie.

Aujourd'hui :
- J'ai un tableau quotidien de plusieurs lignes, avec sur chaque ligne 3 code barre. Chaque ligne représente un enregistremment dans la BDD.
- Je scanne les codes dans mon formulaire
- J'envoie les données.

Mais les données ne sont pas bêtement envoyées dans la BDD. Il y a un traitement PHP.
- Un email est envoyé au destinataire à chaque insertion.
- Les champs sont retravaillés (suppression de caractères, etc.)

Je ne peux donc pas me contenter d'insérer le contenu du CSV dans la table

Je souhaite ajourd'hui avoir la possibilité d'importer les données plutôt que de scanner des codes barres.

Il faudrait donc que je puisse "importer un fichier CSV", et que les données contenues dans ce CSV remplissent tous les champs de mon formulaire.
Je précise que, bien évidemment, le nombre de lignes/champs de mon formulaire sera strictement identique à celui du CSV.

Existe-t-il une possibilité de faire cela ? Je cherche depuis des jours, sans jamais rien trouver.

Merci de votre aide.

Pef.