problème de date

Eléphant du PHP | 131 Messages

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

Mammouth du PHP | 959 Messages

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....

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

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é :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 131 Messages

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>';

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

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
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

Eléphant du PHP | 131 Messages

09 juil. 2007, 17:53

SOS pas encore de solution

ViPHP
ViPHP | 1996 Messages

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
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 259 Messages

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 !

Eléphant du PHP | 131 Messages

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);

?>

Eléphant du PHP | 73 Messages

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
nouveau dans le monde du php
Maître du phpinfo() ce n'est pas rien tout de même xD

Eléphant du PHP | 131 Messages

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

Eléphant du PHP | 73 Messages

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.
nouveau dans le monde du php
Maître du phpinfo() ce n'est pas rien tout de même xD

d0m
Mammouth du PHP | 1141 Messages

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.

Eléphant du PHP | 259 Messages

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 ! :)