Sélection d'affichage

Résolu
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -  
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
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