begin process at 2012 05 29 02:15:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Conversion chaine de caractères en date fr avec substr


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Conversion chaine de caractères en date fr avec substr

mardi 28 octobre 2008 à 11:36:49 | Conversion chaine de caractères en date fr avec substr

bruno3591

Bonjour,

Je suis débutant en php. Pouvez-vous me dire si la solution que j'ai trouvé pour convertir ma chaine en date est bonne, trop longue ou autre... ? A l'exécution ça fonctionne chez moi. Merci.

$date = $_POST['chaine'];

    $jour = substr($date, 0, 2);
    $mois = substr($date, 2, 2);
    $annee = substr($date, 4, 7);

    $result = $jour . '/' . $mois . '/' . $annee;
echo $result;
mardi 28 octobre 2008 à 11:53:05 | Re : Conversion chaine de caractères en date fr avec substr

jreaux62

Réponse acceptée !
Bonjour, tout depend dans quel format est la date de depart, et dans quel format tu veux la transformer.
Dans une BD, le format DATE est de la forme AAAA-MM-JJ ...

Apparemment, ta chaine de depart est toujours de la forme 'JJMMAAAA' ?
Et tu veux qu'elle soit en JJ/MM/AAAA ?
Dans ce cas, a priori, c'est bon.
mardi 28 octobre 2008 à 12:04:11 | Re : Conversion chaine de caractères en date fr avec substr

coucou747

Administrateur CodeS-SourceS
salut
ca me semble correct (en testant, t'aurais pu en etre sur...)

sur phpcs, t'as des tonnes de scripts pour les dates sinon.
mardi 28 octobre 2008 à 12:52:34 | Re : Conversion chaine de caractères en date fr avec substr

bruno3591

Apparemment, ta chaine de depart est toujours de la forme 'JJMMAAAA' ?
Et tu veux qu'elle soit en JJ/MM/AAAA ?

Oui je pars d'une date type 23102008, donc à l'exécution du script je passe bien en 23/10/2008 pour ensuite passer par un STR_TO_DATE dans une requête d'insertion.

Historique :

Au départ je voulais comparer 2 dates. Problème, mes dates sont saisies en chaine de la forme 23/10/2008.
Pour les comparer je devais enlever les "/", pour cela j'utilise : echo implode('', (explode('/', $date1)));
Je compare mes 2 chaines jjmmaaaa > jjmmaaaa
Je convertis de nouveau en jj/mm/aaaa et j'insert dans un champ date  de ma table, avec str_to_date qui me convertit la date au format aaaa/mm/jj avant d'insérer.

Est-il plus courant d'utiliser explode à la place de substr ?

Je ne sais pas si je me complique la vie, mais pour le moment j'ai pas trouvé plus court.
mardi 28 octobre 2008 à 15:35:29 | Re : Conversion chaine de caractères en date fr avec substr

jreaux62

Si c'est uniquement pour inserer dans la base de donnees au format DATE,
il est plus simple de transformer ta chaine JJMMAAAA directement au format DATE de la BD, c-a-d AAAA-MM-JJ (verifie dans la BD !)
<?php

$date = $_POST['chaine'];
    // decomposition de la date recue (jjmmaaaa)
    $jj = substr($date, 0, 2);
    $mm = substr($date, 2, 2);
    $aaaa = substr($date, 4, 7);
    // date au format DATE (aaaa-mm-jj)
    $dateBD = $aaaa.'-'.$mm.'-'.$jj;
echo $dateBD;
// et on l enregistre tel quel dans la BD
?>
mardi 28 octobre 2008 à 15:44:53 | Re : Conversion chaine de caractères en date fr avec substr

bruno3591

Je dois comparer les dates avant d'insérer. :)
mercredi 29 octobre 2008 à 16:09:25 | Re : Conversion chaine de caractères en date fr avec substr

bruno3591

Suite à cette comparaison, j'ai mis en place mon script définitif, le problème c'est que maintenant la date ne s'enregistre plus dans ma base, je n'ai que des 0000-00-00.

vous avez une idée ?

if (isset($_POST['enregistrer']))
{

$id = $_POST['id'];
$nom = $_POST['liste1'];
$nature = $_POST['nature'];
$nbjour = $_POST['nbjour'];
$date1 = $_POST['dateDebut'];
$date2 = $_POST['dateFin'];

//Conversion de la chaine de caractères jj/mm/aaaa en jjmmaaaa :
$date_test1 = implode('', (explode('/', $date1)));
$date_test2 = implode('', (explode('/', $date2)));

//On compare les dates
if ($date_test1 >= $date_test2) {

//Si la condition est vérifiée on convertit au format jj/mm/aaaa
    $jour = substr($date_test1, 0, 2);
    $mois = substr($date_test1, 2, 2);
    $annee = substr($date_test1, 4, 7);

    $date_Debut = $jour . '/' . $mois . '/' . $annee;
   
    $jour = substr($date_test2, 0, 2);
    $mois = substr($date_test2, 2, 2);
    $annee = substr($date_test2, 4, 7);

    $date_Fin = $jour . '/' . $mois . '/' . $annee;
}   
//On insére les données comparés   
$req = mysql_query("INSERT INTO absence (id, nom, nature, nbjour, debut, fin) VALUES ('','$nom','$nature','$nbjour',STR_TO_DATE('$dateDebut', '%d/%m/%Y'),STR_TO_DATE('$dateFin', '%d/%m/%Y') )");

echo "<script>alert('Enregistrement effectué !')</script>";  
}

 else {
echo "<script>alert('L'enregistrement a échoué !')</script>";  
}



Cette discussion est classée dans : date, chaine, conversion, caractères, substr


Répondre à ce message

Sujets en rapport avec ce message

conversion de date [ par Joez ] voila je récupère la date de mysql sous la forme 2002-01-02 10:43:32 et je voudrais afficher cette date sous la forme Lundi 02 janvier 2002 à 10h4 Comment rechercher un mot dans une chaine de caractères ? [ par Drazounet ] Bonjours à tous,Je suis en train de programmer un forum en php et maintenant je suis en train de lui ajouter une section "recherche" afin de trouver p Découpage de chaine de caractères [ par DJDX ] Mon problème, est le suivant... Dans ma base de donnée MySQL, j'ai des liens sous le format http://www.blabla.com*blab1/bla2. J'aimerais savoir commen ajouter des jours à une date? [ par cedd ] Bonjour!Petit problème: je récupère une chaine de caractères qui est une date, de la forme 23/03/2004(enfin, je peux la mettre autrement si besoin es Problème d'affichage de date dans un Ajout [ par vir76 ] Bonjour,Dans ma base de données MySQL, j'ai un champ 'COMMANDE_DATE' avec pour format TIMESTAMP.Pour la visualisation, grâce à un SELECT DATE_FORMAT, affichage d'une date JJ/MM/AAAA dans une recherche [ par vir76 ] Salut tout le monde,J'ai fait la fonction suivante :function datemysql($date){$annee=substr($date,7,4);$mois=substr($date,4,2);$jour=substr($date,0,2) conversion date [ par youyou26 ] je veux juste convertir une date dd/mm/yyyy en yyyy-mm-dd ou tt simplement yyyymmdd.la $Dte m'affiche dd/mm/yyyy dans le calendrier et ce que je veux Chaine de caractères [ par stailer ] Bonjour,J'ai une chaine de caractère dans une variable qui se finit toujours par une virgule... c'est voulu.Mais y a un moment ou j'aimerais l'enlever Tronquer une chaine de caractères [ par youp49 ] Bonjour,Je cherche à tronquer une variable qui peut être différente selon son utilisation.Voici un exemple d'une variable à tronquer :$mavar = ".....p Parser une chaine de caractères [ par Suru_Verbal ] Bonjour à tous,Quelle fonction utiliser s'il en existe une pour parser une chaine de caractères ?Merci d'avance !


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,187 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales