[PHP]Expression régulière & condition if
Résolu/Fermé
tximiti
Messages postés
27
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
18 août 2007
-
5 juil. 2007 à 17:49
tximiti Messages postés 27 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 18 août 2007 - 10 juil. 2007 à 22:19
tximiti Messages postés 27 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 18 août 2007 - 10 juil. 2007 à 22:19
A voir également:
- [PHP]Expression régulière & condition if
- Excel cellule couleur si condition texte - Guide
- Easy php - Télécharger - Divers Web & Internet
- Expression de recherche - Guide
- Excel condition ou - Guide
- Tu es un amour expression ✓ - Forum Loisirs / Divertissements
4 réponses
tximiti
Messages postés
27
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
18 août 2007
6 juil. 2007 à 10:55
6 juil. 2007 à 10:55
Je crois que j'ai trouvé ! Si ça peut aider quelqu'un, mais attention il ne brille pas par sa structure ni par son optimisation !
// Vérification du format de la date if (ereg('^((0[1-9])|([1-2][0-9])|(3[0-1]))(/)((0[1-9])|(1[0-2]))(/)([0-9]{4})$',$date_formation )) { //création de la requête SQL $sql = "UPDATE date_formations SET date_date = '$date_formation', lieu_date = '$lieu_formation' WHERE id_date = '$id_date' " ; //exécution de la requête SQL $requete = mysql_query($sql, $connexion) or die( mysql_error() ) ; //affichage des résultats, pour savoir si la modification a marché if ($requete) { header('Location: formations-modification.php'); } } else { echo("<center><span class=\"Style1\">La modification a échoué.Le format de la date ne convient pas.<br/> <a href=\"formations-modification.php\">Retourner à la liste des formations</a></center>") ; }
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
6 juil. 2007 à 12:51
6 juil. 2007 à 12:51
Bonjour,
Désolé, je n'apporte pas grand chose (surtout que tu as déjà ta solution :p), mais je voudrais juste rappeler qu'en Français, on parle d'« expression rationnelle », et pas « régulière », qui vient d'une mauvaise traduction de l'Anglais "regular expression" :)
Voilà voilà !
Xavier
Désolé, je n'apporte pas grand chose (surtout que tu as déjà ta solution :p), mais je voudrais juste rappeler qu'en Français, on parle d'« expression rationnelle », et pas « régulière », qui vient d'une mauvaise traduction de l'Anglais "regular expression" :)
Voilà voilà !
Xavier
tximiti
Messages postés
27
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
18 août 2007
6 juil. 2007 à 13:42
6 juil. 2007 à 13:42
D'accord je retiens !Désolé je suis pas encore experte, j'apprends depuis octobre et c'est un peu raide à tout ingurguter ;-)
Question:
pourquoi mets tu des addslashes dans ta récup de variables ??
//formation :
$nom_formation = addslashes($_POST['nom_formation'] );
Php les mets tout seul, il vaudrait mieux les supprimer par stripslashes() si tu veux tester par expression régulières.
Ensuite pour comprendre les expressions régulières vas voir le site du zéro, il est pas mal fait.
Une autre solution aussi c'est de proposer dans le formulaire de saisie , pour la date ,des listes déroulantes, une pour le jour, une pour le mois, une pour l'année. Comme ça pas de souci de format c'est toi qui le gères.
Ensuite par Javascript, il existe des fonctions qui vérifient les cohérences de dates (Février, mois 30/31 jours ect..).
Si besoin j'ai ça.
pourquoi mets tu des addslashes dans ta récup de variables ??
//formation :
$nom_formation = addslashes($_POST['nom_formation'] );
Php les mets tout seul, il vaudrait mieux les supprimer par stripslashes() si tu veux tester par expression régulières.
Ensuite pour comprendre les expressions régulières vas voir le site du zéro, il est pas mal fait.
Une autre solution aussi c'est de proposer dans le formulaire de saisie , pour la date ,des listes déroulantes, une pour le jour, une pour le mois, une pour l'année. Comme ça pas de souci de format c'est toi qui le gères.
Ensuite par Javascript, il existe des fonctions qui vérifient les cohérences de dates (Février, mois 30/31 jours ect..).
Si besoin j'ai ça.
tximiti
Messages postés
27
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
18 août 2007
6 juil. 2007 à 14:04
6 juil. 2007 à 14:04
Euh bah oui...Enfin non j'ai changé entre temps ! J'avais des slashs qui apparaissait mais je préférais d'abord trouver mon pb d'expression régulière. Alors voici comment j'ai modifié :
Dans ma page qui contient la liste de mes formations j'ai mis des stripslashes :
Dans ma page qui contient le fomulaire des formations :
Dans ma page qui fait la mise à jour :
Ce code n'est certes pas optimisé mais je le comprends....Merci Alain pour ta proposition des listes déroulantes, mais maintenant que j'ai réussi tu comprendras que je vais garder ce que j'ai fait...Du moins pour le moment. Je ne veux pas profiter de ta gentillesse, tu m'aides déjà beaucoup par toutes tes remarques intéressantes. Pour le problème de l'année bissextle, ej verrais un peu plus tard....
Dans ma page qui contient la liste de mes formations j'ai mis des stripslashes :
<span ><strong>".stripslashes ($row['nom_formations'])."</strong></span>
Dans ma page qui contient le fomulaire des formations :
<td align="left"><input type="text" name="nom_formation" value="<?php echo stripslashes ($row['nom_formations']) ;?>" size="65"></td>
Dans ma page qui fait la mise à jour :
//formation : $nom_formation = $_POST['nom_formation'];
Ce code n'est certes pas optimisé mais je le comprends....Merci Alain pour ta proposition des listes déroulantes, mais maintenant que j'ai réussi tu comprendras que je vais garder ce que j'ai fait...Du moins pour le moment. Je ne veux pas profiter de ta gentillesse, tu m'aides déjà beaucoup par toutes tes remarques intéressantes. Pour le problème de l'année bissextle, ej verrais un peu plus tard....
Je t'ai trouvé aussi ce code sur un site: http://www.comscripts.com/sources/php.verification-de-date.94.html
Fonction PHP permettant de controler la validité d'une date
au format jj/mm/aaaa (au cas ou le javaScript n'ait pas marché !!)
(on peut facilement l'adapter à un autre format)
Portion de code
<?
/* Auteur : Guillaume Marc */
/* email : adalberto@wanadoo.fr */
function validation_date($date){
/* Fonction générale de vérification */
/* controle de la longueur de la chaine jj/mm/aaaa = 10 */
if(strlen($date)==10){
if(substr($date,2,1)=="/" && substr($date,5,1)=="/"){
/* les caractères 1 et 6 sont des " / " */
$jour=intval(substr($date,0,2)); /* PHP numérote les chaines depuis 0 */
$mois=intval(substr($date,3,2));
$annee=intval(substr($date,6,4));
if($mois>=1 && $mois<=12){ /* verifie que le mois verifie 1<mois<12 */
if($jour<=longueurMois($mois,$annee)){ /* controle le jour par */
return true; /* rapport a la longueur du mois */
}
else {
return false;
}
}
else {
return false;
}
}
else {
return false;
}
}
else {
return false;
}
}
/* La fonction renvoit la longueur d'un mois précis */
/* en tenant compte du mois de février et des années bissextiles */
function longueurMois($mois,$annee){
if ($mois==4 || $mois==6 || $mois==9 || $mois==11) return 30;
else if (($mois==2) && estBissextile($annee)) return 29;
else if ($mois==2) return 28;
else return 31;
}
/* Les années bissextiles sont les années paires divisibles par
quatre et qui ne sont pas des année de centaine et les années
de centaine qui sont divisibles par 400.
(par exemple 1600 était bissextile, 2000 aussi mais pas 1900
qui est divisible par 4 et paire mais pas divisible par 400) */
/* fonction appelée par validation_date() */
function estBissextile($ans){
if ((($ans % 4 == 0) && $ans % 100 != 0) || $ans % 400 == 0)
return true;/*c'est une année bissextile */
else
return false;/*ce n'en est pas une */
}
?>
Fonction PHP permettant de controler la validité d'une date
au format jj/mm/aaaa (au cas ou le javaScript n'ait pas marché !!)
(on peut facilement l'adapter à un autre format)
Portion de code
<?
/* Auteur : Guillaume Marc */
/* email : adalberto@wanadoo.fr */
function validation_date($date){
/* Fonction générale de vérification */
/* controle de la longueur de la chaine jj/mm/aaaa = 10 */
if(strlen($date)==10){
if(substr($date,2,1)=="/" && substr($date,5,1)=="/"){
/* les caractères 1 et 6 sont des " / " */
$jour=intval(substr($date,0,2)); /* PHP numérote les chaines depuis 0 */
$mois=intval(substr($date,3,2));
$annee=intval(substr($date,6,4));
if($mois>=1 && $mois<=12){ /* verifie que le mois verifie 1<mois<12 */
if($jour<=longueurMois($mois,$annee)){ /* controle le jour par */
return true; /* rapport a la longueur du mois */
}
else {
return false;
}
}
else {
return false;
}
}
else {
return false;
}
}
else {
return false;
}
}
/* La fonction renvoit la longueur d'un mois précis */
/* en tenant compte du mois de février et des années bissextiles */
function longueurMois($mois,$annee){
if ($mois==4 || $mois==6 || $mois==9 || $mois==11) return 30;
else if (($mois==2) && estBissextile($annee)) return 29;
else if ($mois==2) return 28;
else return 31;
}
/* Les années bissextiles sont les années paires divisibles par
quatre et qui ne sont pas des année de centaine et les années
de centaine qui sont divisibles par 400.
(par exemple 1600 était bissextile, 2000 aussi mais pas 1900
qui est divisible par 4 et paire mais pas divisible par 400) */
/* fonction appelée par validation_date() */
function estBissextile($ans){
if ((($ans % 4 == 0) && $ans % 100 != 0) || $ans % 400 == 0)
return true;/*c'est une année bissextile */
else
return false;/*ce n'en est pas une */
}
?>
tximiti
Messages postés
27
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
18 août 2007
>
Alain42
8 juil. 2007 à 11:11
8 juil. 2007 à 11:11
Merci, je prend le temps de regarder ça et te tiens au courant...Car c'est clair que ta solution est mieux !
tximiti
Messages postés
27
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
18 août 2007
>
Alain42
8 juil. 2007 à 19:35
8 juil. 2007 à 19:35
J'ai regardé un peu et elle semble vraiment pas mal, je pense que je l'utiliserais quand j'aurais mon site plus structuré et que j'aurais fait le plus gros...En attendant, j'aurais souhaité un conseil de ta part si ça ne t'embête pas trop ?
Voilà, j'ai commencé mon back-office et je me suis aidée de ce site http://www.phpdebutant.org/article68.php (ne t'inquiète pas je n'ai pas encore sécurisé le site, mais j'ai l'intention de le faire après)
L'internaute peut choisir grâce à un menu de modifier une rubrique. Pour ma rubrique formations, cela affiche ma liste des formations, où là, il peut choisir d'ajouter / modifier / supprimer une formation /date.
Quand il clique sur le lien ajouter formation, cela l'emmène sur le lien suivant :
Voilà, j'ai commencé mon back-office et je me suis aidée de ce site http://www.phpdebutant.org/article68.php (ne t'inquiète pas je n'ai pas encore sécurisé le site, mais j'ai l'intention de le faire après)
L'internaute peut choisir grâce à un menu de modifier une rubrique. Pour ma rubrique formations, cela affiche ma liste des formations, où là, il peut choisir d'ajouter / modifier / supprimer une formation /date.
Quand il clique sur le lien ajouter formation, cela l'emmène sur le lien suivant :
http://www.agilicom.fr/...
Jusqu'ici tout va bien...Mais c'est lorsque je veux que le lien modifier emmène l'internaute sur la page modifier, je n'arrive pas à l'insérer dans cette structure. Pour que ça fonctionne , je suis obligée de mettre :<a href=\"date-modif.php?nomFormation=".$row['id_formations']."&&nomDate=".$row_date['id_date']."\">modifier</a>
Si je tente le principe que j'ai fait pour ajouter ça ne fonctionne pas, ça ne me trouve pas le fichier ...Pourquoi ? Ils sont placés au même niveau, est-ce l'identifiant qui gêne peut-être ?
Que me conseilles-tu ?
Ma page d'accueil.php :
<?php //connection au serveur: require_once ('../connexionbd.php'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Back-office AGILiCOM</title> <style type="text/css">@import url(modules/styleadmin.css);</style> <script language="javascript" > <!-- window.onload=montre; function montre(id) { var d = document.getElementById(id); for (var i = 1; i<=10; i++) { if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';} } if (d) {d.style.display='block';} } --> </script> <noscript> <p>Cette page requière le JavaScript. Merci de bien vouloir l'activer.</p> </noscript> </head> <body> <div id="conteneur"> <div id="header"></div> <div id="gauche"> <?php include("modules/menu-admin.php"); ?> </div> <div id="centre" name="centr"> <?php // Récupération du paramètre GET // (avec valeur par défaut=accueil.php) if (isset($_GET["page"])) $page = $_GET["page"]; else $page = ""; include ("$page"); ?> </div> </div> </body> </html>
Je sais qu'il y la methode target mais je n'y suis pas arrivée, si tu as une petite idée de mon souci, ça me serait d'un grane aide..
Merci pour tout, je peux te dire que ça me motive à chercher !
tximiti
Messages postés
27
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
18 août 2007
9 juil. 2007 à 09:29
9 juil. 2007 à 09:29
Youpi ! Alain j'ai trouvé !
En fait il fallair remplcé le point d'exclamation par un & :
Code faux :
Code correct :
Houraa ! Lol ! Maintenant il me reste à sécuriser ses pages.
En fait il fallair remplcé le point d'exclamation par un & :
Code faux :
?page=formation-modif.php?nomFormation=".$row['id_formations'].
Code correct :
?page=formation-modif.php&nomFormation=".$row['id_formations'].
Houraa ! Lol ! Maintenant il me reste à sécuriser ses pages.