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 */