problème de date

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème de date

par Jules Petibidon » 02 août 2007, 18:16

Hello,

La solution à ton problème tu l'as, je te l'ai donné. Et Pierig t'en a donné une autre (mais vachement moins bien ! :p )

L'étape suivante donc sera d'apprendre à déclarer une fonction et à l'utiliser.

Petite astuce gratuite, tester des bouts de code au lieu de copier/coller des usines à gaz, c'est pas mal... si si ! :)

Re: problème de date

par d0m » 02 août 2007, 15:56

comment l'afficher sous cette forme Août
Avec la fonction date afficher les jours de la semaine et mois en toute lettre mais que en anglais.
Si tu veux l'afficher en francais, il faut faire un tableau/fonction de correspondance ou tu passe en index/paramètre le numéro du mois et qui te retourne la chaine du mois correspondante.

par Pierig » 02 août 2007, 15:48

je croit que j'ai comprit ton problème.

Si tu utilise cette fonction :
	function dateToTimeStamp($date){
		if (!empty($date)){
			list($jf,$mf,$af)= explode("/",$date);
			$timeStamp = mktime(0,0,0,$mf,$jf,$af);
			return($timeStamp);
		}
	}
ça te mettra la date au format timestamp unix et ensuite tu utilise la fonction que j'ai donner plus haut et normallement ça devrait être bon.

problème de date

par 001cod10 » 02 août 2007, 15:44

Voici ce que j'avais comme résultat

02/08/2007

je recupere le mois de cette façon

$mois = substr($row['date'],5,2);

comment l'afficher sous cette forme Août

par Pierig » 02 août 2007, 13:22

Je pense que cette fonction te plaira ;)
function datefr(){
		$userDate = mktime();
		$mois = array('décembre' , 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre'); 
		$jours = array('dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi');
		return $jours[date("w", $userDate)] . " " . date("d", $userDate) . " " .   $mois[date("n", $userDate)] . " " . date("Y", $userDate);
	}
Il suffit de modifier la variable $userDate et hop c'est dans le sac

problème de date

par 001cod10 » 02 août 2007, 12:26

Toujours pas réglé mon problème de date.

Je poste mon script pour que vous puissiez m'aider efficacement.

<?php
function barre_navigation ($nb_total, 
        $nb_affichage_par_page, 
        $debut,
        $nb_liens_dans_la_barre) {

    $barre = '';
    
    // on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'debut' qui jouera le role du premier élément de notre LIMIT
    if ($_SERVER['QUERY_STRING'] == "") {
        $query = $_SERVER['PHP_SELF'].'?debut=';
    }
    else {
        $tableau = explode ("debut=", $_SERVER['QUERY_STRING']);
        $nb_element = count ($tableau);
        if ($nb_element == 1) {
            $query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut=';
        }
        else {
            if ($tableau[0] == "") {
                $query = $_SERVER['PHP_SELF'].'?debut=';
            }
            else {
                $query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut=';
            }
        }
    }
    
    // on calcul le numéro de la page active
    $page_active = floor(($debut/$nb_affichage_par_page)+1);
    // on calcul le nombre de pages total que va prendre notre affichage
    $nb_pages_total = ceil($nb_total/$nb_affichage_par_page);
    
    // on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin)
    // exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11
    if ($nb_liens_dans_la_barre%2==0) {
        $cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1;
        $cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2);
    }
    else {
        $cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2));
        $cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2));
    }
    
    if ($cpt_deb1 <= 1) {
        $cpt_deb = 1;
        $cpt_fin = $nb_liens_dans_la_barre;
    }
    elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total) {
        $cpt_deb = $cpt_deb1;
        $cpt_fin = $cpt_fin1;
    }
    else {
        $cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1;
        $cpt_fin = $nb_pages_total;
    }

    if ($nb_pages_total <= $nb_liens_dans_la_barre) {
        $cpt_deb=1;
        $cpt_fin=$nb_pages_total;
    }
    
    // si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page
    if ($cpt_deb != 1) {
        $cible = $query.(0);
        $lien = '<A HREF="'.$cible.'"><<</A>&nbsp;&nbsp;';
    }
    else {
        $lien='';
    }
    $barre .= $lien;

    // on affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active
    for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) {
        if ($cpt == $page_active) {
            if ($cpt == $nb_pages_total) {
                $barre .= $cpt;
            }
            else {
                $barre .= $cpt.'&nbsp;-&nbsp;';
            }
        }
        else {
            if ($cpt == $cpt_fin) {
                $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
                $barre .= "'>".$cpt."</A>";
            }
            else {
                
                $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
                $barre .= "'>".$cpt."</A>&nbsp;-&nbsp;";
            }
        }
    }
    
    $fin = ($nb_total - ($nb_total % $nb_affichage_par_page));
    if (($nb_total % $nb_affichage_par_page) == 0) {
        $fin = $fin - $nb_affichage_par_page;
    }

        // si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation
    if ($cpt_fin != $nb_pages_total) {
        $cible = $query.$fin;
        $lien = '&nbsp;&nbsp;<A HREF="'.$cible.'">>></A>';
    }
    else {
        $lien='';
    }
    $barre .= $lien;

    return $barre;    
}

// information pour la connection à le DB
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'base';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
$sql  = 'SELECT count(*) FROM Table';

// on exécute cette requête
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

// on récupère le nombre d'éléments à afficher
$nb_total = mysql_fetch_array($resultat);

// on teste si ce nombre de vaut pas 0
if (($nb_total = $nb_total[0]) == 0) {
    echo 'Aucune réponse trouvée';
}
else {
    echo '<table border="0" width="100%">';
    // sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
    if (!isset($_GET['debut'])) $_GET['debut'] = 0;
    
    $nb_affichage_par_page = 1;
// requête SQL qui compte le nombre total d'enregistrements dans la table et qui
//récupère tous les enregistrements
$select = "SELECT typevent,cp,ville,adresse,description,prix,prevente,lieu,dateevent FROM Table  LIMIT ".$_GET['debut'].",".$nb_affichage_par_page;
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);


// si on a récupéré un résultat on l'affiche.
if($total) {
    // première ligne on affiche les titres prénom et surnom dans 2 colonnes
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
    while($row = mysql_fetch_array($result)) {
	$annee = substr($row['dateevent'],0,4);
	$mois = substr($row['dateevent'],5,2);
    $jour = substr($row['dateevent'],8,2);
	function date2fr( $dateevent ){ 
    $reps_EN = array( ':1' , ':2' , ':3' , ':4' , ':5' , ':6' , ':0' , '|st|' , '|nd|' , '|rd|' , '|th|' , '||' , 'January' , 'February' , 'March' , 'April' , 'May' , 'June' , 'July' , 'August' , 'September' , 'October' , 'November' , 'December' ); 
    $reps_FR = array( 'lundi' , 'mardi' , 'mercredi' , 'jeudi' , 'vendredi' , 'samedi' , 'dimanche' , '<sup>er</sup>' , '' , '' , '' , '' , 'janvier' , 'février' , 'mars' , 'avril' , 'mai' , 'juin' , 'juillet' , 'août' , 'septembre' , 'octobre' , 'novembre' , 'décembre' ); 
     
    return str_replace( $reps_EN, $reps_FR, date( ':w j|S| F Y' , strtotime( $dateevent ) ) ); 
} 

	$dateevent ="$jour-$mois-$annee";
	    echo '<tr><td colspan="4" background="Photo 035.jpg">&nbsp;<td >&nbsp;&nbsp;</td></tr>';
	    echo '<tr><td>&nbsp;<td >&nbsp;&nbsp;</td></tr>';
	    echo '<tr>';
        echo '<td><center><font face="Verdana, Arial, Helvetica, sans-serif" size="+1"color="#0000FF" size="+2"><b>'.$row['typevent'].'</center></b></td>';
        echo '</tr>'."\n";
		echo '<tr>';
		echo '<td><center><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000" size="">'.$dateevent.'</center></td>';
        echo '</tr>'."\n";
		echo '<tr>';
        echo '<td><center><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000" size="">'.$row['lieu'].'</center></td>';
        echo '</tr>'."\n";
		echo '<tr>';
        echo '<td><center><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000" size="">'.$row['adresse'].'</center></td>';
        echo '</tr>'."\n";
		echo '<tr>';
        echo '<td><center><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000" size="">'.$row['cp'].'&nbsp;&nbsp;<font face="Verdana, Arial, Helvetica, sans-serif" color="#000000" size="">'.$row['ville'].'</center></td>';
		echo '</tr>'."\n";
		echo '<tr>';
        echo '<td><center><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000" size="">'.$row['prix'].'€</center></td>';
        echo '</tr>'."\n";
    }
	echo '<tr>';
        echo '<td><center><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000" size=""></center></td>';
        echo '</tr>'."\n";
	echo '<tr><td><center><span class="gras"><font face="Verdana, Arial, Helvetica, sans-serif" color="#800000" size="+2"><b>'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 3).'</b></font></span></td></center></tr>';
   }
    else echo 'Pas d\'enregistrements dans cette table...';
	}
	echo '<tr><td>&nbsp;<td >&nbsp;&nbsp;</td></tr>';
	echo '<tr><td>&nbsp;<td >&nbsp;&nbsp;</td></tr>';
	echo '<tr><td>&nbsp;<td >&nbsp;&nbsp;</td></tr>';
	
	echo '</table>'."\n";
    // fin du tableau.
	
// on libère le résultat
mysql_free_result($result);

?>

par Jules Petibidon » 09 juil. 2007, 22:41

Hello,

Allez pour te dépanner, voici une fonction qui devrait répondre à ton problème :
function date2fr( $date ){
	$reps_EN = array( ':1' , ':2' , ':3' , ':4' , ':5' , ':6' , ':0' , '|st|' , '|nd|' , '|rd|' , '|th|' , '||' , 'January' , 'February' , 'March' , 'April' , 'May' , 'June' , 'July' , 'August' , 'September' , 'October' , 'November' , 'December' );
	$reps_FR = array( 'lundi' , 'mardi' , 'mercredi' , 'jeudi' , 'vendredi' , 'samedi' , 'dimanche' , '<sup>er</sup>' , '' , '' , '' , '' , 'janvier' , 'février' , 'mars' , 'avril' , 'mai' , 'juin' , 'juillet' , 'août' , 'septembre' , 'octobre' , 'novembre' , 'décembre' );
	
	return str_replace( $reps_EN, $reps_FR, date( ':w j|S| F Y' , strtotime( $date ) ) );
}
Cela devrait te permettre d'obtenir un résultat assez propre.

Accessoirement tu devrais essayer de l'étudier un peu, voir les capacités des fonctions date() et strtotime(), qui rendent d'énormes services.

Bon courage !

par Aureusms » 09 juil. 2007, 22:13

Je pense que les étapes précédentes sont bonnes... tu créé un tableau associatif avec les en clé les n° de mois et en valeur le noms des mois :
$num_mois = array (
  01 => "Janvier",
  02 => "Février",
  03 => "Mars",
...
)
Ensuite au lieu d'écrire :
$date = "$jour-$mois-$annee";
tu fais
$date = $jour." ".$num_mois[$mois]." ".$annee; // j'iame bien concaténer lol
et ca devrait fonctionner

problème de date

par 001cod10 » 09 juil. 2007, 17:53

SOS pas encore de solution

par zeus » 09 juil. 2007, 16:48

Modération :
001cod10, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

par 001cod10 » 09 juil. 2007, 16:44

En appliquant les deux conseils rien ne s'affiche quand je veux afficher ma recherche.

voici ce que j'ai fait :
$annee = substr($data['date'],0,4);
    //$mois = substr($data['date'],5,2);
	$mois=str_replace('01', 'janvier', substr($data['date'],5,2)); 
    $jour = substr($data['date'],8,2);
    $date = "$jour $mois $annee";

echo '<tr><td>',stripslashes(htmlentities(trim($dateevent))) , '</td></tr>';

par Ryle » 09 juil. 2007, 14:35

Pour être précis, le résultat de "$jour-$mois-$annee" devrait être "09-07-2007". Tu as donc déjà le jour et l'année, si tu remplace les tirets par des espaces et que tu vas chercher le nom du mois par rapport à son numéro (dans un tableau associatif par exemple), tu devrais facilement réussir à obtenir le résultat souhaité :)

par chrislabricole » 09 juil. 2007, 13:52

ben déja, pour les mois, tu peut utilisez des str_replace() ... :wink:
sa devrer donner :
str_replace('01', 'janvier', substr($data['date'],5,2));
etc....

problème de date

par 001cod10 » 09 juil. 2007, 13:05

Salut à tous,

j'aimerai afficher la date sous cette forme le lundi 09 Juillet 2007. Voici le code qui me permet d'afficher la date qui se trouve dans ma base de données.
annee = substr($data['datet'],0,4);
    $mois = substr($data['date'],5,2);
    $jour = substr($data['date'],8,2);
    $date = "$jour-$mois-$annee"; 
Résultat 09/07/2007