Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3013 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  envoi de données de form vers 2 fichiers php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

envoi de données de form vers 2 fichiers php

n°2040680
mico35
Posté le 08-12-2010 à 10:12:38  profilanswer
 

Bonjour,
 
j'ai un petit problème pour récupérer des données de formulaire.
Je vous explique mon problème:
 
J'ai un formulaire (disons form.php) Qui envoi les données à une page cible qui les traites (disons cible.php)
Dans cette page cible, je souhaite y mettre 2 type de traitement : un calcule total, et une image faite sur mesure en fonction des données du formulaire.
Le problème est que pour créer une image gd en php, je doit créer une troisième page pour la création de cet image (photo.php).
Je n'arrive pas à envoyer les données du formulaire à cette troisième page.
mon traitement de donnés fonctionne si j'envoie les données à une page ou à l'autre page, mais comment faire pour envoyer les données à la page cible.php, et à photo.php.

mood
Publicité
Posté le 08-12-2010 à 10:12:38  profilanswer
 

n°2040692
olivthill
Posté le 08-12-2010 à 10:46:08  profilanswer
 

Précisons la notion de "page" :
Il existe des pages HTML (côté client), mais il n'existe pas de page PHP (côté serveur), il existe des programmes PHP.
 
Quand un submit ou un appel Ajax est déclenché par l'utilisateur, cela envoie des données, en mode post ou get, à un programme PHP.
Le progamme PHP va lire les variables avec le classique if (isset($_POST[...])... ou if (isset($_GET[...])...
Puis le programme PHP va générer une page HTML, ou un fichier pour un flux Ajax, ou un fichier PDF, ou un fichier image.
 

Citation :

comment faire pour envoyer les données à la page cible.php,


cible.php n'est pas une page. C'est un programme. Ce programme récupère les données et crée ce qu'il veut. Certaines données peuvent sans doute être testées pour savoir s'il faut que le programme créé telle ou telle chose.

n°2040694
mico35
Posté le 08-12-2010 à 10:59:14  profilanswer
 

ok mais comment le programme photo.php récupère les données du formulaire qui à été envoyé à cible.php?
 
 

n°2040696
olivthill
Posté le 08-12-2010 à 11:07:48  profilanswer
 

Sur le serveur, il n'y a qu'un seul programme qui tourne, soit photo.php, soit cible.php, soit un grand fichier qui contient les deux. C'est cette dernière solution que je recommande, et qui vous dérange peut-être, parce que vous n'avez peut-être pas l'habitude d'avoir un programme sur le serveur qui fasse plusieurs choses, ou bien vous craigneriez que cela fasse un programme trop grand.
Plus précisément, mon idée serait de garder les deux fichiers, cible.php et photo.php, mais d'avoir dans cible.php la ligne

require_once("photo.php" );

photo.php est ainsi une espèce de sous-programme de cible.php. Les variables sont récupérées au début de cible.php via les  $_POST[], par exemple :  

$CD_DATA1 = ""; if (isset($_POST['CD_DATA1'])) $CD_DATA1 = $_POST['CD_DATA1'];

Puis, dans photo.php, on utilise ces données, soit parce qu'elles sont passées en paramètres de fonction, soit parce qu'elle sont déclarée avec le mot-clé global.

n°2040864
mico35
Posté le 08-12-2010 à 16:32:19  profilanswer
 

Je met déja le code que j'ai fait sur ces 3 fichiers.
 
form.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>Document sans titre</title>
</head>
 
<body>
 
<form action="cible.php" method="post" name="ventill_chauff" id="ventill_chauff" >
<p>Type de vantillation :</p>
<p>
  <select name="ventillation">
    <option value="1" selected="selected">VMC 2 flux</option>
    <option value="2">VMC simple flux</option>
      </select>
</p>
<p>Type de chauffage :</p>
<p>
  <select name="chauffage" onchange="submit">
    <option value="1">poêle à bois</option>
    <option value="2">chaudière gaz</option>
  </select>
</p>
 
<P><input type="submit" value="Valider"</P>
</form>
 
 
 
</body>
</html>


 
cible.php

<?php require_once("photo.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>Document sans titre</title>
 
</head>
 
<body>
<?php  
$prix_vmc2flux = 3200;
$prix_vmc1flux = 855;
$prix_poele = 9500;
$prix_chau_gaz = 4500;
?>
<p>Ventillation choisi :  
<?php if ($_POST["ventillation"] ==1 )
{echo "ventillation Double flux";
$ventil = 3200; }
elseif ($_POST["ventillation"] ==2 )
{echo "ventillation simple flux";
$ventil = 855;}
else
{echo "pas de vmc sélectionné";}
?>.
</p>
<p>chauffage choisi :  
<?php if ($_POST["chauffage"] ==1 )
{echo "Poele à bois";
$chauf = 5000;}
elseif ($_POST["chauffage"] ==2 )
{echo "Chaudière gaz";
$chauf = 9000;}
else
{echo "pas de chauffage sélectionné";}
?>.
</p>
 
<p>Total =  
<?php  
$total = $ventil + $chauf;
echo $total; ?>
</p>
<p>Voila ce que ca va donner</p>
<p>
 <img src="photo.php" />
</p>
</body>
</html>


 
photo.php

<?php
header ("Content-type: image/jpeg" ); // L'image que l'on va créer est un jpeg
$corps = imagecreate(400,300);
if ($_POST["ventillation"] ==1 )
{$source1 = imagecreatefromgif("vmc2.gif" ); }
elseif ($_POST["ventillation"] ==2 )
{$source1 =imagecreatefromgif("vmc1.gif" );}
if ($_POST["chauffage"] ==2 )
{$source2 =imagecreatefromgif("chaud.gif" );}
elseif ($_POST["chauffage"] ==1 )
{$source2 =imagecreatefromgif("poele.gif" );}
imagecopymerge($corps, $source1, 0, 0, 0, 0, 400, 300, 100);
imagecopymerge($corps, $source2, 0, 0, 0, 0, 400, 300, 100);
imagejpeg($corps);
?>


 
Si j'ai bien compris, je met dans cible

require_once("photo.php" );


 
Pour l'instant, si je fait juste ca, j'affiche uniquement l'image mais pas le calcul


Message édité par mico35 le 08-12-2010 à 16:33:00
n°2040924
olivthill
Posté le 08-12-2010 à 17:34:36  profilanswer
 

Ok, je comprends beaucoup mieux.
Excusez-moi, ma solution ne marche pas dans ce cas de figure.
 
Peut-être que la solution suivante marcherait :
- Garder form.php
- Modifier légèrement cible.php pour enlever mon require_once, et pour remplacer

<img src="photo.php" />


par :

<?php print("<img src=\"photo.php?v=".$_POST['ventillation']."&c=".$_POST['chauffage']."\" />" ); ?>


- Modifier photo.php :

<?php  
header ("Content-type: image/jpeg" ); // L'image que l'on va créer est un jpeg  
$corps = imagecreate(400,300);  
if ($_GET["v"] =="1" )  
{$source1 = imagecreatefromgif("vmc2.gif" ); }  
elseif ($_GET["v"] =="2" )  
{$source1 =imagecreatefromgif("vmc1.gif" );}  
if ($_GET["c"] =="2" )  
{$source2 =imagecreatefromgif("chaud.gif" );}  
elseif ($_GET["c"] =="1" )  
{$source2 =imagecreatefromgif("poele.gif" );}  
imagecopymerge($corps, $source1, 0, 0, 0, 0, 400, 300, 100);  
imagecopymerge($corps, $source2, 0, 0, 0, 0, 400, 300, 100);  
imagejpeg($corps);  
?>


Message édité par olivthill le 08-12-2010 à 17:51:40
n°2040926
smaragdus
whores, drugs & J.S. Bach
Posté le 08-12-2010 à 17:36:10  profilanswer
 

Non c'est pas ça.
 
photo.php est une image que le browser va appeler comme suit :
 
<img src="photo.php" />  comme indiqué dans cible.php
 
C'est donc normal que les variable POST ne contiennent rien dans photo.php puisque c'est un autre script. Le php n'a pas de contexte d’exécution hormis les sessions. Ca serait bien que tu commences par apprendre ça.
 
Pour procéder correctement, il faut générer l'image dans un répertoire de cache et faire un lien vers cette image dans le tag img
 
(ceux qui te conseilleront de passer les param en GET ont gagné le droit de se taire)

n°2040981
mico35
Posté le 09-12-2010 à 10:53:29  profilanswer
 

smaragdus a écrit :

Non c'est pas ça.
 
photo.php est une image que le browser va appeler comme suit :
 
<img src="photo.php" />  comme indiqué dans cible.php
 
C'est donc normal que les variable POST ne contiennent rien dans photo.php puisque c'est un autre script. Le php n'a pas de contexte d’exécution hormis les sessions. Ca serait bien que tu commences par apprendre ça.
 
Pour procéder correctement, il faut générer l'image dans un répertoire de cache et faire un lien vers cette image dans le tag img
 
(ceux qui te conseilleront de passer les param en GET ont gagné le droit de se taire)


Ça marche impeccable !
Merci pour l'info. Je cherchais un solution compliqué alors que c'était très simple.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  envoi de données de form vers 2 fichiers php

 

Sujets relatifs
Lire des fichiers .classActualiser une liste de données tirées d'une table Mysql en PHP
[DOTNETNUKE] - comment créer un lien raccourci vers une page ?Envoi mail plusieurs destinataires (excel)
Récupération de données XML dans des tableaux[MySQL] Ajouter une colonne et les données d'une autre table
Tous mes fichiers js sont détecter comme virusExtraction de données apartir d'un fichier XML
Concaténer contenus fichiers xmlhtaccess - bloquer le téléchargement de fichiers
Plus de sujets relatifs à : envoi de données de form vers 2 fichiers php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR