Sélection d'affichage

Résolu/Fermé
t671 Messages postés 1470 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 12 février 2025 - Modifié par t671 le 15/03/2016 à 10:27
t671 Messages postés 1470 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 12 février 2025 - 15 mars 2016 à 11:53
Bonjour,

J'ai une partie de script qui m'extrait des date de mariage pour 4 conjoints éventuels.
Je ne voudrais afficher que les 4 derniers caractères, soit l'année.
Mais je n'arrive pas à modifier cette partie de script dans ce sens.
$tonarray = array($link);

 if (!empty($row4['date_mariage_1']))
 {
  $marg_1 = substr($row4['date_mariage_1'], -4);
  $date_marg1 = explode (" ",$row4['date_mariage_1']);
  if ($date_marg1[0] == "Avant")
  { $marg_1 = $marg_1 - 1 ; }
  if ($date_marg1[0] == "Après" || $date_marg1[0] == "Entre" || $date_marg1[0] == "Vers")
  { $marg_1 = $marg_1 + 1 ; }
 }
 if (!empty($row4['date_mariage_2']))
 {
  $marg_2 = substr($row4['date_mariage_2'], -4);
  $date_marg2 = explode (" ",$row4['date_mariage_2']);
  if ($date_marg2[0] == "Avant")
  { $marg_2 = $marg_2 - 1 ; }
  if ($date_marg2[0] == "Après" || $date_marg2[0] == "Entre" || $date_marg2[0] == "Vers")
  { $marg_2 = $marg_2 + 1 ; }
 }
 if (!empty($row4['date_mariage_3']))
 {
  $marg_3 = substr($row4['date_mariage_3'], -4);
  $date_marg3 = explode (" ",$row4['date_mariage_3']);
  if ($date_marg3[0] == "Avant")
  { $marg_3 = $marg_3 - 1 ; }
  if ($date_marg3[0] == "Après" || $date_marg3[0] == "Entre" || $date_marg3[0] == "Vers")
  { $marg_3 = $marg_3 + 1 ; }
 }
 if (!empty($row4['date_mariage_4']))
 {
  $marg_4 = substr($row4['date_mariage_4'], -4);
  $date_marg4 = explode (" ",$row4['date_mariage_4']);
  if ($date_marg4[0] == "Avant")
  { $marg_4 = $marg_4 - 1 ; }
  if ($date_marg4[0] == "Après" || $date_marg4[0] == "Entre" || $date_marg4[0] == "Vers")
  { $marg_4 = $marg_4 + 1 ; }
 }

 $tonarray[0]=array("mariage" => '$marg_1' ,"date_mariage" => $row4['date_mariage_1'] , "conjoint" => $row4['num_cj_1'] , "acte_mariage" => $row4['acte_mariage_1']);
 $tonarray[1]=array("mariage" => '$marg_2' ,"date_mariage" => $row4['date_mariage_2'] , "conjoint" => $row4['num_cj_2'] , "acte_mariage" => $row4['acte_mariage_2']);
 $tonarray[2]=array("mariage" => '$marg_3' ,"date_mariage" => $row4['date_mariage_3'] , "conjoint" => $row4['num_cj_3'] , "acte_mariage" => $row4['acte_mariage_3']);
 $tonarray[3]=array("mariage" => '$marg_4' ,"date_mariage" => $row4['date_mariage_4'] , "conjoint" => $row4['num_cj_4'] , "acte_mariage" => $row4['acte_mariage_4']);
 
 sort($tonarray);
 
 for($i=0; $i<=3; $i++)
 {
  if ($tonarray[$i]['conjoint'] != "") 
  { 
     $query44 = 'SELECT * FROM individus WHERE num_indiv LIKE '.$tonarray[$i]['conjoint'].' ';   
     $result44 = mysqli_query($link,$query44) or die(mysqli_error($link));
     $row44 = mysqli_fetch_array($result44);

     echo 'X : '.$tonarray[$i]['date_mariage'].'';

date_mariage_1,2,3,4 correspond à la date de mariage extraite de la base.
La date peut être précédée de "Avant", "Après", "Vers".
num_cj_1,2,3,4 correspond au numéro du conjoint.
echo 'X : '.$tonarray[$i]['date_mariage'].''; => affiche la date de mariage complète, alors que je ne voudrais afficher que les 4 derniers caractères qui correspondent à "$marg_1 = substr($row4['date_mariage_1'], -4);" (idem pour 2,3 et 4).

Merci si vous pouvez m'aider.

2 réponses

jordane45 Messages postés 38430 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 février 2025 4 735
15 mars 2016 à 11:47
Bonjour,

Je pense qu'il y a là .. une petite erreur de conception de ta BDD..

Plus exactement....

date_mariage_1,2,3,4 correspond à la date de mariage extraite de la base.
La date peut être précédée de "Avant", "Après", "Vers".


1 - Une date, se stocke, dans une BDD, dans un champ de type DATE (et donc au format Y-m-d )

2 - Si il te faut l'information... AVANT .. APRES.... tu n'as qu'à ajouter une CHAMP supplémentaire dans ta table pour l'y mettre

3 - Une fois ces corrections faites, tu pourras alors, sans difficulté, récupérer l'année directement via ta REQUETE ... grâce à la fonction YEAR
par exemple :
SELECT YEAR(champdate) as ANNEE
FROM tatable


0
t671 Messages postés 1470 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 12 février 2025 11
15 mars 2016 à 11:53
Le script que j'ai noté plus haut fonctionne. Je récupère et j'affiche la date entière. Mais je voudrais n'afficher que les 4 derniers caractères de la date, quelle que soit cette date !
0