PHP

Envoyer un message sans recharger la page

Non Résolu

Salut à tous,


Je travail actuellement sur la série Developper son site de A à Z et je l'ai quasiment fini

Sauf que j'y intègre le système de chat de la formation sur le site de rencontre et tout se deroulait bien sauf a la partie 13.4 de la formation sur le site de rencontre qui est la première partie sur la non rechargement de la page ou on intègre les script et du Ajax et c'est a partir de la que rien ne marche, les messages continue d'aller normalement mais ne font que recharger la page et me renvoie a la tete de la page, chose qui n'est pas vraiment agréable,


Merci d'avance


<?php
session_start();


include('bd/connexionDB.php');


if(!isset($_SESSION['id'])){
  header('Location: index.php');
  exit;
}


$get_id = (int) $_GET['id'];


if ($get_id <= 0) {


  header('Location: messagerie.php');
  exit;
  // code...
}






$verifier_relation = $DB->query("SELECT id FROM relation WHERE ((id_demandeur, id_receveur) = (:id1, :id2)
                     OR (id_demandeur, id_receveur) = (:id2, :id1)) AND statut = :statut",
                     array('id1' => $_SESSION['id'], 'id2' => $get_id, 'statut' => 2));


$verifier_relation = $verifier_relation->fetchAll();


if (isset($verifier_relation['id'])) {


  header('Location: messagerie.php');
  exit;
  // code...
}










if (!empty($_POST)) {


    extract($_POST);
    $valid = true;


    if (isset($_POST['envoyer'])) {


        $message = (string) trim($message);


        if (empty($message)) {


            $valid = false;
          // code...
        }


        if ($valid) {


            $date_message = date("Y-m-d h:m:s");


            $DB->insert("INSERT INTO messagerie (id_from, id_to, message, date_message, lu) VALUES (?, ?, ?, ?, ?)",
                         array($_SESSION['id'], $get_id, $message, $date_message, 1));


               header('Location: message.php?id=' . $get_id);
               exit;
              // code...
            }
          // code...
        }


    }






  $afficher_message = $DB->query("SELECT * FROM messagerie WHERE ((id_from, id_to) = (:id1, :id2)
                       OR (id_from, id_to) = (:id2, :id1)) ORDER BY date_message ",
                       array('id1' => $_SESSION['id'], 'id2' => $get_id));


	$afficher_message = $afficher_message->fetchAll();




  $afficher_profil = $DB->query("SELECT *
                                 FROM utilisateur
                                 WHERE id = ?",
                                 array($get_id));


  $afficher_profil = $afficher_profil->fetch();






?>
<!doctype html>
<html lang="fr">
    <head>
        <!-- <base href="/"/> -->
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Message</title>
        <link rel="stylesheet" href="css/bootstrap.min.css">
        <?php


            if (isset($_SESSION['id']) && $_SESSION['theme'] == 1) {


                echo '<link rel="stylesheet" href="style-sombre.css">';
              // code...
            } else {


                echo '<link rel="stylesheet" href="style.css">';
              // code...
            }


        ?>
    </head>
	<body>


  		<?php
  			require_once('nav.php');
  		?>


  		<div class="container">


    			<div class="row">


      				<div class="container col-md-8" style="margin-top:40px;">


                    <div style="margin:25px;">


                  <?php
                  if (file_exists("public/avatars/".$_SESSION['id']. "/" .$_SESSION['avatar']) && isset($_SESSION['avatar'])) {
                    ?>


                    <img src="<?= "public/avatars/".$_SESSION['id']. "/" .$_SESSION['avatar']; ?>" width="120" class="rounded-circle">


                    <?php
                  } else{
                    ?>


                    <?php
                  }
                  ?>


                  <img src="public\avatars\defaults\images.png" width="30" class="rounded-circle">


                  <a href="voir_profil.php?id=<?= $get_id ?>" style=" text-decoration: none;">
                    <strong><?= $afficher_profil['prenom'] . " " .  $afficher_profil['nom']; ?></strong> </a>


                  <p style=" text-align: right;"><a href="voir_cv.php?id=<?= $get_id ?>" style="text-decoration: none;">
                    <strong>Curriculum Vitae</strong> </a></p>


                </div>


                  <div style="border-top: 2px solid #ddd; margin: 10px; padding: 5px;"></div>


        					<?php


  						        foreach($afficher_message as $am){


                          if ($am['id_from'] == $_SESSION['id']) {


                  ?>


                      <div class="col-md-4"></div>
                      <div  style="background: #19AAB3; margin: 20px; padding: 5px 10px; border-radius: 20px; color: #fff; text-align:right;">


                          <?= nl2br($am['message']) ?>


                      </div>
                      <div id="afficher-message"></div>


                  <?php


                }else{


        					?>


                      <div style="background: #c8d6d4; margin: 20px; padding: 5px 10px; border-radius: 20px; text-align:left;">


                          <?= nl2br($am['message']) ?>


                      </div>


        					<?php
                        }
        						}
        					?>


      				</div>


              <div class="container col-md-7">


              <form method="post" id="envoyer" style="float:right;">


                  <div class="form-group">
                      <textarea rows="2" cols="50" style="box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); resize:none; border-radius:20px; margin: 5px;"
                      class="form-control" placeholder="Votre message..." name="message" id="message"></textarea>
                  </div>


                  <input style="float:right;" class="btn btn-info" type="submit" name="envoyer" value="Envoyer"/>


              </form>


          </div>


    			</div>


  		</div>


		<!-- Optional JavaScript -->
		<!-- jQuery first, then Popper.js, then Bootstrap JS -->
		<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
		<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
		<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
    


    <script>


        $(document).ready(function(){


            $('#envoyer').on("submit". function(e){


                e.preventDefault();


                var id;


                var message;


                id = <?= json_encode($get_id, JSON_UNESCAPED_UNICODE); ?>;


                message = document.getElementById('message').value;


                document.getElementById('message').value = '';


                if (id > 0 && message != "") {


                    $.ajax({


                        url : 'envoyer-message.php',


                        method : 'Post',


                        dataType : 'html',


                        data : {id: id, message: message},


                        success : function(data){


                            $('#afficher-message').append(data);


                        },


                        error : function(e, xhr, s){


                            let error = e.responseJSON;


                            if (e.statut == 403 && typeof error !== 'undefined') {


                                alert('Erreur 403');


                            } else if (e.statut == 404) {


                                alert('Erreur 404');


                            } else if (e.statut == 401) {


                                alert('Erreur 401');


                            } else {


                                alert('Erreur Ajax');


                            }


                        }


                    });


                }


            });


        });


    </script>
	</body>
</html>


534 vues
11 juillet 2020 à 23:25 (Édité)
Cette pub permet au site de vivre ...

4 commentaires

Re:


On a plus reçu de nouvelles concernant ton problème... L'as-tu résolu ? 🤔

Si c'est le cas, il faut cliquer sur le bouton vert "Résolu" 😉

Salut @Gael-Mk,


Si tu mets ceci :


<script>
  $('#envoyer').on("submit". function(e){
    e.preventDefault();
    alert('ok');
    ...
  });
</script>


Obtiens-tu le message ok dans ton navigateur ?



Si tu n'obtiens pas ce message essaie de recharger complètement le cache de ta page avec la combinaison : Crtl + MAJ + R et retente

Merci @Jerem971



Mais j'ai effectivement bien tenu compte de tout ce qui est mentionné dans la vidéo

Hello @Gael-Mk,


As-tu suivis correctement les vidéos concernant cela ? 🤔

Il faut savoir que le code n'est pas encore disponible en téléchargement étant donné que la formation "Créer son site de rencontres" est en cours de rédaction... Il te faut donc vérifier ce que saisi @Clouder sur son éditeur dans la vidéo...

Il existe également un article de formation sur la création de chat ! Cela pourrait t'aider à résoudre ce problème ! 😉

Cette pub permet au site de vivre ...