PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 19-05-2013 18:57:43

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Comprendre Preg_match()

Bonjour à tous,

J'ai un problème avec preg_match, je voudrais l'utiliser avec un <select> de cette façon :


<option value="France" <?php if(preg_match("France", $_POST['DepartPays'])) { echo 'selected'; } ?>>France</option>
 

Cela ne fonctionne pas, l'option de mon select ne passe pas en "selected" lorsque le formulaire est envoyé et que je stop cet envois lorsqu'un champ est oublié par exemple, pourriez vous me dire pourquoi s'il vous plaît ?

Merci à vous !

Antho

Hors ligne

#2 20-05-2013 08:34:37

nicolas
Membre
Inscription : 11-11-2009
Messages : 69
Site Web

Re : Comprendre Preg_match()

Tu as la valeur exacte donc fais un test simple (==) plutôt que d'utiliser preg_match().

Hors ligne

#3 20-05-2013 09:52:42

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Comprendre Preg_match()

Saluton,
Si je suis assez d'accord avec Nicolas sur le caractère superfétatoire de l'emploi ici d'une fonction relative aux expressions rationnelles, je me demande pourquoi un champ de formulaire libellé DepartPays ?
Pourquoi pas deux champs ?


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#4 20-05-2013 15:47:30

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Comprendre Preg_match()

Bonjour,

Si je suis assez d'accord avec Nicolas sur le caractère superfétatoire de l'emploi ici d'une fonction relative aux expressions rationnelles, je me demande pourquoi un champ de formulaire libellé DepartPays ?

Excusez notre cher ami MK, qui à force de faire des bases de données voit des relations partout. Vous l'aurez compris il s'agit en effet d'expressions régulières et non relationnelles.
A quand tes prochaines vacances MK? big_smile

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#5 20-05-2013 18:47:10

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Comprendre Preg_match()

Mon cher Jc, tu devrais changer de lunettes ou, à tout le moins, reposer ta vue.

Je n'ai pas écrit expressions relationnelles mais expressions rationnelles, ce qui me semble (mais pas seulement à moi), une traduction plus rigoureuse de l'anglais 'regular expressions'

Quant aux  vacances, je reviens d'un charmant séjour à l'Ile d'Aix puis dans le Périgord et nous avons programmé un séjour dans la Cornouaille dans trois semaines.

Sinon, entre récolte du miel de printemps (8K400g) et garniture de mon répertoire de chansons, je me porte plutôt pas mal.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#6 21-05-2013 00:34:37

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Comprendre Preg_match()

Ok la preuve en est faite, l'intoxiqué aux bases de données, c'est moi big_smile

Dernière modification par Jc (23-05-2013 07:55:02)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#7 21-05-2013 09:46:52

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Comprendre Preg_match()

Bon, faute avouée ... et pour l'autre moitié, c'est cadeau, je t'absous, mon fils.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#8 21-05-2013 16:19:05

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : Comprendre Preg_match()

Bonjour,

Vous êtes le couple de ce forum Maljuna et Jc ! Une plus grande longévité que mon ex-femme et moi ! lol

Je ne comprends pas Maljuna lorsque vous écrivez "pourquoi pas deux champs", vous voulez peut être dire plusieurs options dans la liste ??


<option value="France" <?php if(preg_match("France", $_POST['DepartPays'])) { echo 'selected'; } ?>>France</option>
<option value="Belgique" <?php if(preg_match("Belgique", $_POST['DepartPays'])) { echo 'selected'; } ?>>Belgique</option>
<option value="Pays-bas" <?php if(preg_match("Pays-bas", $_POST['DepartPays'])) { echo 'selected'; } ?>>Pays-bas</option>
 

Je n'avais effectivement pas pensé au "==", je pense que c'est le mieux à faire ...

Habituellement la liste est générée par un while sur une table mysql c'est pour ça que je posais la question car dans ce cas je ne connaîtrais pas les valeurs à l'avance mais effectivement dans le cas exprimé ci-dessus un simple "==" suffira. Cela dit, ma question reste d'actualité si vous avez la gentillesse de m'aider :-)

Merci à vous :-)

Dernière modification par Anthotill (21-05-2013 16:30:27)

Hors ligne

#9 21-05-2013 16:53:36

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Comprendre Preg_match()

Anthotill a écrit :

Je ne comprends pas Maljuna lorsque vous écrivez "pourquoi pas deux champs", vous voulez peut être dire plusieurs options dans la liste ??

Je me référais à ce curieux champ de formulaire $_POST['DepartPays'] qui semblait regrouper deux informations département et pays.
Mais peut-être me trompès-je, il y a peut-être un champ  $_POST['DepartPays'] et un champ  $_POST['ArrivéePays'] auquel cas ma proposition n'a plus aucun sens.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#10 21-05-2013 17:47:51

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : Comprendre Preg_match()

Maljuna Kris a écrit :
Anthotill a écrit :

Je ne comprends pas Maljuna lorsque vous écrivez "pourquoi pas deux champs", vous voulez peut être dire plusieurs options dans la liste ??

Je me référais à ce curieux champ de formulaire $_POST['DepartPays'] qui semblait regrouper deux informations département et pays.
Mais peut-être me trompès-je, il y a peut-être un champ  $_POST['DepartPays'] et un champ  $_POST['ArrivéePays'] auquel cas ma proposition n'a plus aucun sens.

C'est bien ça, il s'agit du pays de départ et il y a de la même façon le pays d'arrivée. J'aurais effectivement pu/du nommer cela PaysDeDepart en bon français :-)

Hors ligne

#11 21-05-2013 20:37:20

nicolas
Membre
Inscription : 11-11-2009
Messages : 69
Site Web

Re : Comprendre Preg_match()

Anthotill a écrit :

]

Je n'avais effectivement pas pensé au "==", je pense que c'est le mieux à faire ...

Habituellement la liste est générée par un while sur une table mysql c'est pour ça que je posais la question car dans ce cas je ne connaîtrais pas les valeurs à l'avance mais effectivement dans le cas exprimé ci-dessus un simple "==" suffira. Cela dit, ma question reste d'actualité si vous avez la gentillesse de m'aider :-)

Merci à vous :-)

Et bien si les données proviennent d'une table d'une base de données alors elles sont connues !
Tu peux écrire quelque chose comme ça pour mettre en valeur le pays sélectionné (adepte du mvc cachez -vous les yeux) :


$query = 'la requête qui ramène tous les pays';
$result = mysql_query($query);

echo '<select name="DepartPays">';
while ($row = mysql_fetch_assoc($result)) {
   if ($row['pays'] == $_POST['DepartPays']) {
     $selected = ' selected="selected"';
  } else {
     $selected = '';
  }
  printf('<option value="%s"%s>%s</option>', $row['pays'], $selected, $row['pays']);
}
echo '</select>';
 

Ce code n'est pas à recopier tel quel mais est juste là pour donner l'idée.

Hors ligne

#12 23-05-2013 07:56:45

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Comprendre Preg_match()

aaarrg. Nicolas tu viens de m'achever avec ton code ^^


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#13 23-05-2013 08:07:54

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Comprendre Preg_match()

Bonjour,

@Nicolas : aaaaaaaaaaarrg. Nicolas tu viens de m'achever avec ton code ^^
@Anthotill : Ton code souffre d'un problème de conception. En effet en ayant un selectbox avec tous les pays inclus dedans (environ 277 de mémoire) tu n'as pas à poster le pays de départ en php pour obtenir la liste de retour des pays d'arrivée dans laquelle n'y figurera pas celle de départ et dans laquelle tu dois re-sélectionner le pays de départ.
La méthode propre:
- Au chargement de ton formulaire tu charges les deux combos départ et arrivée avec une seule boucle en php (lu à partir de la bd si premier chargement, sinon à partir du cache les contenant en php si tu en as besoin souvent).
- Ensuite tu testes en local (javascript) si le pays de départ n'est pas identique au pays d'arrivée avant de soumettre ton formulaire en php.
- Tu postes ton formulaire sur le serveur.

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums