Tester et remplacer une expression

Fermé
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - 10 déc. 2011 à 10:42
mimigenie Messages postés 1180 Date d'inscription dimanche 3 janvier 2010 Statut Membre Dernière intervention 4 août 2018 - 11 déc. 2011 à 12:48
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
A voir également:

9 réponses

mimigenie Messages postés 1180 Date d'inscription dimanche 3 janvier 2010 Statut Membre Dernière intervention 4 août 2018 312
10 déc. 2011 à 10:49
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.
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
Modifié par t671 le 10/12/2011 à 10:55
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 !
0
mimigenie Messages postés 1180 Date d'inscription dimanche 3 janvier 2010 Statut Membre Dernière intervention 4 août 2018 312
Modifié par mimigenie le 10/12/2011 à 11:02
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.
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
10 déc. 2011 à 11:06
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 ..... :-(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mimigenie Messages postés 1180 Date d'inscription dimanche 3 janvier 2010 Statut Membre Dernière intervention 4 août 2018 312
10 déc. 2011 à 11:16
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.
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
10 déc. 2011 à 17:01
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à ?
0
mimigenie Messages postés 1180 Date d'inscription dimanche 3 janvier 2010 Statut Membre Dernière intervention 4 août 2018 312
10 déc. 2011 à 21:38
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 :)
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
11 déc. 2011 à 10:49
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 ............. :-(
0
mimigenie Messages postés 1180 Date d'inscription dimanche 3 janvier 2010 Statut Membre Dernière intervention 4 août 2018 312
11 déc. 2011 à 11:25
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.
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
11 déc. 2011 à 12:08
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 !
0
mimigenie Messages postés 1180 Date d'inscription dimanche 3 janvier 2010 Statut Membre Dernière intervention 4 août 2018 312
11 déc. 2011 à 12:48
essaye en écrivant ($date_naissance, $trouve)
0