Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 25/12/2012, 18h09   #1
laurentSc
Débutant
 
Homme Laurent
Webmaster débutant
Inscription : octobre 2006
Messages : 3 494
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 49
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster débutant
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 3 494
Points : 1 693
Points : 1 693
Par défaut récupérer une date d'un formulaire

Bonjour,

dans un formulaire, l'utilisateur saisie une date :
Code html :
1
2
3
4
5
<form method="post" action="?">
...
 <input name="date" id="datepicker" type="text">
...
</form>
Mais l'action ne récupère pas la bonne valeur : $_POST['date'] ne correspond pas à ce que l'utilisateur saisie (toujours la même valeur, qui sort je ne sais pas d'où). Savez-vous ce qui pourrait ne pas aller ?
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2012, 19h36   #2
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 504
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 504
Points : 21 342
Points : 21 342
je suppose que tu utilises un selectionneur de dates en javascript il faut voir de ce côté mais pzs en php.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2012, 19h49   #3
laurentSc
Débutant
 
Homme Laurent
Webmaster débutant
Inscription : octobre 2006
Messages : 3 494
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 49
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster débutant
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 3 494
Points : 1 693
Points : 1 693
C'est vrai que j'avais utilisé datepicker (du js), mais même en mettant un champ tout simple :
Code html :
<input type="text" name="date" id="date" size="10">
le problème est le même...
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2012, 23h32   #4
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 504
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 504
Points : 21 342
Points : 21 342
et que reçois-tu ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 11h28   #5
laurentSc
Débutant
 
Homme Laurent
Webmaster débutant
Inscription : octobre 2006
Messages : 3 494
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 49
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster débutant
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 3 494
Points : 1 693
Points : 1 693
Désolé, pas connecté avant : 2012-12-20 (je sais pas d'où ça sort) ; voici mon code :
Le formulaire :
Code :
1
2
3
4
5
<form method="post" action="?">
...
<input type="text" name="date" id="date" size="10">
...
</form>
L'action :
Code :
1
2
3
...
case "insert": $res=$this->model->insertOperation((new Operation(NULL,$_POST['intitule'],$_POST['montant']))->setFrenchDate($_POST['date']));
...
et la classe "Operation" :
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
<?php
class Operation { // conteneur de données
	public $id;
	public $date;
	public $intitule;
	public $montant;
	public $id_compte;
 
	public function __construct($date="00-00-00",$intitule="",$montant=0,$id_compte=0,$id=0 ) {
		echo "date=".$date;
		$this->id=$id;
		$this->date=$date;
		$this->intitule=$intitule;
		$this->montant=$montant;
		$this->id_compte=$id_compte;
 
	}
 
	public function getFrenchDate() {
		//$this->date
		return(date("d/m/Y",strtotime($this->date))); // conversion ISO->Unix Timestamp->fr
	}
 
	public function setFrenchDate($date) {
		$dateintermediaire=date_parse_from_format("d/m/Y",$date); //strptime marche pas
		$day=$dateintermediaire['day'];
		$month=$dateintermediaire['month'];
		$year=$dateintermediaire['year'];
		$this->date=$year."-".$month."-".$day;//conversion fr->ISO (format bdd)
		echo  $this->date;
		return($this);
	}
}
?>
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 11h54   #6
Séb.
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 974
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 974
Points : 3 690
Points : 3 690
Debug :

Code :
1
2
3
case "insert":
exit("<h1>$_POST[date]</h1>") ;
$res=$this->model->insertOperation((new Operation(NULL,$_POST['intitule'],$_POST['montant']))->setFrenchDate($_POST['date']));
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 12h12   #7
laurentSc
Débutant
 
Homme Laurent
Webmaster débutant
Inscription : octobre 2006
Messages : 3 494
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 49
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster débutant
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 3 494
Points : 1 693
Points : 1 693
Je viens de rajouter exit dans le "insert" :
Code :
case "insert": exit("test"); $res=$this->model->insertOperation((new Operation(NULL,$_POST['intitule'],$_POST['montant']))->setFrenchDate($_POST['date']));break;
mais ça coince un peu plus loin :
Citation:
A session had already been started - ignoring session_start() in D:\divers\boulot\formation_PHPPOO\model_class.php on line 14
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 12h13   #8
Séb.
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 974
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 974
Points : 3 690
Points : 3 690
Il faut faire un "Afficher la source" sur le navigateur.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 13h03   #9
laurentSc
Débutant
 
Homme Laurent
Webmaster débutant
Inscription : octobre 2006
Messages : 3 494
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 49
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster débutant
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 3 494
Points : 1 693
Points : 1 693
Bonjour,

hier, je n'ai pu essayer que le soir et avec IE, rien ; je n'ai pensé à essayer avec FF que ce matin ; mais qu'est-ce que ça peut me donner ?
Code :
1
2
3
4
5
6
7
8
9
10
11
<tr><th>Date</th><th>Intitulé</th><th>Montant</th><th></th><th>Supprimer</th></tr>
date=2012-12-20date=2012-12-20date=2012-12-20	<tr><td>20/12/2012</td><td>test</td><td>10</td><td>&nbsp;</td><td><input type="checkbox" 
	name="suppr[87]"></td><td><input type="button" onclick="document.getElementById('date').value='20/12/2012';
	document.getElementById('intitule').value='test';	document.getElementById('montant').value=10;
	document.getElementById('id').value='87';	document.getElementById('action').value='update'" value="Modifier"/>
	</tr>
...
	<td>
	 <!--<input name="date" id="datepicker" type="text">--->
	<input type="text" name="date" id="date" value="" size="10">
	</td>
(Les 3 dates du départ viennent d'un echo que j'ai rajouté dans le constructeur de la classe "Operation" (dont un objet va contenir ce que vient de saisir l'utilisateur))
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 27/12/2012, 13h48   #10
jreaux62
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 3 657
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 46
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 3 657
Points : 7 538
Points : 7 538
Envoyer un message via Skype™ à jreaux62
Bonjour Laurent,
Après 3 162 messages, peut-on raisonnablement penser :
- que tu es capable de faire toi-même un début de débogage, en mettant des echo ...; ou var_dump(...); (en PHP) ou des alert('...'); en JavaScript ??
- que tu sais nous donner toutes les informations nécessaires à la résolution du problème, sans qu'on ait besoin de te le demander 10 fois ?
(messages d'erreur, valeur des variables,...)
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
"Quand le sage montre la lune, le sot regarde le doigt."
Confucius, Homme d'Etat et philosophe chinois (551-479 av. J.-C).
Site perso Mes tutos DVP
Gestion-Affichage de Nouvelles Affichage en tableau HTML Fonctions de redimensionnement d'images
jreaux62 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/12/2012, 16h58   #11
laurentSc
Débutant
 
Homme Laurent
Webmaster débutant
Inscription : octobre 2006
Messages : 3 494
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 49
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster débutant
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 3 494
Points : 1 693
Points : 1 693
Bien sûr, je l'avais déjà fait et commenté la bufférisation de la sortie pour que ça marche ; du coup, j'ai un peu insisté, et j'ai davantage progressé mais c'est pas encore bon ; dans la méthode "insertOperation", je fais une requête préparée :
Code :
1
2
3
4
5
6
	$req="INSERT INTO operation VALUES(DEFAULT,:date,:intitule,:montant,:id_compte)";
	$st=$this->prepare($req);
        $st->bindValue(":date",$op->date);	
...
	$res=$st->execute(); // PDO
	$err=$st->errorinfo();
Un echo montre que $op->date est correcte ; pourtant dans la bdd, il met la 1e date UNIX (01/01/1970) ; voyez-vous pourquoi ?
(et j'ai progressé car avant, je convertissais la date fr vers ISO en me servant de date_parse_from_format et le debug m'a montré que ça n'allait pas, donc je le fais à coup de explode)(et de plus avant, il y avait intérêt à faire bon du premier coup car je ne développais pas le PHP en local, donc devais transférer sur internet pour voir ce que ça donne (et ce depuis que Wampserver ne marche plus chez moi, mais il me reste Easyphp)).
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 22h42   #12
laurentSc
Débutant
 
Homme Laurent
Webmaster débutant
Inscription : octobre 2006
Messages : 3 494
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 49
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster débutant
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 3 494
Points : 1 693
Points : 1 693
Génial ; je venais de créer une sauvegarde car en faisant des modifs, ça marchait moins bien qu'avant et j'ai mis environ une heure à retrouver le niveau d'avant. Mais une fois fait cette sauvegarde, j'ai modifié ma conversion de date à base de explode et ça s'est mis à marcher !
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h00.


 
 
 
 
Partenaires

Hébergement Web