Requète pour extraire à une date le mois et l'année

Résolu
LaChaux78 Messages postés 583 Date d'inscription   Statut Membre Dernière intervention   -  
LaChaux78 Messages postés 583 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour, j'ai une requète SQL qui permet d'extraire à une date, le mois et l'année. J'ai testé cette requète sur MySql et le résultat est satisfaisant. Par contre sur ma page PHP le résultat est nul, je ne comprends pas pourquoi voici la requète. Je vous remercie pour votre aide.

SELECT idcalen, ancalen, dacalen, DATE_FORMAT(dacalen, '%b %Y') AS moisAN FROM bag_calendrier ORDER BY dacalen ASC

Et ci-dessous mon code PHP

		echo '<div id="tablo">';		

	// Lister tous les enregistrements avec un lien pour effectuer la modif d'un enregistrement
	$sql = "SELECT idcalen, ancalen, dacalen, DATE_FORMAT(dacalen, '%b %Y') AS moisAN FROM bag_calendrier ORDER BY dacalen ASC";
	$result = executeQuery($sql);
	$an = 0;	// Initialiser les années
	
	while ($donnees = $result->fetch()) {
		if($donnees->moisAN != $an) {	// Si on change d'année
			echo '<h2>'.$donnees->moisAN.'</h2>';	// Indiquer le Mois et l'année
			$an = $donnees->moisAN;	
		}
		$lien = $_SERVER["PHP_SELF"].'?a=mod&amp;idcalen='.$donnees->idcalen;
		echo '<li><a href="'.$lien.'">'.ucfirst(trim(dateFR($donnees->dacalen))).'</a></li>';
    }
		echo '</div>';
A voir également:

4 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

Bonjour,

Tu es en PDO ?  Si oui, as appliqué ceci ?

https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

Que contient ta fonction executeQuery ?


0
LaChaux78 Messages postés 583 Date d'inscription   Statut Membre Dernière intervention   32
 

Bonjour, oui je suis bien en PDO et j'ai bien activé l'affichage des erreurs. Voici ce que contient la fonction "executeQuery" Je vous remercie.

function executeQuery($sql,$datas = NULL) {
    $bdd = bdd();
	
	//On vérifie que la variable sql n'est pas vide
	if(empty($sql)){
		echo "Erreur !  La variable sql est vide !! <br><pre>";
		//var_dump(debug_backtrace());
		echo "</pre>";
		exit;
	}
	
    //exécution de la requête
    try {
        $requete = $bdd->prepare($sql);
        $requete->execute($datas);
    } catch(Exception $e) {
      // en cas d'erreur :
        echo " Erreur ! ".$e->getMessage();
        exit(0); // en cas d'erreur.. arrête le script !
    }
    return $requete;
}

voici ma connexion à ma BDD avec le try/catch

<?php session_start();

date_default_timezone_set('Europe/Paris');
error_reporting(E_ALL ^ E_NOTICE);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

function bdd() {   
    $PARAM_hote        	='';     	
    $PARAM_nom_bdd     	='bandag'; 	
    $PARAM_utilisateur 	='root';          	
    $PARAM_mot_passe   	='';

    try {
	$bdd = new PDO('mysql:host=' . $PARAM_hote . ';dbname=' . $PARAM_nom_bdd, $PARAM_utilisateur, $PARAM_mot_passe);
	$bdd->exec("SET CHARACTER SET utf8");
	$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
	$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    catch(Exception $e) {
	echo 'Impossible de se connecter à la base de donnée</br>';
	echo 'Erreur : ' .  $e->getMessage() . '<br />';
	echo 'N° : ' .      $e->getCode();
    }
    return $bdd;
}
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

ok parfait.

Alors que te donne ceci ?

echo '<div id="tablo">';		

// Lister tous les enregistrements avec un lien pour effectuer la modif d'un enregistrement
$sql = "SELECT idcalen, ancalen, dacalen, DATE_FORMAT(dacalen, '%b %Y') AS moisAN FROM bag_calendrier ORDER BY dacalen ASC";
$result = executeQuery($sql);


echo "<pre>";
var_dump($result->fetchAll() );
echo "</pre>";
exit;
/*
$an = 0;	// Initialiser les années

while ($donnees = $result->fetch()) {
  if($donnees->moisAN != $an) {	// Si on change d'année
    echo '<h2>'.$donnees->moisAN.'</h2>';	// Indiquer le Mois et l'année
    $an = $donnees->moisAN;	
  }
  $lien = $_SERVER["PHP_SELF"].'?a=mod&idcalen='.$donnees->idcalen;
  echo '<li><a href="'.$lien.'">'.ucfirst(trim(dateFR($donnees->dacalen))).'</a></li>';
}
*/
echo '</div>';
0
LaChaux78 Messages postés 583 Date d'inscription   Statut Membre Dernière intervention   32
 

cela me parait bien!

array (size=4)
  0 => 
    object(stdClass)[4]
      public 'idcalen' => string '1' (length=1)
      public 'ancalen' => string '2024' (length=4)
      public 'dacalen' => string '2024-10-05' (length=10)
      public 'moisAN' => string 'Oct 2024' (length=8)
  1 => 
    object(stdClass)[3]
      public 'idcalen' => string '4' (length=1)
      public 'ancalen' => string '2024' (length=4)
      public 'dacalen' => string '2024-10-17' (length=10)
      public 'moisAN' => string 'Oct 2024' (length=8)
  2 => 
    object(stdClass)[8]
      public 'idcalen' => string '2' (length=1)
      public 'ancalen' => string '2024' (length=4)
      public 'dacalen' => string '2024-11-12' (length=10)
      public 'moisAN' => string 'Nov 2024' (length=8)
  3 => 
    object(stdClass)[9]
      public 'idcalen' => string '3' (length=1)
      public 'ancalen' => string '2025' (length=4)
      public 'dacalen' => string '2025-01-09' (length=10)
      public 'moisAN' => string 'Jan 2025' (length=8)
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

Donc ta requete retourne bien quelque chose...

le souci se trouve donc dans le reste de ton programme

0
LaChaux78 Messages postés 583 Date d'inscription   Statut Membre Dernière intervention   32
 

Bonjour au lieu d'initialiser $an = 0; j'ai initialisé $an = ''; et ça fonctionne je te remercie.

0