Page 1 sur 3
Récuperation de variable
Posté : 10 mai 2010, 15:47
par Pepyte
Bonjour,
Je suis en train de développer un petit programme tout simple, seulement je n'arrive pas a faire un passage de variable.
J'ai un formulaire html ou j'upload un fichier csv
<form action="http://localhost/Test-codes/test.php" method="POST" ENCTYPE="multipart/form-data">
<h4><u>Traitement des Fabricants</u></h4>
Fichier : <INPUT type=file name="fic_man">
<INPUT type=submit value="Envoyer">
</form>
Je veux le récuperer ici dans 'test.php'
$chemin = $_FILES['fic_man']['tmp_name'];
echo $chemin;
return $chemin;
shell_exec('C:\wamp\bin\php\php5.3.0\php.exe C:\wamp\www\Test-codes\traitement_manufacturer.php');
Et je veux envoyer ce chemin temporaire dans ce fichier 'traitement.php'
$fic = include 'http://localhost/Test-codes/test.php';
$flect = fopen($fic,"r");
Mais le fichier ne doit pas s'ouvrir...
Je réfléchis depuis un moment déjà mais j'ai du mal.
A l'aide svp
Re: Récuperation de variable
Posté : 10 mai 2010, 15:53
par stealth35
oula deja dans ton test.php pourquoi :
tu fais "return $chemin;" quelle est le but ?
fair un shell_exec pour exécuter un php ensuite pareil, pas trop d'intérêt
ensuite dans ton traitement.php:
le include pareil dans quelle but, en plus ton adresse ouvre un page distante, tu peux pas faire un fopen dessus
bref du grand n'importe quoi
je te conseil d'allé faire un tour par
ici, tout est expliquer pour faire de l'upload
Re: Récuperation de variable
Posté : 10 mai 2010, 16:14
par pepyte
Pour le return et le include j'ai trouvé ça sur ce site
http://php.net/manual/en/function.include.php, pour la commande shell j'ai fait un test, mon code met une dizaine de minutes a exécuter mon code via le navigateur et 10 sec a peine en commande...
Donc j'aimerai savoir comment récupérer dans 'traitement.php' mon URL que je récupère dans 'test.php' c'est plus compréhensible ou toujours nimp?
Re: Récuperation de variable
Posté : 10 mai 2010, 16:27
par stealth35
qu'est ce que tu veux faire exactement si j'ai bien compris
tu upload un fichier -> tu le traites -> tu enregistres le traitement dans un autre ficher ?
Re: Récuperation de variable
Posté : 10 mai 2010, 16:29
par pepyte
Je veux uploader le fichier, le traiter et insérer des données dans une db sachant que le fichier est un fichier csv de 200 000 lignes environ 30 Mo a peu près.
Re: Récuperation de variable
Posté : 10 mai 2010, 16:35
par stealth35
oki 2 besoin juste de 2 fichier
ton formulaire (tu le garde pareil, sauf que t'envoie direct dans traitement)
ton traitement :
tu ouvre ton fichier grâce a la variable $_FILES['fic_man']['tmp_name'] et fopen
grace a
fgetcsv, tu va pouvoir récupère et traiter chaque ligne, a chaque tour de boucle tu faire un INSERT (on verra apres pour optimiser le tout)
ta un gros traitement a faire ou tu veux juste mettre ton cvs dans ta base (parce que ca en 1 seule commande c'est fait) ?
Re: Récuperation de variable
Posté : 10 mai 2010, 16:43
par pepyte
Mon traitement est assez lourd. Il faut que je vérifie dans la base si certaines valeurs y sont, si ce n'est pas le cas je les mets dans un tableau temporaire, et j'ai d'autres petit test pour insert ou update...mais j'ai fait les deux test avec le navigateur et en ligne commande il y a 10 minutes d'écart. C'est pour ça que je veux absolument l'exécuter via la commande shell.
Re: Récuperation de variable
Posté : 10 mai 2010, 16:44
par pepyte
A noter que mon programme de traitement fonctionne niquel. Il me manque juste a récupérer dynamiquement le chemin de mon fichier.
Re: Récuperation de variable
Posté : 10 mai 2010, 16:52
par stealth35
A noter que mon programme de traitement fonctionne niquel. Il me manque juste a récupérer dynamiquement le chemin de mon fichier.
avec
file_get_contents
Re: Récuperation de variable
Posté : 10 mai 2010, 17:32
par pepyte
Je ne vois pas comment le faire fonctionner dans mon cas. Mais dis moi, est-il possible de passer une variable en plus dans shell_exec et de la récupérer après dans le script que j'appelle?
Re: Récuperation de variable
Posté : 10 mai 2010, 17:34
par stealth35
Je ne vois pas comment le faire fonctionner dans mon cas. Mais dis moi, est-il possible de passer une variable en plus dans shell_exec et de la récupérer après dans le script que j'appelle?
oui via les argument, mais oublie shell_exec c'est pas comme ca qu'on procède
montre ton fichier de traitement
Re: Récuperation de variable
Posté : 10 mai 2010, 17:57
par pepyte
<?php
//$chemin = $_FILES['fic_man']['tmp_name'];
// ouverture de base de données
$link = mysqli_connect("", "","","");
// requete pour connaitre l'identifiant du dernier manufacturer
$retour2 = mysqli_query($link ,"SELECT MAX(manufacturer_id) FROM jos_vm_manufacturer;")or die (mysqli_error($link));
$id_man_max = mysqli_fetch_array($retour2);
// ouverture du fichier à lire
$flect = fopen("D:\\Brian\\GLobal_EET\\test.csv","r");
//$fic = include 'http://localhost/Test-codes/test.php';
//$flect = fopen($chemin,"r");
fgetcsv($flect, 1500, ";");
while ($tab = fgetcsv ($flect, 1500, ";"))
{
if ($tab[0] != "")
{
if (!(in_array($tab[0],$tab_verif)))
{
$tab_verif[] = $tab[0];
}
}
}
for ($i=0;$i<count($tab_verif);$i++)
{
// requete de vérification si le manufacturer existe deja
$req = "SELECT mf_name FROM jos_vm_manufacturer WHERE mf_name = '".$tab_verif[$i]."';";
$retour = mysqli_query($link ,$req);
// si il n'existe pas alors on le créé
if (mysqli_num_rows($retour) < 1)
{
$id_man_max[0]++;
// requete d'insertion des données
$chaine = "INSERT into `jos_vm_manufacturer` (`manufacturer_id`, `mf_name`, `mf_email`, `mf_desc`, `mf_category_id`) VALUES (" .$id_man_max[0]. ", '" .strtoupper($tab_verif[$i]). "','','',5);";
$resultat = mysqli_query($link, $chaine);
//echo $tab_verif[$i];
}
}
// fermeture des fichier ouverts en début de programme
fclose($flect);
?>
Re: Récuperation de variable
Posté : 10 mai 2010, 18:03
par stealth35
c'etait bien
tu décommentes //$chemin = $_FILES['fic_man']['tmp_name'];
et tu fais
$flect = fopen($chemin,"r");

Re: Récuperation de variable
Posté : 10 mai 2010, 18:08
par pepyte
Lol désolé je ne t'ai pas envoyé le bon truk. En fait quand je l'execute avec l'URL du fichier en dur ça me l'execute rapidement. En revanche lorsque je fait via
"$chemin = $_FILES['fic_man']['tmp_name'];"
"$flect = fopen($chemin,"r");"
ça me fait tout planter, le serveur ram et navigateur encore pire...
De quoi ça vien?
Re: Récuperation de variable
Posté : 10 mai 2010, 18:15
par stealth35
Lol désolé je ne t'ai pas envoyé le bon truk. En fait quand je l'execute avec l'URL du fichier en dur ça me l'execute rapidement. En revanche lorsque je fait via
"$chemin = $_FILES['fic_man']['tmp_name'];"
"$flect = fopen($chemin,"r");"
ça me fait tout planter, le serveur ram et navigateur encore pire...
De quoi ça vien?
ca t'affiche quoi comme erreur ?
mais ducoup ton traiement y'a pas grand chose, tu peu le faire en 1 seule requête SQL
ta premier requête sert a rien, suffis de mettre un auto incrmente (ce qui est le cas la plus part du temps)
ensuite tu parcours ton CVS, pour creer une liste avec qu'un seul champs
et tu le reparcoure une 2eme fois pour insérer les données, tu fais ta requete pour savoir si l'entrer existe et si elle exite pas tu la creer, mais ca c'est une option de INSERT INTO