Création
d'entreprise
Posez votre question Signaler

[PHP]Expression régulière & condition if [Résolu]

tximiti 26Messages postés 27 juin 2007Date d'inscription - Dernière réponse le 10 juil. 2007 à 22:19
Bonjour,
J'ai un petit souci pour réaliser mon back-office. J'ai deux pages pour mettre à jour mes dates.
La première page contient le tableau avec les champs pré-remplis.
Tout fonctionne, mais quand j'ai voulu mettre une expression régulière, celle-ci ne vérifie rien...Ca me renvoit à la page des formations comme si la date était correcte.
J'ai placé l'expression régulière dans tous les sens mais rien n'y fait...Quelqu'un aurait-il une idée ?
J'ai mis l'expression régulière dans la seconde page date-modif1.php qui insère les données dans la base.
Page date-modif1.php
 //récupération des valeurs des champs
  //formation :
  $nom_formation = addslashes($_POST['nom_formation'] );
  //date:
  $date_formation = addslashes($_POST['date_formation']) ;
  //lieu:
  $lieu_formation = addslashes($_POST['lieu_formation']) ;
  
  //récupération de l'identifiant de la formation
  $id_formation = $_POST['name_id_forma'] ;
  
   //récupération de l'identifiant de la date
  $id_date = $_POST['name_id_date'] ;
  
			     
  //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() ) ;
	
 
// Vérification du format de la date 
	if  (!ereg('^(0[1-9]|1[0-2])[(\/)][0-3][0-9][(\/)][0-9]{4}$',$date_formation))
	{

  //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é.<br/> <a href=\"formations-modification.php\">Retourner à la liste des formations</a></center>") ;
  }

Merci d'avance à ceux qui m'aiguilleront !
Lire la suite 

[PHP]Expression régulière & condition if »

12 réponses
Réponse
+0
moins plus
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>") ;
  }
Ajouter un commentaire
Réponse
+0
moins plus
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
tximiti- 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 ;-)
Ajouter un commentaire
Réponse
+0
moins plus
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.
Alain42Alain42 - 8 juil. 2007 à 22:51
href=\"date-modif.php?nomFormation=".$row['id_formations']."&&nomDate=".$row_date['id_date']."\">modifier</a>


tu as une erreur deux fois && avant nomDate
c'est peut etre ce qui gène
tximiti- 8 juil. 2007 à 23:01
Je regarde ça dès demain matin, mais j'ai un doute (enfin pas sur mon erreur, ça s'est certain ! Lol !) car avant que je fasse la mise en page ça fonctionnait et ça fonctionne toujours si je ne les insère pas dansla mise en page.
Si je laisse ça fonctionne (mais je n'ai plus ma mise en page ni mon menu)
<a href=\"date-modif.php?nomFormation=".$row['id_formations']."&nomDate=".$row_date['id_date']."\">modifier</a>


Si je fais ça, alors ça ne trouve plus le chemin !
<a href=\"accueil.php?page=date-modif.php?nomFormation=".$row['id_formations']."&nomDate=".$row_date['id_date']."\">modifier</a>

Je regarde dès demain ! Merci en tout cas !
tximitiAlain42 - 10 juil. 2007 à 22:19
Comme tu t'en doutes j'ai un petit souci avec la sécurisation de mes pages, si ça te dis, ets eulement si ça te dis, tu peux aller voir sur le nouveau post que j'ai fait :
php open basedir restriction in effect
ET encore merci pour otu !
Ajouter un commentaire
Réponse
+0
moins plus
Youpi ! Alain j'ai trouvé !
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.
Ajouter un commentaire
Ce document intitulé « [PHP]Expression régulière & condition if » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?