Rendre visible une div dans une condition if

Résolu/Fermé
philippe - Modifié par jordane45 le 4/02/2016 à 23:54
 philippe - 5 févr. 2016 à 12:23
Bonjour,
Dans un tableau construit avec un query j'ai les colonnes suivantes :
- date début - date fin - prénom nom - modifier - supprimer -
sur chaque ligne du tableau dans la colonne modifier je mets un bouton.
quand on clique sur ce bouton j'affiche une div avec une fonction javascript
la fonction javascript
function montrer_cacher(div){
 document.getElementById(div).style.display = "inline"; 
}

la div au chargement de la page
<div id="div_modifier" style="display:none">
blablabla
<input type="submit" name="bouton_modifier" value="Valider" style="width:105px;margin-left:340px ">
</div>

le traitement du bouton_modifier
if (isset($_POST['bouton_modifier'])){
 //vérifier les dates saisies
 if (!empty($_POST['modif_date_debut'])){
  //vérifie la date de début
  if (preg_match('#^([0-9]{2})([/])([0-9]{2})\2([0-9]{4})$#', $modif_date_debut, $m) == 1 && checkdate($m[3], $m[1], $m[4])) {
     if (!empty($_POST['modif_date_fin'])){
    //vérifie la date de fin
    if (preg_match('#^([0-9]{2})([/])([0-9]{2})\2([0-9]{4})$#', $modif_date_fin, $m) == 1 && checkdate($m[3], $m[1], $m[4])) {
     //dates correctes : modifier l'enregistrement
     echo "enregistré";

     $message = "Votre période de disponibilité a bien été modifiée.";
    }
    else {
     $control_div = 0;
     //montrer_cacher("div_modifier");
     $message1 = "format de la date de fin de période non valide.";
    }
   }
   // date fin vide
   else { 
    $control_div = 0;
    $message1 = "La date de fin de période n'est pas renseignée.";
   }
  }
  //date début incorrecte 
  else  { 
   $control_div = 0; 
   $message1 = "format de la date de début de période non valide.";
  } 
 }
 else {
  $control_div = 0;
  $message1 = "La date de début de période n'est pas renseignée.";
 }
 if ($control_div == 0){ 
  echo "afficher la div";

  //je dois rendre la div id="div_modifier" à style="display:inline";

 }
}

Quand les différentes conditions ne sont pas réalisées, j'affecte la valeur 0 à une variable $control_div.
Avant de sortir de la condition je teste si $control_div == 0
si c'est le cas je veux afficher la div. ET C'EST CE QUE JE N'ARRIVE PAS A FAIRE.
J'espère avoir été clair!!
Merci de votre aide

EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
5 févr. 2016 à 11:40
Salut,

Une solution si la div est affichée dans le même script que le traitement du formulaire est simplement de vérifier la valeur de la variable $control_div à l'affichage :
<div id="div_modifier" <?php echo $control_div == 0 ? 'style="display:none"' : ''; ?>>


Si l'affichage du div n'est pas sur le même script, il faut alors transférer cette variable à la page qui affiche le div soit :
- via une redirection avec un paramètre get
- via une variable de session

Bonne journée
0
Merci Pitet
J'ai juste adapté un peu et maintenant ça marche
j'ai initialisé une variable $control_div = 1
quand le format des dates est incorrecte j'affecte 0 à $control_div et le code pour la div est devenu :

<div id="div_modifier" <?php if ($control_div == 0 ){ echo 'style="display:inline"'; } else { echo 'style="display:none"'; }?> >

Merci encore
0