Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/08/2007, 11h13   #1
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Par défaut Récupération de POST

Bonjour.

Dans mon formulaire j'ai un calendrier qui réaffiche la page quand on clique sur la date.
Début de ma page
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
require('connect.php');
//récupération des valeurs du calendrier 
if (isset($_GET['day']))  $jour=$_GET['day']; else $jour = "";  
if (isset($_GET['month']))  $mois=$_GET['month']; else $mois = "";
if (isset($_GET['year']))  $an=$_GET['year']; else $an = "";
if (!empty($jour)){
	if ($jour < 10){
		$jour = "0$jour";
	}
	if ($mois < 10){
		$mois = "0$mois";
	}
$madate = "$jour/$mois/$an";
$madate1 ="$an-$mois-$jour";
}
//récupération des valeurs pour ajouter un film
if(isset($_POST['titref']))      $titre=$_POST['titref'];
	else $titre = "";
if(isset($_POST['sortie']))      $sortie=$_POST['sortie'];
	else $sortie = "";
.....
Début de mon formulaire :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<!--*********** FORMULAIRE DE SAISIE ***************-->
<div style="margin-left:200px">
<table border="0"><tr><td>
<form name="ajout" method="post" action="index.php?page=ajout_film">
<table border= "0" style="background-color:#0099FF;" cellpadding=0 cellspacing="0">
<colgroup width='150'></colgroup>
	<tr style="background-color:#0080c0" height=55>
		<td colspan=2 align="center"><b>Ajouter un film</b><br><br>
			<span style="font-size:11px"><font color="white">Vérifier que les acteurs, réalisateurs, genres et nationalités sont dans les listes avant la saisie du film</span></td>
	</tr>
	<tr class="trajout">
		<td align="right">Titre : </td>
		<td><input type="text" name="titref" value="<?php if (isset($titre)) { echo $titre; }?>" style="width:467px" /></td>
	</tr>
	<tr class="trajout">
		<td align="right" valign="top">Date de sortie : <br><br> Année de réalisation :</td>
 
		<td>
		<table border = "0" cellpadding=0 cellspacing="0">
			<tr>		
				<td valign="top" width="160px"><input type="text" name="sortie1" value="<?php if (isset($madate)) { echo $madate; }?>"/><br><br>
					<input type="text" name="annee" value=""/></td><td>
<!-- calendrier -->	
 
<div id="calendrier" align="center">
    <table border=1 style="background-color:#FFFFFF" cellpadding=0 cellspacing=0 width="152px" style="font-size:10px">
        <tr>
            <td><a href="index.php?page=ajout_film&month=<?php echo $monthnb - 1; ?>&year=<?php echo $year; ?>" style="text-decoration:none"><</a></span></td>
            <td colspan="5"><?php echo($month.' '.$year);  ?></th>
            <td><a href="index.php?page=ajout_film&month=<?php echo $monthnb + 1; ?>&year=<?php echo $year; ?>" style="text-decoration:none">></a></span></td>
        </tr>
        <?php
            echo('<tr>');
            for($i = 1; $i <= 7; $i++){
                echo('<td>'.$daytab[$i].'</td>');
            }
            echo('</tr>');
            for($i = 1; $i <= count($calendar); $i++) {
                echo('<tr>');
                for($j = 1; $j <= 7 && $j-$z+1+(($i*7)-7) <= $nbdays; $j++){
                    if($j-$z+1+(($i*7)-7) == date("j") && $monthnb == date("n") && $year == date("Y")) echo '<td align="right"><a href="index.php?page=ajout_film&day='.$calendar[$i][$j].'&month='.$monthnb.'&year='.$year.'" style="text-decoration:none">'.$calendar[$i][$j].'</a></td>';
                    else echo '<td align="right"><a href="index.php?page=ajout_film&day='.$calendar[$i][$j].'&month='.$monthnb.'&year='.$year.'" style="text-decoration:none">'.$calendar[$i][$j].'</td>';
                }
                echo('</tr>');
            }
        ?>
    </table>
</div>
Quand j'entre un titre et que je clique sur une date du calendrier, j'ai bien la date affichée dans l'input text "sortie" mais je perds le titre.

Est que quelqu'un a une idée?

Merci.
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 11h29   #2
Membre Expert
 
Inscription : octobre 2002
Messages : 1 141
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2002
Messages : 1 141
Points : 1 204
Points : 1 204
Envoyer un message via MSN à Raideman
C'est normal, tu choisis la date de sortie via un lien que tu cliques (un GET) et donc le formulaire n'est pas "soumis" (submit) mais seulement les variables contenues dans ton lien du calendrier (une date donc).
Tu mélanges en fait un formulaire classique post pour le titre du film et une variable GET pour le calendrier. D'ailleurs dans ton bout de code, il n'y a meme pas de bouton submit pour envoyer tes variables posts (le titre du film).

Une solution serait de garder ton form avec le choix du titre de film et de faire un calendrier sous forme javascript. A chaque fois que tu cliques sur une date du calendrier, ca appelle une fonction javascript qui va remplir automatique un champ input type="texte" name="date_sortie" avec la date choisie.
ensuite tu pourrais faire ton ajout avec un bouton submit. Tu pourrais alors récupérer a la fois la date et le titre du film.

Je sais pas si j'ai été très clair alors je vais mettre un bout de code.
Raideman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 11h34   #3
Membre Expert
 
Inscription : octobre 2002
Messages : 1 141
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2002
Messages : 1 141
Points : 1 204
Points : 1 204
Envoyer un message via MSN à Raideman
Code :
1
2
3
4
5
6
7
8
9
 
<form method="post">
       <input type="text" name="titre">
       <!-- calendrier -->
       <a href="#" onclick="javascript:document.getElementById('date').value='14-08-2007';">ta date</a>;
       <input type="text" name="date" id="date">
       <input type="hidden" name="page" value="ajout_film">
input type="sumit" name="valider">
</form>
Ensuite, tu récupères $_POST['date'] et $_POST['titre'] pour faire tes traitements.

Evidemment, j'ai pris un exemple sur une seule date mais tu devrais pouvoir appliquer cette méthode à tout ton calendrier sans trop de problème.
Raideman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 11h52   #4
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Merci pour les réponses.

J'ai bien compris tout ça. J'avais construis mon calendrier avec des select qui appelaient une fonction javascript mais il ne restait pas sur le mois sélectionné, c'est pour ça que j'utilise un calendrier construit en php qui récupère la date via un lien.
Pour le formulaire je n'ai pas mis le code mais j'ai bien un bouton submit.
Est ce que je ne pourrais pas utiliser $_SESSION pour garder le titre du film?
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 14h28   #5
Membre Expert
 
Inscription : octobre 2002
Messages : 1 141
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2002
Messages : 1 141
Points : 1 204
Points : 1 204
Envoyer un message via MSN à Raideman
un session n'ira pas car des que tu choisiras la page, tu vas envoyer tes données via un get et le titre n'est pas passé dans l'url que tu cliques de ton calendrier. Et donc il ne sera pas transmis a la page cible et tu ne pourras le sauver en get.
Raideman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 14h33   #6
Membre Expert
 
Inscription : octobre 2002
Messages : 1 141
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2002
Messages : 1 141
Points : 1 204
Points : 1 204
Envoyer un message via MSN à Raideman
sinon j'ai un calendrir en javascript que je te mets en pièce jointe.
Ensuite dans ton formulaire tu places:
pour inclure le calendrier:

Code :
<SCRIPT LANGUAGE="JavaScript" SRC="./CalendarPopup.js"></SCRIPT>

et ensuite tu appeles ce calendrier via un lien de la manière suivante:
Code :
1
2
3
4
5
6
7
 
<form name="form_selects" method="post">	  
<SCRIPT LANGUAGE="JavaScript">
  	  var cal = new CalendarPopup();
  	  </SCRIPT>
          <INPUT TYPE="text" NAME="date1" VALUE="" SIZE=12>
          <A HREF="#" onClick="cal.select(document.forms['form_selects'].date1,'anchor1','dd/MM/yyyy'); return false;" NAME="anchor1" ID="anchor1" border="0">calendrier</A></form>
et tu obtiens un calendrier facile à utiliser et assez ergonomique pour les formulaires.

Tiens moi au courant si tu as des soucis.
Fichiers attachés
Type de fichier : js CalendarPopup.js (58,5 Ko, 2 affichages)
Raideman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 15h10   #7
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Merci.
Je teste sur mon site et je reviens si problème.
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h36.


 
 
 
 
Partenaires

Hébergement Web