probleme date

Invité
Invité n'ayant pas de compte PHPfrance

11 déc. 2006, 11:19

Bonjour,

Voila comme le titre l'indique j'ai un souci avec les dates.
<input name="sub" type="image" onClick="<?php $datedeb=$_REQUEST["datdeb"] & $datefin=$_REQUEST["datfin"] ?>" src="../image/bouton/button1F.gif" width="115" height="23" border="0">
Je sais que mon souci se trouve a ce niveau (&). Il n'apprecit pas que je lui envoie les deux dates, de quel manière est-ce que je peux faire.
merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 déc. 2006, 12:08

Ton soucis se situe surtout dans le fait que tu mélanges php et javascript. Le premier s'exécute côté serveur et permet de générer ta page, le second tourne côté client et permet d'interragir directement avec l'utilisateur.

La seule interraction entre ces deux langages, c'est que php peut générer du code javascript lorsqu'il construit la page, mais ça s'arrête là :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

11 déc. 2006, 12:25

je ne comprend pas pourquoi les deux ne s'execute pas de la même manière. De quel manière est-ce que je peux faire pour avoir acces au deux dates ?
merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 déc. 2006, 12:33

Comment ça "pourquoi les deux ne s'exécutent pas de la même manière" ? Ce sont deux langages de programmation différents, destinés chacun à une utilisation différente :)

Si on analyse ton code, voici ce qui se passe sur le serveur (puisque le php est exécuté en premier)
1. $datedeb=$_REQUEST["datdeb"] // affecte la valeur contenue dans $_REQUEST["datdeb"] à la variable $datedeb. Cette action est toujours vraie.

2. $datefin=$_REQUEST["datfin"] // affecte la valeur contenue dans $_REQUEST["datfin"] à la variable $datefin. Cette action est toujours vraie.

3. evalue l'expression "$datedeb=$_REQUEST["datdeb"] & $datefin=$_REQUEST["datfin"]" // la première retourne vraie, la seconde retourne vraie, le résultat est donc vrai. 

// Jusqu'ici, il n'y a rien d'affiché, rien de contrôlé, aucun traitement solicité, le contenu des balises php ne produira donc rien. 

4. génère le code HTML envoyé au navigateur : 
<input name="sub" type="image" onClick="" src="../image/bouton/button1F.gif" width="115" height="23" border="0">  
Je ne sais pas ce que tu souhaites faire, mais tu ne pars vraissemblablemet pas du tout dans la bonne direction :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

11 déc. 2006, 12:55

En faite j'ai mon formulaire :
<form name="enreg" method="post" action="">
  <p align="center" class="Style1"><span class="Style2">Veuillez saisir la date de d&eacute;but souhait&eacute; : </span>
    <INPUT NAME=datdeb TYPE=text id="datdeb" VALUE="<?php echo $_REQUEST["datdeb"]; ?>" size="10" maxlength="10">
	 <span class="Style2">La date de fin  : </span>
     <INPUT NAME=datfin TYPE=text id="datfin" VALUE="<?php echo $_REQUEST["datfin"]; ?>" size="10" maxlength="10">
     <input name="sub" type="image" onClick="<?php $datedeb=$_REQUEST["datdeb"] & $datefin=$_REQUEST["datfin"] ?>" src="../image/bouton/button1F.gif" width="115" height="23" border="0">
</form>
qui affiche ensuite :
<?php
if (($datedeb !="") & ($datefin !=""))
{

list($jour, $mois, $annee) = explode("/", $datedeb);  
$datedeb = $annee.'-'.$mois.'-'.$jour; 
list($jour, $mois, $annee) = explode("/", $datefin);  
$datefin = $annee.'-'.$mois.'-'.$jour; 
echo $datedeb.' '.$datefin;
Le souci c'est que si je rentre :
-datdeb =12/01/2006
-datfin =12/12/2006

et cela m'affiche : 2006-00-12 2006-12-12

je ne voie pas le souci!!!

Eléphant du PHP | 258 Messages

11 déc. 2006, 13:20

c'est quoi le soucis c'est que sa affiche sur la meme ligne ou en année,moi,jour?

Ou c'est autre chose je ne vois pas bien ?

Eléphant du PHP | 258 Messages

11 déc. 2006, 13:21

c'est quoi le soucis c'est que sa affiche sur la meme ligne ou en année,moi,jour?

Ou c'est autre chose je ne vois pas bien ?

Invité
Invité n'ayant pas de compte PHPfrance

11 déc. 2006, 14:20

non le souci c'est que cela ne m'affiche pas la bonne date

2006-00-12 a la place de 2006-01-12

ViPHP
ViPHP | 2144 Messages

11 déc. 2006, 15:00

Et dans phpMyAdmin, qu'est-ce qui est affiché ? Commençons par savoir si c'est l'affichage ou l'insertion qui foire.

Invité
Invité n'ayant pas de compte PHPfrance

11 déc. 2006, 15:04

je n'uilise rien de mysql pour se cas, je saisie juste deux date et je demande de les afficher au format mysql (pour ensuite l'utiliser bien ententu dans des requete, mais pour l'instant j'ai deja un probleme pour faire afficher les deux date au format mysql.

ViPHP
ViPHP | 1961 Messages

11 déc. 2006, 15:34

Bonjour,

MySQL te permet de transformer la date avec la fonction "DATE_FORMAT(date, 'format')"
Mais si tu veux absolument le faire en PHP voici un petit bout de code qui fonctionne
<?php
	function dateFrToSQL($dateFr){
		list($jour, $mois, $annee) = explode('/', $dateFr);
		return ($annee . '-' . $mois . '-' . $jour);
	}
	$dateDeb = '12/01/2006';
	$dateFin = '12/12/2006';
	echo 'Date Deb Fr : ' . $dateDeb . ' *** Date Deb DB : ' . dateFrToSQL($dateDeb) . '<br />';
	echo 'Date Fin Fr : ' . $dateFin . ' *** Date Fin DB : ' . dateFrToSQL($dateFin) . '<br />';
?>
Le résultat

Code : Tout sélectionner

Date Deb Fr : 12/01/2006 *** Date Deb DB : 2006-01-12 Date Fin Fr : 12/12/2006 *** Date Fin DB : 2006-12-12
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

11 déc. 2006, 15:47

ma fonction marche correctement, je pense vraiment que le probleme se situe a se niveau car lorsque je mets
<?php $datedeb=$_REQUEST["datdeb"] ?>
à la place de
<?php $datedeb=$_REQUEST["datdeb"] & $datefin=$_REQUEST["datfin"] ?>
cela fonctionne. Faut-t-il que je mette autre chose a la place de & ?

merci

ViPHP
ViPHP | 2144 Messages

11 déc. 2006, 15:52

Que vient faire un & entre deux opérations d'affectations ? il faut séparer les deux opérations par ;

ps: il vaut mieux utiliser les constantes super global $_POST et $_GET pour récupérer des données. (ici le formulaire étant en post)
Modifié en dernier par iclo le 11 déc. 2006, 15:53, modifié 1 fois.

ViPHP
ViPHP | 1961 Messages

11 déc. 2006, 15:53

Re,

Si ce que tu veux c'est de séparer les deux dates par '&' tu doit l'écrire comme ceci (je te parle au niveau syntaxique, pas fonctionnel)
<?php echo 'datedeb=' . $_REQUEST["datdeb"] . '&datefin=' . $_REQUEST["datfin"] ?>
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

11 déc. 2006, 15:54

grace a la reponse de iclo problème resolu, je n'avai pas penser mettre un ; à la place d'un & et maintenant cela marche.

Encore merci iclo