Lecture de fichier séquentiel x2

Petit nouveau ! | 2 Messages

05 sept. 2012, 16:01

Salut à tous,

merci par avance pour votre aide !!
je bloque sur un problème dont je suis sur que la réponse est simple mais....

Dans ma page index.php, je charge un fichier via un formulaire
je lis les informations sur la page suivante (lecture.php)
et en fonction d'une de ces informations je dois relire séquentiellement ce même fichier avec la méthode adaptée.
J'aimerai ne pas a avoir uploader le même fichier une deuxième fois sur la page lecture.php (via un formulaire) mais passer directement le fichier en paramètre mais je n'y arrive pas :cry:
(En gros, je souhaiterais avoir a uploader le fichier, ensuite affichage des informations du fichier, puis ensuite générer un pdf en cliquant sur un bouton "générer le pdf" sans avoir a uploader le meme fichier de nouveau)

index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Gestion des editions</title>
<link href="config/format.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="700" align="center" border="0">
	<tr>
		<td class="FondBleu">
			<?php include('top.php');?>	
		</td>
	</tr>
    <tr><td align="center">Version 1.00 - Mise à jour le 01 Aout 2012</td></tr>
	<tr>
		<td class="FondBleu" align="center">
			<form enctype="multipart/form-data" action="lecture.php" method="post">
            <input type="hidden" name="MAX_FILE_SIZE" value="50000000" />
            Fichier à intégrer <br>
            <input type="file" name="monfichier" /><br><br>
            <input type="submit" value="Envoyer" />
        	</form>
		</td>
	</tr>
</table>

</body>
</html>
lecture.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Gestion des editions</title>
<link href="config/format.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php
// ne pas tenir compte des erreurs Notice
error_reporting(E_ALL ^ E_NOTICE);


//RECUPERATION DU FICHIER et copie de travail

$nomoriginal= $_FILES["monfichier"]["name"];
$nomfichier = $_FILES["monfichier"]["tmp_name"]; //copie


// lecture de la dernière ligne du fichier
$tab = file($nomfichier);
$last_ligne = $tab[count($tab)-1];
$montant_total = substr($last_ligne, 10, 14);
$nb_total = substr($last_ligne, 24, 6);
$nb_lignes_fichier = substr($last_ligne, 4, 6);
$code_type = substr($last_ligne, 0, 2);
 if ($code_type=="AC") 
 {$methode = "generer_pdf_AC.php";}
 elseif ($code_type == "MC")
 {$methode = "generer_pdf_MC.php";}
 else  
 {$methode = "generer_pdfC.php";}

?>
<table width="700" align="center" border="0">
	<tr>
		<td class="FondBleu">
			<?php include('top.php');?>	
		</td>
	</tr>
    <tr><td align="center">Informations</td></tr>
	<tr>
		<td class="FondBleu">
			<?php 
			echo 'type courrier : '.$code_type.'<br>';
			echo 'nom fichier : '.$nomoriginal.'<br>';
			echo 'nom fichier temporaire : '.$nomfichier.'<br>';
			echo 'montant total : '.$montant_total.'<br>';
			echo 'nombre total : '.$nb_total.'<br>';
			echo 'nombre total lignes : '.$nb_lignes_fichier.'<br>';
			echo 'Methode : '.$methode.'<br>';
			?>
			
		</td>
       </tr> 
       <tr>
        <td class="FondBleu" align="center">
			<form enctype="multipart/form-data" action="<?php echo $methode; ?>" method="post">
               <input type="hidden" name="MAX_FILE_SIZE" value="50000000" />
               <input type="file" name="monfichier" value="<?php echo $nomoriginal ?>"  /><br><br>
              <input type="submit" value="Générer le PDF" />
        	</form>
            
		</td>
	</tr>
</table>

</body>
</html>
Si quelqu'un avait une solution, ce serait vraiment parfait !!!
Merci mille fois par avance

Théo

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 sept. 2012, 20:28

salut,


stock le fichier dans un répertoire temporaire de ton site.
garde le nom du fichier en session

utilise le sur la seconde page.

sinon, suivant le poids du fichier tu peux le stocker en session.



@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 2 Messages

06 sept. 2012, 12:28

merci moogli pour ta réponse,
effectivement pas idiot de mettre le chemin en variable session

mais j'arrive pas a copier le fichier sous un sous répertoire
j’utilise ce bout de code
//RECUPERATION DU FICHIER et copie de travail
$uploads_dir = '/uploads/';
$name= $_FILES["monfichier"]["name"];
$tmp_name = $_FILES["monfichier"]["tmp_name"]; //copie
 move_uploaded_file($tmp_name, $uploads_dir.$name);
j'ai ce message
Warning: move_uploaded_file(/uploads/Ap_coll_term_163309.txt) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\Program Files (x86)\EasyPHP-5.3.9\www\EDITIQUE\lecture.php on line 22
j'ai pourtant bien créer le répertoire www\EDITIQUE\uploads\

c'est ou que je merdoua ?

Mammouth du PHP | 1511 Messages

11 sept. 2012, 08:54

Attention aux chemins relatifs/absolus.
Mets './uploads/' au lieu de '/uploads/' .