Rechercher : dans
Par :

Envoi données form HTML & Php sur 2 pages

Dernière réponse le 9 sep 2008 à 17:50:45 clementine, le 1 sep 2008 à 17:13:11 
 Signaler ce message aux modérateurs

Bonjour,
Avant tout, pardonnez mon ignorance.
J'essaie de créer un formulaire qui inclue des variables php et des données html toutes bêtes.
Ces données et variables doivent être envoyées sur deux pages différentes selon que la personne clique sur "valider" (page: vignette2.php) ou "abandonner" (page: refusVign1.php) .
Je n'arrive pas à envoyer les données du formulaire HTML puisqu'en définissant ACTION dans la balise FORM, je fixe une page d'envoi.
Comment faire pour défiir deux actions différentes, selon le bouton cliqué?
J'ai vu dans d'autres sujets des fonctions javascript avec onclick, mais je n'ai jamais utilisé le javascript, du coup, je n'arrive pas à faire fonctionner ce qui est proposé ailleurs.
Merci beaucoup par avance de votre aide!
Clémentine


voici le code utilisé jusqu'à maintenant et qui pose problème:


<?php
$numPart = 0;
$typeTexte = "";
$tpsInit = time();
function genererNumParticipant()
{
$file = fopen("../save/numero.txt","a+");

if($file)
{
$numPart = fgets($file);
fclose($file);
//echo "numero participant ".$numPart;
$file = fopen("../save/numero.txt","w+");
fwrite($file,$numPart + 1);
fclose($file);
return $numPart;
}
}

$part = genererNumParticipant();
// echo "participant".$part;


function determinePage($chiffre)
{

$num = rand(0,$chiffre);
return $num;
}

mt_srand ();
$numero = determinePage(4);

?>


<form name="questionnaire" action="vignette2.php" method="post">
...
ici se trouvent les inputs auxquels répondent les personnes
...
</table>
<table align="center">
<tr><td>
<input type="hidden" name="reponse" value="<?php echo $part; ?>">
<input type="hidden" name="tpsInit" value="<?php echo $tpsInit; ?>">
<input type="submit" value="next experiment">
</form>
</td></tr>
<tr><td>
<form name="refus" action="refusVign3.php" method="post">
<input type="hidden" name="reponse" value="<?php echo $part ?>">
<input type="hidden" name="tpsInit" value="<?php echo $tpsInit; ?>">
<input type="submit" value="withdrawn">
</form>
</td></tr>
</table>

Configuration: Windows XP
Firefox 3.0.1

Meilleures réponses pour « envoi données form HTML & Php sur 2 pages » dans :
[Webmaster] Afficher facilement le code php/xhtml de vos pages VoirSi vous voulez proposer a vos visiteurs de voir la source de vos fichiers (PHP ou HTML), il y a plusieurs solutions. En php Afficher le code php Afficher le code html En html Informations Voir aussi En php Afficher le code php La...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...
Structure d'un document HTML VoirNotion de document HTML Une page HTML est un simple fichier contenant du texte formatté avec des balises HTML. Par convention l'extension donnée au fichier est .htm ou .html, mais une page web peut potentiellement porter n'importe quelle...

1

manirac, le 1 sep 2008 à 23:39:00
  • +1

Si tu ne veux pas utiliser de Javascript, le mieux est de renvoyer systématiquement l'utilisateur vers une page intermédiaire en php. Il faut simplement envoyer à cette page une valeur qui indiquera quel bouton l'utilisateur a cliqué.
En fonction de cette valeur tu utilises l'instruction php header pour renvoyer vers l'une ou l'autre de tes pages.

<form name="questionnaire" action="intermed.php" method="post">

</table>
<table align="center">
<tr><td>
<input type="hidden" name="reponse" value="<?php echo $part; ?>">
<input type="hidden" name="tpsInit" value="<?php echo $tpsInit; ?>">
<input type="hidden" name="estaccepte" value="TRUE">
<input type="submit" value="next experiment">
</td></tr>
<tr><td>
<input type="hidden" name="reponse" value="<?php echo $part ?>">
<input type="hidden" name="tpsInit" value="<?php echo $tpsInit; ?>">
<input type="hidden" name="estaccepte" value="FALSE">
<input type="submit" value="withdrawn">
</form>
</td></tr>
</table>
...

puis dans page intermed.php
<?php
if ($_POST['estAccepte']=='TRUE') {
header("location:vignette2.php?tpsInit=$_POST['tpsinit']&reponse=....'")
}
else {
header("location:refusVign3.php?tpsInit=$_POST['tpsinit']&reponse=....'")
}

Evidemment, je n'ai pas testé avant de poster ce message.
Mais, je pense que ça doit marcher.

Bon courage !

Répondre à manirac

2

toto, le 1 sep 2008 à 23:44:43

Bonjour

Le plus simple à mon avis c'est d'avoir un seul form avec deux boutons submit. Tu donnes des noms différents aux deux boutons.
Au début de vignette2.php, tu testes lequel des deux boutons a été cliqué. Si c'est le bouton de refus, tu renvoies vers la page RefsVign3.php.

En résumé, dans ton formulaire (à remettre un peu en forme) :

<form name="questionnaire" action="vignette2.php" method="post"> 
... 
ici se trouvent les inputs auxquels répondent les personnes 
... 
</table> 
<table align="center"> 
<tr><td> 
<input type="hidden" name="reponse" value="<?php echo $part; ?>"> 
<input type="hidden" name="tpsInit" value="<?php echo $tpsInit; ?>"> 
<input type="submit" value="next experiment" name="accepte"> 
<input type="submit" value="withdrawn" name = "refus"> 
</form> 

et vers le début de "vignette2.php" (avant d'avoir commencé à sortir la page HTML):

...
if (isset($_POST['refus'])) header('Location: RefusVign3.php');

Répondre à toto

3

clementine, le 1 sep 2008 à 23:52:35

Merci pour vos réponses! Je vais tester les deux solutions. Je vous dirais demain ce qui marche/ne marche pas. :o)

Répondre à clementine

4

 clementine, le 9 sep 2008 à 17:50:45

Salut!
J'ai essayé les 2 méthodes, les deux fonctionnent partiellement.
J'arrive bien à être renvoyé vers la page "refus" et les variables php sont enregistrées avec la première méthode.
Mais dans les 2 cas, les données HTML ne sont pas renvoyées vers la page refus, et donc ne sont pas enregistrées.

J'ai laissé tomber l'idée d'enregistrer les données même quand les gens refusent de continuer, je n'ai pas le temps de chercher davantage comment faire marcher tout ça.
Tant pis! En tous cas, merci pour votre aide.
Clémentine

Répondre à clementine