initialiser un tableau d'input

Invité
Invité n'ayant pas de compte PHPfrance

15 mars 2006, 15:01

Bonjour,

Je cherche à faire compléter par l'utilisateur un tableau depuis des feuilles manuscrites.
Je me demande s'il est preferable de faire la saisie directement depuis un script php ou s'il vaut mieux le faire via un tableur dans un premier temps et ensuite récupérer le tableau depuis le fichier ainsi créer.
Avant de me lancer dans ce qui pourrait être inutile, j'aimerai avoir vos avis sur la meilleure démarche à explorer.


Explication :
Nous avons des feuilles manuscrites sur lesquelles sont reportées des mesures (numériques) dans un tableau fixe de 3 colonnes sur 30 lignes donc 90 valeurs qui correspondent à 3 matériaux différents et 3 écartements avec chacune 10 répétitions.
Donc 3*3*10=90 valeurs. Voir exemple à la fin du post.

Doit t'on dans un formulaire initialiser un tableau avec que des input via une boucle.
Comme ceci, cela parait assez long à charger et surtout, je n'ai toujours pas de tableau proprement dit.
<?php
for ($a=0;$a< 30;$a++){
echo "<TR><TD>".$a."</TD>";
for ($i=0;$i< 3;$i++){
print "<TD><INPUT type =\"text\" name =\" ".$i."\" value=\"".$i."\"></TD>";
}
echo "</TR>";
}

?>
Ou alors plutot la technique tableur.


E1 E3 E3
M1 v1 v1 v1
....
M1 v10 v10 v10
M2 v1 v1 v1
...
M2 v10 v10 v10
M3 v1 v1 v1
...
M3 v10 v10 v10

Eléphant du PHP | 413 Messages

15 mars 2006, 16:29

salut,
la technique du tableur me parait mieux. (tu comptes utiliser excel ou un truc du genre ?)
ensuite, la personne fait un export en fichier csv (format où les champs sont séparés par des points-virgules) et en php, tu peux traiter ces données (apres un file upload par exemple).

l'interet du tableur, c'est que c'est plus facile à relire.
--
Goeb

Eléphanteau du PHP | 34 Messages

15 mars 2006, 17:40

tu comptes utiliser excel ou un truc du genre ?)
Oui c'est ma deuxieme option mais qui durant l'aprés midi est devenue ma première

Donc :
1-Saisie sous tableur (Excel ou calc)
2-Transformation en csv
3- upload sur mon serveur
4- Ensuite qlq chose du genre fgetcsv ou autre
5- Et à paritr de là, je pense pouvoir travailler mon tableau pour l'import dans la base

Voila mon projet du moment qui va surement m'occuper un certain temps car je doit découper mon fichier pour l'importer dans plusieurs tables.
Merci pour la réponse

Eléphanteau du PHP | 34 Messages

16 mars 2006, 16:18

Re bonjour,
J'ai un blocage avec mon fgetcsv,
J'arrive à afficher le contenu d'un fichier csv par :
if($myfile=fopen($nom_fichier,"r"))
{
	print("<TABLE>\n");
	$nb_donnees=0;
	while (!feof($myfile))
	{
		print ("<TR>\n");
		$myfield=fgetcsv($myfile,1024);
		$nb_donnees = $nb_donnees + count($myfield);
		for ($n=0;$n<count($myfield);$n++)
		{
			print("\t<TD>");
			print($myfield[$n]);
			print("</TD>\n");
		}
		print("<TR>\n");
	}
		//print $myfield;

	print("</TABLE>\n");
}
echo "nombre de donnees : ".$nb_donnees."<br/>";

fclose($myfile);
ce qui fonctionne trés bien je compte le nombre de champs, ok,
Mais je souhaiterai profiter de la lecture du fichier pour distribuer les champs dans un tableau pour pouvoir ensuite manipuler les données avant de faire des insert dans mes tables.
Je ne connais pas de fonction qui fasse cela directement ( je comptai sur fgetcsv ) ?
Pour l'instant tous mes essais sont sans résultats.

J'ai quand même essayé différement avec qlq chose comme ceci :
$handle = fopen ($filename, "r");
$contents = fread ($handle, filesize ($filename));
$tab = explode(",", $contents);
echo "nb tab : ".count($tab)."<br/>";
for ($i=0;$i<count($tab);$i++){
echo "tab".$i." : ".$tab[$i]."<br/>";
}
fclose ($handle);

Mais bizzarement, certains séparateurs de mon fichier csv ne sont pas interprétés et le nombre de champs trouvés n'est pas correct.

Si quelqu'un à une nouvelle piste à explorer merci d'avance

Eléphanteau du PHP | 34 Messages

16 mars 2006, 17:10

:axe: ](*,) #-o
Bon je me répond tous seul et fin
Il me suffisait seulement de rajouter :
$tab[] = $myfield[$n];
et le tour est joué.
Merci
ci dessous le code au cas ou cela serve un jour :
if($myfile=fopen($nom_fichier,"r"))
{
	print("<TABLE>\n");
	$nb_donnees=0;
	while (!feof($myfile))
	{
		print ("<TR>\n");
		$myfield=fgetcsv($myfile,1024);
		$nb_donnees = $nb_donnees + count($myfield);
		for ($n=0;$n<count($myfield);$n++)
		{
			$tab[] = $myfield[$n];
			print("\t<TD>");
			print($myfield[$n]);
			print("</TD>\n");
		}
		print("<TR>\n");
	}
		//print $myfield;

	print("</TABLE>\n");
}
echo "nombre de donnees : ".$nb_donnees."<br/>";
echo "nombre element du tableau : ".count($tab);
fclose($myfile);