Si erreur history.back + background ne fonctionne pas

Résolu/Fermé
barale61 Messages postés 1190 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 20 octobre 2023 - 2 juin 2016 à 18:07
barale61 Messages postés 1190 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 20 octobre 2023 - 8 juin 2016 à 19:28
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.
0
barale61 Messages postés 1190 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 20 octobre 2023 110
3 juin 2016 à 17:52
Mais est-ce possible de détecter qu'il y a eu un history.back() sur l'autre page ?
0
Utilisateur anonyme > barale61 Messages postés 1190 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 20 octobre 2023
3 juin 2016 à 21:28
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.
0
barale61 Messages postés 1190 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 20 octobre 2023 110 > Utilisateur anonyme
6 juin 2016 à 18:20
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 !";
    }
0
barale61 Messages postés 1190 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 20 octobre 2023 110 > barale61 Messages postés 1190 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 20 octobre 2023
8 juin 2016 à 19:28
Je m'étais planté dans le nom de la session.
0