IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

2 Boutons, 1 formulaire, 1 destination, 2 actions différentes


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 77
    Points : 92
    Points
    92
    Par défaut 2 Boutons, 1 formulaire, 1 destination, 2 actions différentes
    Bonsoir,

    J'ai actuellement 2 listes déroulantes sur ma page de rédaction d'articles et avant de valider l'article pour qu'il soit publié, l'utilisateur envoie tout ce qu'il a tappé/choisi sur une page de prévisualisation.

    Sur cette page on met les valeurs _POST dans des Sessions ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $_SESSION['rubrique'] = $_POST['rubrique'] ;
    $_SESSION['categorie'] = $_POST['categorie'] ;
    $_SESSION['titre'] = $_POST['titre'] ;
    $_SESSION['accroche'] = $_POST['accroche'] ;
    $_SESSION['contenu'] = $_POST['contenu'] ;
    $_SESSION['pseudo'] = $_POST['pseudo'] ;
    $_SESSION['id_news'] = $_POST['id_news'] ;
    Tout d'abord, est-ce assez sécurisé ? Vu que normalement il n'y a aucune insertion dans la base de donnée.
    Le traitement se fait par la suite sur une autre page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $titre = htmlspecialchars($_SESSION['titre']);
    $accroche = mysql_real_escape_string($_SESSION['accroche']);
    $contenu = mysql_real_escape_string(html_entity_decode($_SESSION['contenu'], ENT_QUOTES));
    $categorie = htmlspecialchars($_SESSION['categorie'], ENT_QUOTES);
    $rubrique = htmlspecialchars($_SESSION['rubrique'], ENT_QUOTES);
    $pseudo = htmlspecialchars($_SESSION['pseudo'], ENT_QUOTES);
    $id_news = intval($_SESSION['id_news']);
    Je suis en utf-8 donc je devrais utiliser htmlentities pour l'accroche, titre et le contenu ou sa va comme c'est fait actuellement ? J'ai aucun souci à signaler c'est juste que cela me parait un peu bizarre.

    Je ne sais pas si je dois avoir des é ou bien des é dans ma base de donnée qui est en utf8_general_ci. Actuellement lors de l'insertion j'ai simplement des é.

    Bref j'ai pleins de petites questions donc je reviens au sujet principale.
    Voici le code que j'utilise pour afficher sur ma page de rédaction les 2 formulaires qui retournent les id et nom des catégories et rubriques et qui les listent automatiquement.

    /* EDIT : PROBLEME RESOLU COMME UN GRAND, DOMMAGE QU'IL N'AIT PAS DE FONCTIONS DE TRACAGE AVEC VBULLETIN */

    Ce que j'aimerais c'est qu'une fois envoyé sur la page de prévisualisation et que les infos ont été mis en Session, lors de mon retour sur la page de rédaction pour modifier l'article si il n'est pas complet/rempli/modifiable... que les listes déroulantes soient actualisés avec la valeur de la Session. Qu'elle se met directement sur la valeur de session et non qu'elles reviennent à zéro.

    J'ai eu quelques soucis en testant avec des conditions, la valeur en Session était bien gardée mais la liste déroulante n'était pas actualisée en conséquence et pire, impossibilité par la suite de changer la catégorie ou rubrique vu que la valeur en session restait tout le long à moins de détruire la session.

    Voici le code que j'utilise actuellement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <p>
        <label><?php echo $lang['label_cat']; ?></label>
        <select id="categorie" name="categorie">
        <option value="-1"><?php echo $lang['choix_cat']; ?></option>
        <?php
            $categorie_sql = 'SELECT id_cat, nom_cat
                        FROM categorie_news
                        ORDER BY nom_cat
                            ASC';
     
            $categorie_requete = mysql_query($categorie_sql) or die('$categorie_sql<br/>'.mysql_error());
     
            while ($donnees_categorie = mysql_fetch_assoc($categorie_requete)) 
            {
                echo'<option value="'.$donnees_categorie['id_cat'].'">'.$donnees_categorie['nom_cat'].'</option>';
            }
        ?>
        </select>
    </p>
    <p>
        <label><?php echo $lang['label_rub']; ?></label>
        <select id="rubrique" name="rubrique">
        <option value="-1"><?php echo $lang['choix_rub']; ?></option>
        <?php
            $rubrique_sql = 'SELECT id_rub, nom_rub
                        FROM rubrique_news
                        ORDER BY nom_rub
                            ASC';
     
            $rubrique_requete = mysql_query($rubrique_sql) or die('$rubrique_sql<br/>'.mysql_error());
     
            while ($donnees_rubrique = mysql_fetch_assoc($rubrique_requete)) 
            {
                echo'<option value="'.$donnees_rubrique['id_rub'].'">'.$donnees_rubrique['nom_rub'].'</option>';
            }
        ?>
        </select>
    </p>
    /* EDIT : PROBLEME RESOLU COMME UN GRAND */

    /* PROBLEME EN COURS, TITRE SUJET */
    Voila je pense que le titre n'est pas assez explicite.
    j'ai sur ma page de prévisualisation, 3 boutons et 2 formulaires.
    Le premier formulaire ne contient qu'un bouton qui va permettre de mettre les informations dans la base de donnée. Aucun problème de ce côté.

    Le problème vient de l'autre formulaire que voici.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <form action="rediger_news.php" method="post">
        <fieldset>
            <legend>Modifications</legend>
            <p><strong>Modifier</strong> : Revenir sur la saisie de l'article.</p>
            <input name="action" value="Modifier" type="submit"/>
            <p><strong>Effacer</strong> : Attention ceci effacera tout le travail en cours !</p>
            <input name="action" value="Effacer" type="submit"/>
        </fieldset>
    </form>
    Comme vous pouvez le voir, la destination est unique et pourtant il y a bien 2 boutons différents qui ont 2 actions totalement différentes.
    Le premier est sensé revenir sur la page de rédaction avec les valeurs de Session sauvegardées correctement ce qui fonctionne.
    Le second doit revenir sur cette page mais a pour but d'effacer toutes les données en session.

    Je ne sais pas comment faire cette seconde opération, je pense bien qu'un petit session_unset(); pourrait faire l'affaire mais je ne sais comment mettre tout ceci en place vu que si je fais ceci que je clique sur n'importe lequel des deux boutons il va tout effacer.

    Si je ne suis pas assez clair avec mon problème, je suis près à reexpliquer tout plus précisement.


    Merci de votre aide.



    /* PROBLEME EN COURS */

  2. #2
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 77
    Points : 92
    Points
    92
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //Si l'utilisateur clique sur Effacer, il revient sur la page de rédaction vide.
    if (isset($_POST['effacer'])) {
    session_unset();
    }
    J'ai résolu le problème de la sorte.
    Niveau sécurité, un souci ?

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Bouton ruban avec actions différentes suivant Formulaire
    Par To12 dans le forum IHM
    Réponses: 1
    Dernier message: 27/05/2009, 11h47
  2. Double action sur un bouton de formulaire
    Par thor8one dans le forum ASP
    Réponses: 4
    Dernier message: 15/11/2007, 10h07
  3. Action automatique sur click d'un bouton de formulaire
    Par ned-flanders dans le forum Langage
    Réponses: 7
    Dernier message: 20/03/2007, 16h37
  4. Lancer une action JS depuis un bouton de formulaire
    Par davinout dans le forum Langage
    Réponses: 3
    Dernier message: 14/06/2006, 08h50
  5. Réponses: 2
    Dernier message: 03/02/2005, 08h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo