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 :

Ajout d'une partie commentaire [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Points : 74
    Points
    74
    Par défaut Ajout d'une partie commentaire
    Bonjour,

    Je vous explique ce que j'ai et ce que je voudrais :

    Ce que j'ai :
    Deux pages :
    - Une qui liste les cours (sur laquelle on choisi le cours voulu)
    - Une qui affiche le cours sélectionné

    Ce que j'aimerais :
    - Ajouter un bloc "COMMENTAIRES" sur la page qui affiche le cours (en bas) où l'on postera/affichera les commentaires du bon cours.
    Pour cela, j'ai fait une table dont voici le :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE IF NOT EXISTS `test_site_commentaires_cours_tp` (
      `id_commentaires_cours_tp` int(11) NOT NULL AUTO_INCREMENT,
      `id_cours_tp` int(11) NOT NULL,
      `id_utilisateur` int(11) NOT NULL,
      `date_depot` datetime NOT NULL,
      `texte_commentaire` text CHARACTER SET utf8 NOT NULL,
      PRIMARY KEY (`id_commentaires_cours_tp`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

    Voici le de la table test_site_cours_tp :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE TABLE IF NOT EXISTS `test_site_cours_tp` (
      `id_cours_tp` int(11) NOT NULL AUTO_INCREMENT,
      `date_depot_cours_tp` datetime NOT NULL,
      `date_cloture_validation_cours_tp` datetime NOT NULL,
      `titre_cours_tp` varchar(255) CHARACTER SET utf8 NOT NULL,
      `contenu_cours_tp` longtext CHARACTER SET utf8 NOT NULL,
      `type_devoir_cours_tp` int(11) NOT NULL DEFAULT '1',
      `matiere_cours_tp` varchar(255) CHARACTER SET utf8 NOT NULL,
      `nom_auteur_cours_tp` varchar(255) CHARACTER SET utf8 NOT NULL,
      `classe_cours_tp` varchar(255) CHARACTER SET utf8 NOT NULL,
      PRIMARY KEY (`id_cours_tp`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;

    Jusque là tout va bien !!!

    Afin de poster un commentaire, j'ai fait un formulaire que j'ai mis dans un que voici :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<form method="post" action=""><textarea name="texte_commentaire_cours"></textarea><input type="submit" name="envoyer_commentaire" value="Poster ce nouveau commentaire !" />';
    (le début du formulaire)

    Voici comment je récupère $id_cours_tp :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $id_cours_tp = intval($_POST['id_cours_tp']);]
    que je mets en session comme ça
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['id_cours_tp']=$id_cours_tp;
    .

    La requête SQL :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query_selection_commentaire_cours_tp = mysql_query('SELECT t1.id_utilisateur,t1.date_depot,t1.texte_commentaire,t1.id_cours_tp FROM test_site_commentaires_cours_tp t1,test_site_cours_tp t2 WHERE t2.id_cours_tp=t1.id_commentaires_cours_tp AND t2.id_cours_tp ='.$id_cours_tp) or die ('Erreur sur la requête SQL concernant la sélection des commentaires par rapport aux bons Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    Le traitement (les tests+boucle) :
    Code php : 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
     
    while ($donnees_selection_commentaire_cours_tp = mysql_fetch_assoc($query_selection_commentaire_cours_tp)) {
    	echo $donnees_selection_commentaire_cours_tp["id_cours_tp"];
    	echo $donnees_selection_commentaire_cours_tp["pseudo_utilisateur"];
    	echo $donnees_selection_commentaire_cours_tp["date_depot"];
    	echo $donnees_selection_commentaire_cours_tp["texte_commentaire"];
    }
    if(isset($_POST['envoyer_commentaire'])){
    	if(strlen($_POST['texte_commentaire_cours'])<1){
    		echo 'Vous devez saisir votre commentaire.';
    }
    else
    	$texte_commentaire_cours=mysql_real_escape_string(stripcslashes(htmlspecialchars($_POST["texte_commentaire_cours"])));
    	$insertion_commentaire_cours_tp = mysql_query("INSERT INTO  test_site_commentaires_cours_tp(id_utilisateur,date_depot,texte_commentaire,id_cours_tp) VALUE ('$query_recuperation_identifiant_connecte' ,now(),'$texte_commentaire_cours','$id_cours_tp'") or die("Erreur sur la requête SQL qui insère des commentaires du Cours/TP correspondant.");
    }
    }
    echo '</form>';

    Tout d'abord, je rencontre un problème lors de la soumission du formulaire. Quand je soumet le formulaire, tout disparait (une page blanche s'affiche) alors que je voudrais simplement (ne pas toucher au cours qui sera au dessus) soit :
    -afficher un message d'erreur
    -faire la requête et afficher le message

    Voici la variable de session $query_recuperation_identifiant_connecte :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_recuperation_identifiant_connecte=$_SESSION['id_utilisateur'];
    .

    En une question : comment faire pour éviter que ça affiche une page blanche lors de la soumission du formulaire ? Il ne faut pas perdre
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['id_cours_tp']=$id_cours_tp;
    (à mon avis)...

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 100
    Points : 4 445
    Points
    4 445
    Par défaut
    lorsque tu envois avec ton formulaire (nouveau commentaire) tu ne renvois pas les mêmes données que lorsque tu est arrivé sur la page la première fois.

    par exemple il faut repasser l'id du cours (voir d'autres) en le remettant dans le formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="id_cours_tp" value="xxxxx">
    sinon $id_cours_tp = intval($_POST['id_cours_tp']); est null
    $moi= ( !== ) ? : ;

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Points : 74
    Points
    74
    Par défaut
    Ah oui, j'essaye et je te dis en tout cas merci bien .

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Points : 74
    Points
    74
    Par défaut
    Je l'ai rajouté, le voici maintenant :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<form method="post" action=""><textarea name="texte_commentaire_cours"></textarea><input type="hidden" name="id_cours_tp" value="'.$id_cours_tp.'"><input type="submit" name="envoyer_commentaire" value="Poster ce nouveau commentaire !" />';

    Juste pour vous tenir au courant : ça, c'est réglé, maintenant il me met : Erreur sur la requête SQL qui insère des commentaires du Cours correspondant.

    Voici la requête SQL :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $insertion_commentaire_cours_tp = mysql_query("
    INSERT INTO  test_site_commentaires_cours_tp(id_utilisateur,date_depot,texte_commentaire,id_cours_tp)
    VALUE ('$query_recuperation_identifiant_connecte' ,now(),'$texte_commentaire_cours','$id_cours_tp'")
    or die("Erreur sur la requête SQL qui insère des commentaires du Cours correspondant.");

    Comme vous pouvez le voir, j'ai mis $query_recuperation_identifiant_connecte qui correspond à
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_recuperation_identifiant_connecte=$_SESSION['id_utilisateur'];
    .

  5. #5
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 100
    Points : 4 445
    Points
    4 445
    Par défaut
    dsl mais ne comptes pas sur moi pour ca.

    Un minimum de debug

    on te la dit et re-re-dit

    dans le desordre :
    1) un echo de ta requete
    2) enleve le die() qui masque l'erreur sql
    3) teste la requete dans phpmyadmin
    $moi= ( !== ) ? : ;

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Points : 74
    Points
    74
    Par défaut
    J'ai corrigé la requête SQL, la voici :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO  test_site_commentaires_cours_tp(id_utilisateur,date_depot,texte_commentaire,id_cours_tp)
    VALUES (".$_SESSION['id_utilisateur'].",now(),'$texte_commentaire_cours','$id_cours_tp')

  7. #7
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 100
    Points : 4 445
    Points
    4 445
    Par défaut
    ca marche tres bien tout seul
    $moi= ( !== ) ? : ;

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    Je reviens vers vous pour vous dire que j'ai avancé.
    Tout fonctionne mais j'aimerais afficher le pseudo de l'utilisateur plutôt que son identifiant.

    Voici la requête SQL :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $query_selection_commentaire_cours_tp = mysql_query("
    SELECT t1.id_utilisateur,t1.date_depot,t1.texte_commentaire,t2.id_cours_tp 
    FROM test_site_commentaires_cours_tp t1,test_site_cours_tp t2
    WHERE t1.id_cours_tp=t2.id_cours_tp
    AND t2.id_cours_tp='$id_cours_tp'")
    or die ('Erreur sur la requête SQL concernant la sélection des commentaires par rapport aux bons Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL

    Je vous mets la boucle en intégralité :
    Code php : 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
     
    while ($donnees_selection_commentaire_cours_tp = mysql_fetch_assoc($query_selection_commentaire_cours_tp)) {
    	echo '<div class="commentaires">';
    	echo '<div id="titre_commentaires">Commentaires.</div>';
    	echo "<div class='entete'>Déposé <b>".dateLongueAvecHeure($donnees_selection_commentaire_cours_tp["date_depot"])."</b> par <b>".$donnees_selection_commentaire_cours_tp["id_utilisateur"]."</b> :</div>";
    	echo "<div class='detail'>".html_entity_decode($donnees_selection_commentaire_cours_tp["texte_commentaire"])."</div>";
    }
    echo '<br /><center><form method="post" action=""><textarea name="texte_commentaire_cours"></textarea><input type="hidden" name="id_cours_tp" value="'.$id_cours_tp.'"><input type="submit" name="envoyer_commentaire" value="Poster ce nouveau commentaire !" />';
    if(isset($_POST['envoyer_commentaire'])){
    	if(strlen($_POST['texte_commentaire_cours'])<1){
    		echo 'Vous devez saisir votre commentaire.';
    		exit();
    }
    else
    	$texte_commentaire_cours=mysql_real_escape_string(stripcslashes(htmlspecialchars($_POST["texte_commentaire_cours"])));
    	$insertion_commentaire_cours_tp = mysql_query("INSERT INTO  test_site_commentaires_cours_tp(id_utilisateur,date_depot,texte_commentaire,id_cours_tp)
    VALUES (".$_SESSION['id_utilisateur'].",now(),'$texte_commentaire_cours','$id_cours_tp')")
    or die("Erreur sur la requête SQL qui insère des commentaires du Cours/TP correspondant."); 
    	echo "Votre commentaire a été posté.";
    }
    }
    echo '</form></center>';
    }

    Voici la ligne dont je parle :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<div class='entete'>Déposé <b>".dateLongueAvecHeure($donnees_selection_commentaire_cours_tp["date_depot"])."</b> par <b>".$donnees_selection_commentaire_cours_tp["id_utilisateur"]."</b> :</div>";
    .

    J'aimerais afficher non pas l'identifiant de l'utilisateur mais son pseudo.

    Voilà.

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Points : 74
    Points
    74
    Par défaut
    J'ai réussi.

    Voici la requête SQL :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $query_selection_commentaire_cours_tp = mysql_query("
    SELECT t3.pseudo_utilisateur,t1.id_utilisateur,t1.date_depot,t1.texte_commentaire,t2.id_cours_tp
    FROM test_site_commentaires_cours_tp t1,test_site_cours_tp t2,test_site_utilisateur t3
    WHERE t1.id_cours_tp=t2.id_cours_tp
    AND t2.id_cours_tp='$id_cours_tp'
    AND t1.id_utilisateur=t3.id_utilisateur")
    or die ('Erreur sur la requête SQL concernant la sélection des commentaires par rapport aux bons Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL

    Voici la ligne :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<div class='entete'>Déposé <b>".dateLongueAvecHeure($donnees_selection_commentaire_cours_tp["date_depot"])."</b> par <b>".$donnees_selection_commentaire_cours_tp["pseudo_utilisateur"]."</b> :</div>";

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

Discussions similaires

  1. Ajout d'une partie d'enregistrement
    Par drill dans le forum Langage
    Réponses: 5
    Dernier message: 25/11/2010, 09h00
  2. Réponses: 2
    Dernier message: 07/10/2008, 14h54
  3. Ajout d'une partie certification dans chaques langages?
    Par ganga dans le forum Evolutions du club
    Réponses: 3
    Dernier message: 13/05/2008, 21h32
  4. passer toute une partie de code en commentaire
    Par schwarzy2 dans le forum VBA Access
    Réponses: 4
    Dernier message: 31/10/2007, 12h03
  5. Réponses: 5
    Dernier message: 02/01/2007, 15h19

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