Page 1 sur 1
passage de parametres via formulaire en mem tps qu'un upload
Posté : 06 sept. 2012, 23:38
par ybezier
Bonjour,
DAns un script PHP, j'ai un formulaire qui me permet de :
- Sélectionner un fichier à télécharger
- 4 zones de saisie
Mon problème est que mon uptload fonctionne très bien mais impossible de récupérer dans mon script "getfile.php" les 4 variables passées par la méthode POST
Dans mon script getfile.php,j'utilise les instruction suivantes pour récupérer mes 4 paramètres :
<?php
$identifiant = $_GET['identifiant'];
$document_typ = $_GET['document_typ'];
$document_com = $_GET['document_com'];
$carte=$_GET['carte'];
?>
Quelqu'un a-t-il une idée ?
Ci-dessous l'instruction de mon formulaire.
Code : Tout sélectionner
<form action="getfile.php?identifiant=<?php echo $identifiant; ?>&document_typ=200&document_com=<?php echo $commentaire_devis; ?>&carte=<?php echo $cartographie_devis; ?>" enctype="multipart/form-data" method="post">
Merci d'avance.
Yvo
Re: passage de parametres via formulaire en mem tps qu'un up
Posté : 07 sept. 2012, 08:19
par Mazarini
Bonjour,
Est ce que les variables apparaissent dans la barre d'adresse ?
Au pire, tu peux les mettre dans un input de type hidden et les récupérer dans $_POST.
Re: passage de parametres via formulaire en mem tps qu'un up
Posté : 07 sept. 2012, 11:05
par ybezier
Bonjour,
Merci pour cette réponse.
Non, je ne vois rien dans la barre d'adresse.
Sans vouloir abuser, je te file mes 2 scripts, j'avoue que j'en perd mon latin...
Programme avec le formulaire (devis.php)
Code : Tout sélectionner
<?php
$identifiant = $_GET['username'];
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>
BALI EMOTION - Voyage à Bali - Séjour à Bali - Agence de voyage Bali - Ile des dieux - envoi devis
</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="robots" content="follow,index">
<meta http-equiv="Content-Language" content="fr">
<meta name="Description" content="Baliemotion - Organisation de séjour personnalisé à Bali, lombok, java, sulawesi, nusa lembongan">
<meta name="Keywords" content="voyage a bali, sejour a bali, sejour privatif a bali, sejour privatif a lombok, sejour privatif a bali, lombok, sejour privatif a bali , lombok, java, sulawesi, voyage de noce, voyage a bali en circuit individuel a bali, circuit privatif a bali ">
<meta name="Author" content="BaliEmotion - Yvonnick BEZIER">
<meta name="google-site-verification" content="iVfrGyHv08ITjzOTilxr4evDv3AvnhccT0HhQoui-gY" />
<script language="JavaScript1.2" src="html/pages/outils/saisie_date_calendrier.js"></script>
<?php
$langue="french";
$repertoire=getcwd();
chdir('/homepages/32/d335722865/htdocs/baliemotion');
$wpath="html/pages/outils/";
$wtemplate="template.css";
$path_template="template/bali_emotion/css/";
$bymenu=1;
$height_grande_image="190";
if (strlen($repertoire) > 43) { $wtemplate="template_jumi.css";}
?>
<link rel="stylesheet" href="http://www.baliemotion.com/templates/system/css/system.css" type="text/css" />
<link rel="stylesheet" href="http://www.baliemotion.com/templates/system/css/general.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="http://www.baliemotion.com/templates/bali_emotion/css/<?php echo $wtemplate ; ?>" media="screen" />
<?php $indice_image=-1; ?>
<body>
<?php
// Debut de l'affichage de l'entete de la page du
//
// connexion à la base de données
//
include ("/homepages/32/d335722865/htdocs/baliemotion/html/pages/equate/connexion.php");
//
?>
<table>
<tr>
<td>
<table>
<tr>
<td colspan="4">
<h1>Bali Emotion - Envoi de devis au client</h1>
</td>
</tr>
<tr><td><HR WIDTH="762" size="8" color="#4667af"></td></tr>
</table>
</td>
</tr>
</table>
<form action="getfile.php?identifiant=<?php echo $identifiant; ?>&document_typ=200&document_com=<?php echo $commentaire_devis; ?>&carte=<?php echo $cartographie_devis; ?>" enctype="multipart/form-data" method="post">
<?php
if (isset($_POST['envoi']))
{
//
// verification du formulaire
//
// Debut de la recupration des variables à partir de $_POST
$commentaire_devis = isset($_POST['commentaire_devis']) ? $_POST['commentaire_devis'] : '';
$cartographie_devis = isset($_POST['cartographie_devis']) ? $_POST['cartographie_devis'] : '';
//
// Fin de la recupration des variables à partir de $_POST
//
$nb_erreur ='0'; ?>
<hr style="color:#116F0C" /></hr>
<?php
//
}
if(isset($_POST['reset']))
{
$_POST='';
}
if (!isset($_POST['envoi']) or $nb_erreur=='1' ) //and (isset($_POST['reset']) or !empty($_POST)))
{
?>
<table width="500"><tr><td> </td></tr></table>
<hr style="color:#116F0C" /></hr>
<?php
$req="SELECT id, contact, mail FROM bal_client WHERE id ='$identifiant' order by id";
$ret=mysql_query ($req) or die (mysql_error ());
while ($row = mysql_fetch_row ($ret) )
{
$identifiant= $row[0];
$contact= $row[1];
$mail =$row[2];
}
?>
<hr style="color:#116F0C" /></hr>
<?php
//
// Fin Affichage de l'entete de la page du formulaire
//
// Début Controle de $_POST
//
?>
<fieldset>
<table width="800">
<tr>
<td width="205" valign="top">
Sélectionner le devis du client :
</td>
<td>
<input type="file" name="uploadFile">
<input type="hidden" name="MAX_FILE_SIZE" value="85000" />
</td>
</tr>
</table>
<table>
<tr>
<td width="205" valign="top">Commentaire sur ce devis</td>
<td colspan="2">
<textarea name="commentaire_devis" cols="70" rows="1"><?php $commentaire_devis;?></textarea>
</td>
</tr>
</table>
<table>
<tr>
<td width="205" valign="top">Cartographie Google</td>
<td colspan="2">
<textarea name="cartographie_devis" cols="70" rows="4"><?php $cartographie_devis;?></textarea>
</td>
</tr>
</table>
<strong>Pour executer ce formulaire<input type="submit" class="verif" name="envoi" value="Envoyer" />
<input type="submit" class="verif" name="reset" value="Reinitialiser" /> Pour annuler ce mail et recommencer une nouvelle saisie</strong>
</td></tr>
</table>
</fieldset>
</form>
<table>
<?php } ?>
<tr><td> </td></tr>
</table>
</body>
</html>
Programme appelé (getfile.php)
Code : Tout sélectionner
<?php
$identifiant = $_GET['identifiant'];
$document_typ = $_GET['document_typ'];
$document_com = $_GET['document_com'];
$carte=$_GET['carte'];
?>
<?php
echo "identifiant : ".$identifiant;
echo "document_typ : ".$document_typ;
echo "document_com : ".$document_com;
echo "carte : ".$carte ;
?>
<html>
<head>
<title>Transfert du fichier</title>
</head>
<body>
<?php
//
// chargement données client
//
include ("/homepages/32/d335722865/htdocs/baliemotion/html/pages/equate/connexion.php");
$req = "SELECT * FROM bal_client WHERE contact = '$identifiant' order by id";;
$ret=mysql_query ($req) or die (mysql_error ());
$i=0;
while ($row = mysql_fetch_row ($ret) )
{
// chargement des infos dans l'equate
include ("/homepages/32/d335722865/htdocs/baliemotion/html/pages/equate/equ_bal_client.php");
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
//
// Déclaration des identifiants FTP
$ftp_serveur='ftp.baliemotion.com';
$ftp_user_name='u59441134';
$ftp_user_pass='tator_070512';
// Initialisation de la connexion
$conn_id = ftp_connect($ftp_serveur);
// Identification
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// Transfert du fichier de mon disque dur vers le répertoire où est lancé mon script.'/files/'
if ( move_uploaded_file($_FILES['uploadFile'] ['tmp_name'],
"files/{$_FILES['uploadFile'] ['name']}") )
//"/baliemotion/crm/upload_tmp/{$_FILES['uploadFile'] ['name']}") )
{
echo "Le fichier vient est transféré avec succès";
}
else
{
echo "Un problème est apparu pendant le transfert";
}
// stockage du nom du fichier uploader
$fichier=$_FILES['uploadFile'] ['name'];
//echo "fichier : ".$fichier;
// open the folder that have the file
ftp_chdir($conn_id, '/baliemotion/crm/fonctions/devis/files/');
// rename the file - Déplacement du fichier upload vers le répertoire /baliemotion/
//ftp_rename($conn_id, $fichier, '/baliemotion/'.$fichier);
ftp_rename($conn_id, $fichier, '/baliemotion/html/pages/espace_client/durand444/'.$fichier);
//
// -------------------------------------------------------
// -------------------------------------------------------
//
// Maj table bal_client_document
//
$req = "INSERT INTO bal_client_document ";
$req = $req. "( contact, document_typ, document_cod, document_dat, document_com, carte ) ";
$req = $req. " VALUES('$identifiant', '$document_typ','$fichier','".date("Y-m-d")."','$document_com','$carte')";
mysql_query($req);
$last_id=mysql_insert_id();
//
// -------------------------------------------------------
//
?>
<script type="text/javascript">
<!--
//window.close();
-->
</script>
</body>
</html>
Merci pour ta précieuse aide.
Yvo
Re: passage de parametres via formulaire en mem tps qu'un up
Posté : 07 sept. 2012, 11:15
par Mazarini
Alors ajoutes <input type="hidden" name="XXX" value="YYY"> dans le formulaire pour chaque variable à transmettre et récupère les valeurs avec $_POST.
Possible que les variables get ne soit pas compatible avec "multipart/form-data"
Re: passage de parametres via formulaire en mem tps qu'un up
Posté : 07 sept. 2012, 11:21
par ybezier
En fait, j'ai l'impression que quand je valide mon formulaire, le script ne passe pas dans la condition :
if (isset($_POST['envoi']))
Comme tu le dis, Possible que les variables get ne soit pas compatible avec "multipart/form-data"
Pour vérifier, j'ai vire dans ma balise <form.... la chaine : "enctype="multipart/form-data""
et comme par magie, je récupére bien mes variable. mais l'upload ne se fait évidement plus !!!
je boucle !!
Re: passage de parametres via formulaire en mem tps qu'un up
Posté : 07 sept. 2012, 13:16
par Mazarini
Je ne vois pas de test sur $_POST['envoi'] dans le script getfile.php qui est appeler par le formulaire.
Dans le fichier devis.php, il y a bien un test sur $_POST['envoi'], mais il n'a aucun rapport avec le formulaire qui le précède. Je pense que tu as zappé que PHP génère un fichier html en réponse à une demande du client ; tout devis.php est traité et ensuite la page est affiché. Le code après la fermeture du formulaire </form> n'attend pas la réponse de l'utilisateur mais s'exécute dans la foulée.
Pour la solution : à tu essayé les input hidden que je t'ai suggéré.
Re: passage de parametres via formulaire en mem tps qu'un up
Posté : 07 sept. 2012, 13:28
par ybezier
Ok... en tout cas merci d'avance pour ces précieuses informations.
Donc,
Dans mon script "getfile.php", je fais afficher :
<?php
echo "$post : ".$_POST;
?>
A l'éxécution, rien ne s'affiche.
J'ai essayé aussi les input "hidden" mais rien non plus.
En fait, dans la barre d'adresse, j'ai bien les variable mais les 2 dernières (celles pilotées par le formulaires) n'ont pas leur valeur
"ma barre d'adresse quand getfile est exécuté ...getfile.php?identifiant=durand444&document_typ=200&document_com=&carte=
Merci d'avance
Re: passage de parametres via formulaire en mem tps qu'un up
Posté : 07 sept. 2012, 13:55
par xTG
$_POST est un array, donc var_dump($_POST)

Re: passage de parametres via formulaire en mem tps qu'un up
Posté : 07 sept. 2012, 14:53
par ybezier
Bon, heureusement que j'ai posté ce pb à la rubrique PHP_Debutant !!!!
Je récupère toutes les données comme je veux maintenant.
Un peu débutant sur ce coup là...
Merci beaucoup
Yvo