Récupérer une variable GET via un div refresh

Résolu/Fermé
Speecial Messages postés 26 Date d'inscription mercredi 18 octobre 2017 Statut Membre Dernière intervention 16 avril 2020 - Modifié le 6 oct. 2018 à 17:27
Speecial Messages postés 26 Date d'inscription mercredi 18 octobre 2017 Statut Membre Dernière intervention 16 avril 2020 - 27 oct. 2018 à 13:14
Bonjour à tous,

Je viens vous demander conseil, je code pour passer le temps un tchat multi salons avec la possibilité de créer ou pas le notre.

Mon soucis est ... l'index du salon récupère bien l'id qui se trouve dans l'url, mais les deux autres fichiers inclus via un div qui se refresh en jquery (messages_salons.php et chat_list.php) ne peuvent récupérer l'id dans l'url, avez vous une idée pour moi SVP ou une autre manière de procéder ?

Pour info je code en php mysql, certes vous me direz que jquery ne fera pas l'affaire pour un tchat multi salons, je le sais mais c'est aussi mon petit kiff de faire un beau ptit site de tchat lors de mon temps libre.

Merci pour vos futures réponses :)

5 réponses

Salut,
en GET tu peut simplement écrire l'url, si avec JavaScript c'est avec window location , avec php il y a la fonction header().
Quand tu parle de JQuery je suppose que tu te référè à AJAX? Si c'est ça il s'agit des métadonnées, donc le contenu du XML ou JSON (csv, etc...), il faudrait envoyer ta/tes variables GET dedans.
JQuery c'est du JavaScript donc tu peut très bien utiliser header.location.url pour avoir la chaîne de caractères (ou header.location qui retourne un objet).
1
Speecial Messages postés 26 Date d'inscription mercredi 18 octobre 2017 Statut Membre Dernière intervention 16 avril 2020
6 oct. 2018 à 18:22
Mon soucis est que le fichier qui se refresh, (la liste des connectés en salon porte son propre nom chat_list.php (à la fin si je fais des echo il n'inclut pas la variable que je cherche à récupérer
En effet je refresh bien avec de L'AJAX

et mon index de tchat est room.php?s= l'id du salon

Merci de ta réponse :)
0
Speecial Messages postés 26 Date d'inscription mercredi 18 octobre 2017 Statut Membre Dernière intervention 16 avril 2020
6 oct. 2018 à 18:29
Voilà le topo

0
oui même si c'est une technique moche et peu recommandé (tout comme GET en général) je voulais dire qu'en écrivant/ajoutant la variable manuellement c'est possible.

document.location.href='http.monsite.fr?mavariable1=valeur1&mavariable2=valeur2';
//-- ou alors dans le formulaire avec les input indiquant un attribut 'name' et bien sûr un submit valide

Je faisait ça au début, c'est pratique mais pas terrible côté sécurité. Par contre accessible par PHP $GET ou en obtenant l'url par JS.
J'espère pas répondre trop à côté bon courage.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
6 oct. 2018 à 18:35
Bonjour
Sans voir ton code....impossible de te répondre.

Nb: pour poster ton code merci d'appliquer ceci :https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

1
Speecial Messages postés 26 Date d'inscription mercredi 18 octobre 2017 Statut Membre Dernière intervention 16 avril 2020
6 oct. 2018 à 18:45
Salut merci de ta réactivité :) je vais d'abbors te passer le code js qui permet de charger les deux divs

		window.onload = actualisation();

		function refresh(forceScroll){

			$.get('messages_salons.php', function(data){

				var element = $('#mess');
				var onBottom = (element.scrollTop == element.scrollHeight)

				$('#mess').html(data);
				if (onBottom || this.forceScroll)
					element.scrollTop = element.scrollHeight;

				//setTimeout('refresh()', 6000);
			});
		}
		function loadEventHandler(){
			refresh(true);
			document.getElementById('texte').focus();
		};
		
       
		function changeColorBBcode(){
			var e = document.getElementById("color");
			var f = e.options[e.selectedIndex].value;
			bbcode('[color='+f+']', '[/color]');return(false)
		}

		function actualisation() {
			$.get("chat_list.php", function (result) {
				$('#ladiv_des_co').html(result);
			});
		}

		$(document).ready(function () {
			setInterval(function() {
				actualisation();
			}, 10000);
			setInterval(function() {
				refresh();
			}, 6000);
		});



Ensuite le code qui permet d'afficher les connectés du salon


<div style='overflow:auto;height:490px;direction:rtl;'>
    <div style='direction:ltr;'>

<?php
  include './config.php';

$req = $bdd->prepare('SELECT
  m.pseudo AS pseudo,
  m.avatar AS avatar,
  m.rang AS rang,
  m.sexe AS sexe,
  m.cle_salon AS cle_salon,
  m.age AS age,
  c.url_actuelle AS url_actuelle,
  m.id AS id
  FROM connectes c
  LEFT JOIN membres m ON c.id = m.id
  ORDER BY m.rang DESC');
  $req->execute();
  echo (''.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'');
    echo "<table border='0' width='100%'>";

while ($d = $req->fetch(PDO::FETCH_OBJ)) {

    $sql = $bdd->prepare('SELECT * FROM `liste_salons` WHERE id_joueur = ?');
        $sql->execute(array($d->id));
        $addon_j = $sql->fetch();
    $sql->closeCursor();

    if(!$addon_j){
      $addon_j['rang'] = "<img style='margin-bottom:-4px;' src='./img/heart_red.png' title='Modérateur'/>";
    } else {
     // $addon_j['rang'] = "<img style='margin-bottom:-4px;' src='./img/grade_blue.png' title='Modérateur'/>";   
    }

      //echo $addon_j['cle_salon'];
      //   if($addon_j['cle_salon'] == $d->cle_salon)

    if($d->rang == 2)
        { $d->rang = "<img style='margin-bottom:-4px;' src='./img/grade_1_franchise.png' title='Modérateur'/>"; }
    elseif ($d->rang == 1)
        { $d->rang = "<img style='margin-bottom:-4px;' src='./img/grade_0_franchise.png' title='Membre'/>"; }
    elseif ($d->rang == 3)
        { $d->rang = "<img style='margin-bottom:-4px;' src='./img/grade_2_franchise.png' title='Administrateur'/>"; }
    elseif ($d->rang == 0)
        { $d->rang = "<img style='margin-bottom:-4px;' src='./img/img_dev.png' title='Développeur'/>"; }
    elseif ($d->rang == 4)
        { $d->rang = "<img style='margin-bottom:-4px;' src='./img/img_sup.png' title='Superviseur'/>"; }

  $urlMembre = $d->url_actuelle;
  $urlMembre = explode('/', $urlMembre);
  if ($urlMembre[3] == "messages_salons.php" OR $urlMembre[3] == "chat_list.php" OR $urlMembre[3] == "room.php") {

/*    <a title="Visiter le profil" href="profil.php?id='. $d->id .'" target="_blank"><font color="#677179"><strong>' . $d->pseudo . '</strong></font></a>';
*/  
    echo "<tr>";
    echo "<td width='25px'>";
    echo $d->rang;
    //  echo $d->cle_salon;
    echo "</td>";
    echo "<td valign='middle' width='24px'>";
    if($d->sexe == "h"){
        echo "<div style='line-height:15px;border-radius:15px;' align='center' class='h'> ".$d->age." </div> ";
    } elseif($d->sexe == "f") {
        echo "<div style='line-height:15px;border-radius:15px;' align='center' class='f'> ".$d->age." </div> ";
    }
    echo "</td>";
    echo "<td> ";
    echo " ".$d->pseudo."".$addon_j['rang'];
    echo "</td>";
    echo "</tr>";
  }
}
    echo "</table>";
?>

    </div><!--fin du div remettre les infos du div dans le bon sens-->
</div><!--fin du div scrollable + reverse scrollbar-->
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
6 oct. 2018 à 19:50
Tu n'envoies aucune variable...

$.get('fichierphp.php', 'variable=truc', function(data) {
...
});

0
Speecial Messages postés 26 Date d'inscription mercredi 18 octobre 2017 Statut Membre Dernière intervention 16 avril 2020
16 oct. 2018 à 10:38
Bonjour, comment ça je n'envoi aucunes variables ?

Le traitement des messages que je rentre dans la bdd se fait en php.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
16 oct. 2018 à 11:50
Ta question concerne

Mon soucis est ... l'index du salon récupère bien l'id qui se trouve dans l'url, mais les deux autres fichiers inclus via un div qui se refresh en jquery (messages_salons.php et chat_list.php) ne peuvent récupérer l'id dans l'url, avez vous une idée pour moi SVP ou une autre manière de procéder ?


Dans tes codes JS qui vont chercher les informations dans tes fichiers PHP, tu les appelles comme ceci :
function actualisation() {
			$.get("chat_list.php", function (result) {
				$('#ladiv_des_co').html(result);
			});
		}

function refresh(forceScroll){

			$.get('messages_salons.php', function(data){

				var element = $('#mess');
				var onBottom = (element.scrollTop == element.scrollHeight)

				$('#mess').html(data);
				if (onBottom || this.forceScroll)
					element.scrollTop = element.scrollHeight;

				//setTimeout('refresh()', 6000);
			});
		}

Dans aucune de ces deux fonctions tu ne passes de variables contenant l' ID tant désiré.....

Il faut donc transmettre la variable comme je te l'ai montré dans mon exemple :
$.get('fichierphp.php', 'variable=truc', function(data) {
...
});

Où, bien entendu, variable=truc est à remplacer par : id=lavaleurdetonid
0
Speecial Messages postés 26 Date d'inscription mercredi 18 octobre 2017 Statut Membre Dernière intervention 16 avril 2020
16 oct. 2018 à 13:02
Donc ma variable qui est dans l'url je l'utilise comme ça ?

var name = $_GET('s'),
sid = $_GET('s');

s=sid ?

Cdlt :)
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
16 oct. 2018 à 14:08
dans le javascript
var sid = '<?php echo $_GET['s']; ?>';


Ou sinon via une fonction js comme par exemple
function getUrlParameter(name) {
    name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
    var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
    var results = regex.exec(location.search);
    return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
};


var sid = getUrlParameter('s');

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Speecial Messages postés 26 Date d'inscription mercredi 18 octobre 2017 Statut Membre Dernière intervention 16 avril 2020
27 oct. 2018 à 13:14
Bonjour,

Je viens de réussir en faisant comme ça,

		

function actualisation() {

            $.get('chat_list.php?s=<?php echo $_GET['s']; ?>', function(result) {

				$('#ladiv_des_co').html(result);
			});
		}



Vous m'avez mis sur la bonne voie, je passe le post en résolu merci beaucoup :)
0