Transformer une date au format JJ-MM-AAAA

ns_deux
Invité n'ayant pas de compte PHPfrance

04 oct. 2006, 06:26

Bonjour à tous.
Tout d'abord merci à ce site qui m'est d'un grand secours à chaque fois. ;-)
J'ai un petit soucis de formatage de date dans une requete generique.
Je m'explique:
J'ai un formulaire de recherche php (recherche.php) qui marche tres bien avec un calendrier qui me permet de choisir une date au format AAAA-MM-JJ afin de pouvoir interroger ma base mysql.
Par souci d'esthetisme, je voudrais que ma date soit au format JJ-MM-AAAA. (cà, j'ai reussi à le faire dans la formulaire recherche.php) par contre dans mon module recherche_resultat.php en POST, jai une requete generique et là je n'arrive pas à retransformer ma date en format AAAA-MM-JJ exploitable par mysql.
Voilà le code de ma page recherche_resultat.php
<?php
//...
// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$tbl=array('materiel', 'unite', 'modele', 'utilisation', 'cie', 'winpark', 'origine', 
           'instance_reforme', 'cie', 'numero', 'lettre_de_cde', 'date_installation', 
           'nom_csav', 'position', 'date_fin_garantie', 'date_verif', 'oam', 'famille', 
           'code_article', 'lettre_de_cde', 'grpt_ou');
// Là il faut que je remette la date_installation du post en format AAAA-MM-JJ pour etre exploitable par la requete generique ci-dessous
foreach ($tbl as $champ) {
$$champ='';
if (isset($_POST[$champ])) {
if (trim($_POST[$champ])!='') {
$$champ=trim($_POST[$champ]);
if ($requete!="") $requete .=' AND ';
$requete .= '`'.$champ."` like '%".mysql_real_escape_string($$champ)."%'"; 
}
}
if ($requete != "")
{
 $req ="SELECT * FROM `materiel` WHERE ".$requete; 
}
else
{
$req ="SELECT * FROM `materiel` "; 
}
} 

$result = mysql_query($req,$connect) or die ('<br><br><br><center>La reponse ne contient aucun enregistrement <br><br> ou <br><br> une erreur est survenue qui est : '.mysql_error().'</center>' );
$total = mysql_num_rows($result);
?>
Si qqun pouvait m'aider....
Merci d'avance

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 oct. 2006, 07:30

Je pense que ce sujet de la FAQ pourra t'aider ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

zarbrok
Invité n'ayant pas de compte PHPfrance

04 oct. 2006, 13:48

Code : Tout sélectionner

<? $date = "2006-10-04"; /* date us ->fr */ function tofrench($date) { $date = explode('-',$date); $date2 = "$date[2]-$date[1]-$date[0]"; return $date2; } $date_en_francais = tofrench($date) ; ?> ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 oct. 2006, 15:04

:? euh, bonjour zarbrok

C'est certes sympatique de ta part de participer, mais ce n'est pas dans l'esprit du forum de donner du code tout cuit et encore moins de le fournir sans aucune explications ...
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

zarbrok
Invité n'ayant pas de compte PHPfrance

04 oct. 2006, 21:03

:oops:
je suis désolé tu peux effacer le post si tu veux ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 oct. 2006, 21:05

Bien sur que non, ton intervention est tout a fait valide dans le sens où tu apportes une solution au problème posé.

Ce que je tenais à te faire remarquer, c'est que si tu expliques ton code, ns_deux le comprendra surement et, même s'il fait copier/coller, il a des chances qu'il comprenne ce qu'il fait ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

zarbrok
Invité n'ayant pas de compte PHPfrance

04 oct. 2006, 21:18

plus serieusement je détaille...
donc

Code : Tout sélectionner

<? function tofrench($date_us) { // donc on recupere la variable '$date_us' passer en attribut // ensuite on recupere les annees, mois, jours separes par des '-' // dans un tableau '$date' grace à la fonction explode $date = explode('-',$date_us); // on recupere dans le tableau '$date' : // '$date[2]' >>> càd le jour // '$date[1]' >>> càd le mois // '$date[0]' >>> càd l'annee // on separe chaque jour, mois, annee par des '-' $date_francais = "$date[2]-$date[1]-$date[0]"; // on retourne le tout et le tour est joué return $date_francais; } echo tofrench($date_us) ; // (",) ?>
:wink:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

04 oct. 2006, 23:08

:pouce: :wink:

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

05 oct. 2006, 00:43

Notez l'existence de strtotime() qui permet de convertir les dates issues de MySQL (entre autres) en timestamp, que l'on peut ensuite passer à date() et formater de la façon dont on le souhaite.

thegritch
Invité n'ayant pas de compte PHPfrance

23 oct. 2006, 11:26

Ou encore date_format() en mysql (très pratique et rapide) Evitant les converstions de date en php.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

23 oct. 2006, 11:49

Mieux vaut faire faire le boulot par MySQL ;) ça te fera moins de PHP. Par ailleurs, les SELECT *, c'est le mal !
Tu prends tout au lieu de ce qui est utile seulement, et tu es obligé d'aller voir dans la base le nom des champs.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.