GERER DES DATES EN JAVASCRIPT...

Eléphant du PHP | 114 Messages

01 sept. 2005, 16:08

Bonjour a tous,

Je dois produire un code mais je n'ai aucune idée sur le "COMMENT FAIRE"ou du moins "PAR OU COMMENCER"
cependant je sais que l'on peut le faire etant donné que j'ai deja vu tourné des applis avec cette fonction.

Je vous explique j'ai ecris un formulaire (classique) dont la plupart des champs recupere des informations d'une base de données afin d'informé l'utilisateur sur un produit.
Je dis la plupart des champs sauf 1 champs qui devra etre saisi par l'utilisateur.le champs "date de fabrication". Une fois saisi cette date automatiquement il en déduis la date de péremption (apres quelcqonque evenement...(onclick, etc...))
L'ajout sur la date de fabrication se fera avc un peu pret ce script la:
$datesupp7 = mktime(0,0,0,date("m"), date("d")+365,date("Y"));
voici un petit screenshoot pour que vous voyez un peu le truc !

Image

Comme vous pouvez le voir j'ai mis a coté du champs date de peremption un icone raffraichir car je pensais que lorsque l'utilisateur aurai saisi sa date de fabrication il aurait plus K cliquer sur cette icone pour faire apparaître.

Bref etant donné que je ne sais pas par ou commencé, je vous laisse débattre sur le sujet et me proposé la solution la plus adaptée.

Pour plus d'infos, les chps que vous voyez font parti d'un formulaire qui devra etre posté a la fin a laide d'un bouton type Submit.


Merci d'avance.
Modifié en dernier par Na!m0r le 02 sept. 2005, 13:22, modifié 1 fois.

Mammouth du PHP | 543 Messages

01 sept. 2005, 16:13

Quel est le format de la date de fabrication ?
Et qu'est ce qui doit lui etre ajouté ? des jours, des mois, des années ?

Eléphant du PHP | 114 Messages

01 sept. 2005, 16:29

Quel est le format de la date de fabrication ?
Et qu'est ce qui doit lui etre ajouté ? des jours, des mois, des années ?
et bien pour tout te dire le format de la date de fabrication est de la forme jj/mm/aaaa

tel cette fonction que j'ai pu t'ecrire comme exemple
<?php

include ("connect.php");
$req="select datefab_prod from produit"; 
$resu=mysql_query($req)or die('Erreur : '.mysql_error() ); 

Function conv_date($str_date) { 
  $year=substr($str_date,0,4); 
  $month=substr($str_date,5,2); 
  $day=substr($str_date,8,2); 
  $retour=date("d-m-Y", mktime($month, $day, $year)); 
 return ($retour); 
}

$aujourdhui = date("d / m / Y"); 
echo $aujourdhui;   
     
$datesupp7 = mktime(0,0,0,date("m"), date("d")+365,date("Y")); 
$dateaffsupp7 = strftime("%d / %m / %Y", $datesupp7);
echo "\n";
echo $dateaffsupp7;


?> 
il faut aussi que tu sache c que le champs date de fabrication je lui est mis un masque de saisie de type jj/mm/aaaa

veux tu aussi voir la fonction ?
si tu veux y jeté un coup d'oeil, j'avais posté ce code dans la partie "developpeur" pour en faire profiT a tout les codeurs... ici

ce qui doit lui etre ajouter ce sont des JOURS uniquement des jours comme le premier script que je t'ai mis par dessus ! le nombre de jours dependra de la selection du produit (dureperempt_prod un chps de ma table produit dont l'unité est le JOURS) fera un + a la date de fabrication

autre renseignement , surtout n'hésite pas ! :wink:

Mammouth du PHP | 543 Messages

01 sept. 2005, 17:05

Le probleme dans ce cas la c'est que l'ajout des jours devra etre fait via javascript si tu veux remplir ca automatiquement apres le remplissage d'un autre champs.
En gros il faut recuperer en bd la durée du produit, pour savoir qu'est ce qui devra etre ajouté par Javascript.

Ensuite ton bouton rafraichir doit appeler la fonction javascript qui ajoute ces jours recuperés en base de données à la valeur du champs date de fabrication.

Eléphant du PHP | 114 Messages

01 sept. 2005, 17:14

oui d'accord mais cela ne m'aide pas bcp dans l'ecriture de la fonction :cry: !!!

Eléphant du PHP | 114 Messages

02 sept. 2005, 09:33

Il n'y a plus personne ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

02 sept. 2005, 09:42

Précision :
lorsque tu crées le formulaire, c'est pour un produit précis, et tu connais donc le nombre de jours à ajouter à la date qui sera saisie ?

Mammouth du PHP | 19672 Messages

02 sept. 2005, 09:44

Quel élément déclencheur appelle ta fonction ? Sans voir ni ton JavaScript ni le code HTML du bout de formulaire, difficile de t'aider beaucoup :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 114 Messages

02 sept. 2005, 11:17

Tout a fait cyrano et bien je vous explique j'ai un peu avancé sur la chose:

comme je vous ais dis j'ai crée une fonction JS qui réalise un masque de saisie du type xx/xx/xxx sur le champs "date de fabrication" ce qui facilite la saisie.
ensuite j'ai reussi a faire une fonction "toute conne" en JS également qui recopie la date de fabrication saisie dans le champs date de péremption avec un évenement déclancheur "onFocus()"

Voici la fonction :

Code : Tout sélectionner

<!-- DEBUT DU SCRIPT recopie dans chps date peremption--> function mainu(formulaire) { var dfab = formulaire.datefab.value; var aff=dfab; formulaire.dateper.value = aff ; } <!-- FIN DU SCRIPT recopie dans chps date peremption -->
et voici le code html pour les 2 champs "date de fabrication" et "date de péremption"
	<tr>
		<td class="Style13"><font color="#336699">Date de fabrication :</td>
	  <td valign="baseline"><input type="text" maxlength="10" size="8" name="datefab" value="jj/mm/aaaa" cellspacing=0 cellpadding=0></td> 
	</tr>
	<tr>
		<td class="Style13"><font color="#336699">Date de péremption :</td>
		<td><INPUT readonly type="text" size="8" maxlength="10" value="click" onClick="mainu(formulaire)" name="dateper" cellspacing=0 cellpadding=0><img onClick="mainu(formulaire)" align="absmiddle" src="./images/admin/raffraichir.gif">
	    </td> 
	</tr>
MAIS parcequ'il y a un mais il faut bien evidement qu'il y ais un AJOUT sur la date de fabrication saisie: l'unité de cette ajout est le JOUR.
et ce jour est un "nombre" se trouvant dans une base de donnée
Car la vous voyez qu'une parti du code mais en réalité il y a 2 liste déroulante lié attaquant ma base (souviens toi cyrano :wink: ) et juste en dessous des champs qui informe l'utilisateur (en détail) de la selection qu'il a réalisé.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

02 sept. 2005, 11:21

moi aussi j'avais posé une question :cry:

car si le formulaire est généré pour un produit précis, en récupérant le nombre de jours tu pourras le passer au Javascript, et utiliser une fonction comme l'avait dit raptor

Eléphant du PHP | 114 Messages

02 sept. 2005, 11:22

Précision :
lorsque tu crées le formulaire, c'est pour un produit précis, et tu connais donc le nombre de jours à ajouter à la date qui sera saisie ?
oui ouckileou c'est pour ajouter un produit mais de maniere selectif et rapide,
c'est a dire que l'utilisateur n'ora plus K selectionné via une liste déroulante le produit qu'il veut ajouter et a quelle catégorie il appartient
(c'est c fais et ca marche nikel)
il en resulte les informations le concernant ds des chps type TEXTE en disabled
(c'est c fais et ca marche nikel)

il n'aura plus K saisis la date de fabrication car chaque produit aura une date de fabrication différente sinon ce que l'on mangera sera pas FRAIS :lol: et automatiquement il en resulte la date de peremption.
car l'ecart EN JOURS est renseigné dans la table de ma base de données.

comprend tu ?

Eléphant du PHP | 114 Messages

02 sept. 2005, 11:26

moi aussi j'avais posé une question :cry:

car si le formulaire est généré pour un produit précis, en récupérant le nombre de jours tu pourras le passer au Javascript, et utiliser une fonction comme l'avait dit raptor
le nombre de jours je peux le récup ca il n'y a pas de probleme. juste une requete avc une clause where ce que l'on a selectionné comme produit.
mais va la date est de la forme 20/04/2005 et si je dois ajouté 15 jours par exemple il faut que lui comprenne bien que soit bien le 5/05/2005 et non pas le 35/04/2005 deja UNE et comment fait tu pour lié une requete (celle qui ira me cherché le nbre de jours correspondant au produit) avec ce que j'ai fais en JS; ET tt ceci dans la meme page sans de POST formulaire vers page2.php ... tu vois pour moi la c un peu flou !
Modifié en dernier par Na!m0r le 02 sept. 2005, 11:28, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

02 sept. 2005, 11:28

en fait si tu as ton nombre de jours, et que tu fais l'ajout en Javascript, tu va écrire le Javascript dynamiquement
$nbJours = 5;
echo '<a href="#" onClick="ajouterJour('.$nbJours.')>Ajouter des jours</a>';
reste à faire la fonction qui va faire le bon calcul en javascript, il faut regarder du coté des manips de dates
tu as cherché sur le net ?

Eléphant du PHP | 114 Messages

02 sept. 2005, 11:39

<?PHP
$aujourdhui = date("d / m / Y"); 
echo $aujourdhui;   

$datesupp7 = mktime(0,0,0,date("m"), date("d")+31,date("Y")); 
$dateaffsupp7 = strftime("%d / %m / %Y", $datesupp7);
echo "\n";
echo $dateaffsupp7;
?> 
ué j'ai commencé aussi a faire un ptit script de teste celui ci affiche la date d'aujourd'hui et affiche une autre date en lui ajoutant 31 jours !

il marche nikel mais je n'ai pas reussi a le faire fonctionné avec une date resultant de ma requete (au lieu de la date du jours de l'exemple ci dessus)

Eléphant du PHP | 114 Messages

02 sept. 2005, 11:42

Oups dsl correction apporté je viens de la faire elle marche nikel

voici le code PHP:
<?PHP
include ('connect.php');
$req="select datefab_prod from produit where id_prod='1'"; 
$resu=mysql_query($req)or die('Erreur : '.mysql_error() ); 
         
        while($data = mysql_fetch_assoc($resu)) 
    {  
	$dateSQL = $data['datefab_prod']; 
    list($y, $m, $d,) = explode("-", $dateSQL);
	
$dateSQL = date("d / m / Y"); 
echo $dateSQL;

$dateSQL = mktime(0,0,0,date("m"), date("d")+31,date("Y")); 
$dateaffsupp7 = strftime("%d / %m / %Y", $dateSQL);
echo "\n";
echo $dateaffsupp7;
}
?>
Et il m'affiche

Code : Tout sélectionner

02 / 09 / 2005 03 / 10 / 2005
la date resultant de ma base est a gauche et celle recalculé est a droite :wink:

Mais maintenant comment faire pour lié tout ce que j'ai deja fais...je suis perdu la dessus !
[/code]
Modifié en dernier par Na!m0r le 02 sept. 2005, 12:07, modifié 3 fois.