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

PHP & Base de données Discussion :

Récupération d'un id de page en page [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Femme Profil pro
    étudiante
    Inscrit en
    Septembre 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Septembre 2014
    Messages : 101
    Points : 52
    Points
    52
    Par défaut Récupération d'un id de page en page
    Bonjour,
    je créée un forum de discussion avec 3 pages (la page forum qui affiche les sujets, la page repforum qui affiche les réponses à un sujet, la page reprepforum qui permet de rédiger une réponse qui, après validation du formulaire, se postera sur repforum). J'espère que c'est assez claire

    Sur forum j'ai un idforum par sujet. Je le récupère sur repforum pour n'avoir que les réponses au sujet choisi. Je souhaite le récupérer de nouveau sur reprepforum pour que la réponse rédigée soit attribuée au bon sujet mais voilà que là, ca ne fonctionne pas.
    Quelqu'un pour m'aider??? J'suis débutante, je galère un peu, désolée!!

    Voilà repforum : (passage de forum à repforum: affichage correct, passage de reprepforum à repforum: affichage de toutes les réponses, donc pas de prise en compte de l'idforum voulu)
    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
     
    <?php
    //Récupération du sujet choisi.
    $bdd = new PDO('mysql:host=..............);
    $req = $bdd->prepare('SELECT pseudo, sujet, DATE_FORMAT(datforum, \'%d/%m/%Y à %Hh%imin%ss\') AS datforum_fr FROM forum WHERE idforum = ?');
    $req->execute(array($_GET['suj']));
    $donnees = $req->fetch();
    ?>
     
    .........
     
    // Récupération des commentaires. 
    $bdd = new PDO('mysql:host=.....................');
    $req = $bdd->prepare('SELECT pseudorep, message, DATE_FORMAT(daterep, \'%d/%m/%Y à %Hh%imin%ss\') AS daterep_fr FROM repforum WHERE idforum = ? ORDER BY daterep');
    $req->execute(array($_GET['suj']));
    while ($donnees = $req->fetch()) {
     
    .......
     
    <form action="repforum.php" method="post" class="creer">
    <input type="submit" name="repondre" value="Répondre à la discussion">
    </form>
    <form action="forum.php" method="post" class="retour">
    <input type="submit" name="retourner" value="Retour aux sujets">
    </form>
     
    <?php
    if(!isset($_POST['repondre'])) {
    }
    elseif((isset($_POST['repondre'])) && (!$_SESSION)) {
    header('Location: reprepforum.php?suj=$_GET['suj']');
    }
    else {
    echo '<div id="marge">
    Pour participer au forum, vous devez d\'abord vous identifiez en créant ou en vous connectant à votre compte</a>.
    </div>';
    }
    Voici reprepforum:
    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
     
    <form action="reprepforum.php" method="post">
    <label for="pseudo">Pseudo</label>
    <input type="text" name="pseudo" size="130" maxlength="30"><br>
    <label for="message">Message</label>
    <textarea name="message" rows="11" cols="97" maxlength="1000" wrap="hard" placeholder="Exprimez-vous"></textarea><br><br><br>
    <input type="submit" value="Envoyer" name="submit">
    <input type="reset" value="Annuler">
    </form>
     
    <?php
    // On vérifie que le formulaire vient d'être envoié.
    if (!isset($_POST['submit'])) {
    }
    // On regarde si nos variables ne sont pas vides.
    elseif ((isset($_POST['submit'])) && (!empty($_POST['pseudo'])) && (!empty($_POST['message']))) {
     
    	// On teste la conformité d'écriture des champs.
    	// Pseudo  
    	$_POST['pseudo'] = htmlspecialchars($_POST['pseudo']);     
    	if (preg_match("#^[a-zA-Z0-9éèàêâùïüëô.-_]{3,30}$#", $_POST['pseudo'])) {
    	// Message
    	$_POST['message'] = htmlspecialchars($_POST['message']);   
    	if (preg_match("#^[a-zA-Z0-9éèàêâùïüëô;,.\"\'() _-]{3,1000}$#", $_POST['message'])) {
     
    		// Insertion des informations dans la base de données
    		$bdd = new PDO('mysql:host=.........');
    		$req = $bdd->prepare('INSERT INTO repforum(idforum, pseudorep, message, daterep) VALUE(:idforum, :pseudo, :message, NOW())');
    		$req->execute(array(
    		':idforum' => $_GET['suj'],
       		':pseudo' => $_POST['pseudo'],
       		':message' => $_POST['message']));
     
    		//Redirection et rafraichissement de la page
    		$delai=1; 
    		$url='repforum.php?suj=$_GET['suj']';
    		header("Refresh: $delai;url=$url");
    Merciiiiiiiii!!!

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    tes url sont mal construites
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: reprepforum.php?suj=$_GET['suj']');
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: reprepforum.php?suj=' . $_GET['suj']);
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $url='repforum.php?suj=$_GET['suj']';
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $url='repforum.php?suj=' . $_GET['suj'];
    D'ailleurs je ne comprends meme pas comment ton code pouvait s'executer.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Femme Profil pro
    étudiante
    Inscrit en
    Septembre 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Septembre 2014
    Messages : 101
    Points : 52
    Points
    52
    Par défaut
    Bonjour Sabotage,
    merci pour cette correction, mais ca n'a rien changé, j'ai toujours exactement le mm problème, quand je vais sur reprepforum pour remplir le formulaire afin d'ajouter un commentaire au sujet choisi dans le forum, je valide, je suis redirigée vers repforum et là je vois tous les commentaires concernant ce sujet mais aussi les commentaires des autres sujet, c'est pas sélectif. :-s

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quand tu reviens sur repforum tu as bien l'id dans l'url ?
    Au passage, revois tes noms : "suj" pour "idforum" c'est incompréhensible ; idem pour "repforum" et "reprepforum"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Femme Profil pro
    étudiante
    Inscrit en
    Septembre 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Septembre 2014
    Messages : 101
    Points : 52
    Points
    52
    Par défaut
    Bonjour,
    non justement, déjà quand je suis sur repforum (affichage d'un sujet et de ses commentaires) et que je clic pour rejoindre reprepforum (formulaire pour ajouter un commentaire à cette discussion) je n'ai déjà plus de valeur d'id (suj dans ce cas)dans l'url. Du coup ca ne s'arrange pas quand je valide le formulaire de reprepforum pour revenir sur repforum. :-s

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Tu mélanges allégrement les $_POST et $_GET et tu ne formes pas d'url avec GET.

    Exemple dans reprepforum.php

    Tu crée un formulaire avec le chemin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form action="reprepforum.php" method="post">
    dans ce cas il n'y rien de passer en GET or une fois envoyé tu essayes de former une url en récupérant un GET qui n'existe pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (preg_match("#^[a-zA-Z0-9éèàêâùïüëô;,.\"\'() _-]{3,1000}$#", $_POST['message'])) {
    si je rentre dans cette condition, tu essayes le header suivant (que tu dois retravailler comme Sabotage te le conseille) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $delai=1; 
    		$url='repforum.php?suj=$_GET['suj']';
    		header("Refresh: $delai;url=$url");
    Nulle part je ne vois de référence à "suj" !!!

  7. #7
    Membre du Club
    Femme Profil pro
    étudiante
    Inscrit en
    Septembre 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Septembre 2014
    Messages : 101
    Points : 52
    Points
    52
    Par défaut
    Merci, mais je ne suis pas sur d'avoir tout bien compris:
    -->il ne faut pas que j'utilise method=post mais plutôt method=get pour mon formulaire puis du coup que je transforme tous mes $_POST() qui en découle en $_GET.
    -->il faut que je tranforme mon <form action="reprepforum.php"...> en quelques choses de ce style: <form action="reprepforum.php?suj=$_GET['suj']" ....> de façon à pouvoir récupérer mon $_GET['suj'] dans mon header de redirection.
    ou alors il est préfèrable d'en faire une variable du style $id=$_GET['suj'] pour pouvoir le réutiliser...

    C'est bon ou je suis à côté de la plaque???

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    La question est d'où vient

  9. #9
    Membre du Club
    Femme Profil pro
    étudiante
    Inscrit en
    Septembre 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Septembre 2014
    Messages : 101
    Points : 52
    Points
    52
    Par défaut
    Alors si je reprends depuis le début:
    Tout commence sur la page forum sur laquelle s'affiche tous les sujets. Chaque sujet à un idforum qui lui est propre que je récupère grâce à un suj=$_GET['suj'] pour l'utiliser dans la page repforum. Jusqu'ici, pas de souci.
    Je l'utilise alors dans une requète sur ma page repforum pour obtenir le sujet que je souhaite et les messages qui lui sont associés. Il apparait d'ailleur correctement dans l'url.
    Sur cette même page vient alors mon header qui m'oriente sur reprepforum. Mais là dans l'url, suj=(vide).
    Je pense donc que le problème se trouve sur repforum, il faut que je redéfinir le $_GET['suj'] dans repforum de façon qu'au passage de repforum vers reprepforum il est une valeur, mais je ne vois pas comment.

  10. #10
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Et il y a quoi dans forum.php ?

  11. #11
    Membre du Club
    Femme Profil pro
    étudiante
    Inscrit en
    Septembre 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Septembre 2014
    Messages : 101
    Points : 52
    Points
    52
    Par défaut
    Il y a ca:
    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
     
    <?php	
    // Poste du message sur la page forum.
    $bdd = new PDO('mysql:host=...............');
    $reponse = $bdd->query('SELECT idforum, pseudo, sujet, DATE_FORMAT(datforum, \'%d/%m/%Y à %Hh%imin%ss\') AS datforum_fr FROM forum ORDER BY idforum DESC LIMIT 0, 20');
    ?>
     
    <br><br>
    <h4 class="vertforum">
    		     <div class="idforum">Id</div>
    		     <div id="datforum">Dernière réponse</div>
    		     <div id="pseudoforum">Pseudo</div>
                         <div class="titreforum">Sujet</div>
    </h4>
    <?php
    //J'affiche les lignes de mon tableau une à une avec une boucle.
    while ($donnees = $reponse->fetch()) {
    if (htmlspecialchars($donnees['idforum'])%2 == 0) {
        $class = "pair";
    }
    else {
       $class = "impair";
    }
    echo '<div class="blancforum">
    	<div class="' . $class . '">
              	   <p class="sousid">' . htmlspecialchars($donnees['idforum']) . '</p>
                       <p id="datforum">' . htmlspecialchars($donnees['datforum_fr']) . '</p>
    	 	   <p id="pseudoforum">' . htmlspecialchars($donnees['pseudo']) . '</p>
    	  	   <p class="sujetforum"><a href="repforum.php?suj=' . htmlspecialchars($donnees['idforum']) . '">' . htmlspecialchars($donnees['sujet']) . '</a></p>
            </div>
         </div>';
    }
     
    //Fermeture de la boucle.
    $reponse->closeCursor();
    ?>

  12. #12
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Ha enfin, le voila

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <p class="sujetforum"><a href="repforum.php?suj=' . htmlspecialchars($donnees['idforum'])
    Va falloir apprendre à séparer le code Html, du code PHP, pour que cela soit plus propre.

    donc dans ton fichier repforum, comme @Sabotage te l'as dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header('Location: reprepforum.php?suj='.$_GET['suj']);
    ensuite dans reprepforum

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
     
    <form action="reprepforum.php?suj=<?php echo $_GET['suj'] ?>" method="post">
     
    ......
     
    //comme @Sabotage te l'as dit
     
    $url='repforum.php?suj='.$_GET['suj'];
    Cela va fonctionner, mais tu aurais plus de chance de travailler avec des Sessions ou un Registry, car ici l'id est visible dans l'URL et c'est loin d'être sécure

  13. #13
    Membre du Club
    Femme Profil pro
    étudiante
    Inscrit en
    Septembre 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Septembre 2014
    Messages : 101
    Points : 52
    Points
    52
    Par défaut
    Merci beaucoup!!!! Ca fonctionne enfin.
    Oui j'imagine que ma façon d'écrire tout ca est encore un peu brouillon, mais maintenant que ca fonctionne je vais voir à faire quelques choses de plus propre.
    Encore merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/04/2011, 09h46
  2. récupération de l'URL complète de la page
    Par tomguiss dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/09/2009, 10h42
  3. Récupération des données de formulaire dans une page JSP
    Par fauthie dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 16/09/2009, 14h02
  4. Réponses: 5
    Dernier message: 21/03/2009, 17h33
  5. Réponses: 16
    Dernier message: 29/01/2008, 17h54

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