Tester et remplacer une expression [Fermé]

Signaler
Messages postés
1288
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
5 mars 2020
-
mimigenie
Messages postés
1189
Date d'inscription
dimanche 3 janvier 2010
Statut
Membre
Dernière intervention
4 août 2018
-
Bonjour,


Dans un formulaire, je récupère une date qui peut être de différent format :
10 décembre 2011, ou 10 DECEMBRE 2011, ou avant le 10 decembre 2011, ou après le 10 décembre 2011, ........... Soit dit, de différent format selon la saisie.

Je voudrais récupérer uniquement le mois saisie, et l'enregistrer dans ma base sur 3 lettres. Donc, si décembre, j'enregistre DEC. Si Janvier, j'enregistre JAN .............

J'ai vu sur le net différentes façons de faire et je suis un peu perdu (str_replace, strpos,ereg, ...).
Quel serait pour moi la meilleure expression à utiliser (avec exemples ....)

Merci

9 réponses

Messages postés
1189
Date d'inscription
dimanche 3 janvier 2010
Statut
Membre
Dernière intervention
4 août 2018
231
Ce que tu peux faire, c'est dans ton formulaire mettre une liste déroulante pour choisir le mois et attribuer les 3 lettres à chaque mois.

Ca donnerais un truc du genre :

<label for="mois">Mois</label>
<select name="mois" id="mois">

<option value="JAN">janvier</option>
<option value="FEV">février</option>
<option value="MAR">mars</option>
<option value="AVR">avril</option>
<option value="MAI">mai</option>
<option value="JUN">juin</option>
<option value="JUL">juillet</option>

</select>

ensuite tu récupères la valeur choisie et tu l'enregistre dans ta base de donnée.
Messages postés
1288
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
5 mars 2020
9
Oui, j'y avait pensé !
Mais comme la saisie peut être différente (avant le 10 décembre, entre le 25 novembre et le 30 janvier,.......), pas faicile à mettre en place.
A moins de faire un zone de saisie, un choix de mois, une zone de saisie un choix de mois et encore une zone de saisie ..... Pas joli !
Messages postés
1189
Date d'inscription
dimanche 3 janvier 2010
Statut
Membre
Dernière intervention
4 août 2018
231
Soit tu mets 3 listes de choix.
Soit tu utilises ca :

Tu récupères la valeur du champ mois puis en fonction du mois tu attribues une nouvelle valeur à la variable.

if ( $mois = 'janvier' )
{
$mois='JAN';
}
if ( $mois = 'fevrier' )
{
$mois='FEV';
}

Et ainsi de suite.

Il faut juste faire en sorte que les mois soit écrit de la même façon par les visiteurs.
Donc utiliser une fonction qui les mets en minuscule et sans accent.
Mais il faut aussi qu'ils écrivent les mois sans fautes de frappes sinon ca ne marchera pas :/
Les forum sont faits pour trouver des réponses mais les moteurs de recherche aussi.
Messages postés
1288
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
5 mars 2020
9
Moi je voyais cela autrement :
Une zone de saisie unique.
Je récupère l'expression saisie.
Je teste si janvier février, fevrier, Fevrier ........... sont présent.
Si janvier, je remplace par JAN
Si février ou fevrier ou Février, je remplace par FEB
........... etc

Mais je sais pas avec quoi et comment l'écrire ..... :-(
Messages postés
1189
Date d'inscription
dimanche 3 janvier 2010
Statut
Membre
Dernière intervention
4 août 2018
231
En cherchant sur le forum de ccm j'ai trouvé ca :

$date = $_POST['date'];

$date_explosee = explode("/", $date);

$jour = $date_explosee[0];
$mois = $date_explosee[1];
$annee = $date_explosee[2];

Ca récupère la date puis ca sépare la date en 3 partie mais pour ca il doit y avoir un séparateur entre chaque.
Dans ce cas ci c'est /
Peut-être en effacant le slash et en lancant un espace, ca marchera.

Si ca marche, tu mets ensuite le code que j'ai mis au-dessus qui en fonction de la valeur mois attribue une autre valeur.

Faut tester voir si ca marche.
Messages postés
1288
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
5 mars 2020
9
C'est sympa mimigenie, mais ce n'est pas vraiment ce que j'essaye de faire.
Voilà où j'en suis :
$trouve = array("jan", "fev", "fév", "mar", "avr", "mai", "juin", "juil", "aout", "août", "sep", "oct", "nov", "dec", "déc"); // un tableau contenant diverses expression possible pour le mois
 
$result = strpos($date_naissance, $trouve); // Je cherche l'expression à remplacer dans ma phrase "$date_naissance"
if $resut == "jan" { $resut = JAN; }
elseif (($resut == "fev") OR ($resut == "fév") ...........


Mais bien sur, ça na fonctionne pas ! Car $result ne me retourne pas une valeur, mais "Array" !!!!

Comment faire à partir de là ?
Messages postés
1189
Date d'inscription
dimanche 3 janvier 2010
Statut
Membre
Dernière intervention
4 août 2018
231
Apparemment, le problème vient de l'array effectivement.
Essaye comme ca :

$trouve = array();
$trouve[1] = "jan";
$trouve[2] = "fev";
$trouve[3] = "fév";
$trouve[4] = "mar";
...

Dit moi ce que ca donne :)
Messages postés
1288
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
5 mars 2020
9
Oui mais là c'est pareil. Je me retrouve avec plein de définition !

Tandis que si j'écris mon tableau ainsi :
$trouve = array("jan", "fev", "fév", "mar", "avr", "mai", "juin", "juil", "aout", "août", "sep", "oct", "nov", "dec", "déc");

il faudrait ensuite trouver la bonne exprerssion qui permet de lire la variable "$date_naissance", vérifier si dans cette variable je retrouve une expression du tableau !
Une fois trouvé le mot contenu dans la variable qui contient une expression du tableau, je remplace ce mot par ce que je veut !

Mais apparemment, ce n'est pas possible ............. :-(
mimigenie
Messages postés
1189
Date d'inscription
dimanche 3 janvier 2010
Statut
Membre
Dernière intervention
4 août 2018
231
Pas forcément car la variable $trouve contient tout l'array quand même.
Est-ce que tu as essayé ce que je t'ai proposé ou pas ?
Si oui ca donne quoi.
Messages postés
1288
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
5 mars 2020
9
Si je vais vers ta proposition :
$trouve = array(); 
$trouve[1] = "jan"; 
$trouve[2] = "fev"; 
$trouve[3] = "fév"; 
$trouve[4] = "mar"; 

$result = strpos($date_naissance, $trouve[1]); // Je cherche l'expression à remplacer dans ma phrase "$date_naissance"
echo $result;

que date_naissance = 01 janvier 1553, $result = 3 (?)

C'est pas très claire .............

Sinon, je laisse tomber cette solution, et je fais avec une liste de choix !
mimigenie
Messages postés
1189
Date d'inscription
dimanche 3 janvier 2010
Statut
Membre
Dernière intervention
4 août 2018
231
essaye en écrivant ($date_naissance, $trouve)