Si erreur history.back + background ne fonctionne pas

[Résolu/Fermé]
Signaler
Messages postés
1148
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
18 octobre 2021
-
Messages postés
1148
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
18 octobre 2021
-
Bonjour,

Si j'ai une erreur de doublon, je retourne sur ma page formulaire et je souhaite modifier le background ainsi que la couleur du texte mais cela ne fonctionne pas:

?>                  
   <script>
       history.back();
       $element = document.getElementById("denomination").style;
       $element.background = "red";
       $element.color = "white";
   </script>
<?php


l'history.back fonctionne mais pas le reste. Je vous remercie de votre aide.

1 réponse

Bonjour

Quand tu fais history.back();, tu changes de page. Donc tu quittes la page présente. Mais comme le script fait partie de la page, plus de script. Donc les lignes suivantes ne seront pas exécutées.
C'est dans la page vers laquelle tu vas qu'il faut modifier ces attributs.
Messages postés
1148
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
18 octobre 2021
100
Mais est-ce possible de détecter qu'il y a eu un history.back() sur l'autre page ?
Utilisateur anonyme >
Messages postés
1148
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
18 octobre 2021

Je ne suis pas sûr, mais a priori je dirais non.
history.back n'est sans doute pas la bonne méthode à utiliser. Il vaudrait mieux sauvegarder le contenu du formulaire mal rempli dans une session, et utiliser un window.location pour retourner au formulaire et le pré-remplir avec les valeurs mémorisées en session. Personnellement, je fais toujours la validation du formulaire dans le même script que le formulaire lui-même, ça me dispense de cette mémorisation du contenu puisque je le ré-utilise tout de suite si nécessaire.
Messages postés
1148
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
18 octobre 2021
100 > Utilisateur anonyme
J'ai donc utilisé les sessions mais je n'arrive pas à la détruire au moment voulu pour que l'erreur ne s'affiche plus si pas de doublon. Donc j'ai fais session_destroy(); à la ligne 42 mais elle ne se détruit pas.

// ENREGISTREMENT DE LA FICHE 
    include 'connexion.php';
    
// Si le formulaire est bien posté
    if (isset($_POST['envoyer'])){
     
        $denomination = htmlspecialchars(trim($_POST['denomination']));
        $contact = htmlspecialchars(trim($_POST['contact']));
        $adresse = htmlspecialchars(trim($_POST['adresse']));
        $cp = htmlspecialchars(trim($_POST['cp']));
        $ville = htmlspecialchars(trim($_POST['ville']));
        $email = htmlspecialchars(trim($_POST['email']));
        $telephone = htmlspecialchars(trim($_POST['telephone'])); 
        $portable = htmlspecialchars(trim($_POST['portable'])); 
        
    
        // VERIFICATION DE L'UNICITE DE LA DENOMINATION 
        $erreur = [];
        $maVar = $_POST['denomination'];
        $query = $bdd->query("SELECT COUNT(denomination) FROM fiche_client WHERE denomination = '$maVar'");
        $nombre = $query->fetch();
            if ($nombre[0] >0){
                $erreur['existe']  = "Cette dénomination existe déjà !";
                if(!empty($erreur)){

                    //Création de la session mon_tableau
                    if(session_id() == "")
                         session_start();
                         $_SESSION['mon_tableau'] = array($denomination,$contact,$adresse,$cp,$ville,$email,$telephone,$portable);
                    
                    header('location:../index.php?page=ajoutClient');
                    
                }
            }
        else{
            
// On détruit la session denomination pour les doublons pour la réinitialiser
        // On écrase le tableau de session
        $_SESSION = array();
        // On détruit la session
        session_destroy(); 
            
            #Requête préparée pour l'insertion
            $req = $bdd->prepare('INSERT INTO fiche_client(denomination, contact, adresse, cp, ville, email, telephone, portable) VALUES(:denomination, :contact, :adresse, :cp, :ville, :email, :telephone, :portable)');
            $req->execute(array(
                'denomination' => $denomination,
                'contact' => $contact,
                'adresse' => $adresse,
                'cp' => $cp,
                'ville' => $ville,
                'email' => $email,
                'telephone' => $telephone,
                'portable' => $portable
                ));

            $req->closeCursor(); // Termine le traitement de la requête

    // CREATION DU DOSSIER CLIENT
            $dossier = suppAccent($denomination);
            $dossier = mb_strtoupper($dossier);

                if(!is_dir("../Dossiers_Clients/".$dossier)){
                    mkdir("../Dossiers_Clients/".$dossier, 0777, true);
                }

                header('Location:../index.php');
    }   }
    else 
    {
        echo "Vous devez renseigner tous les champs !";
    }
Messages postés
1148
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
18 octobre 2021
100 >
Messages postés
1148
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
18 octobre 2021

Je m'étais planté dans le nom de la session.