Récuperer information GET via MODAL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Récuperer information GET via MODAL

Re: Récuperer information GET via MODAL

par fabien_14 » 25 nov. 2013, 09:16

Hello

Je me premet de relancer :)

Re: Récuperer information GET via MODAL

par fabien_14 » 19 nov. 2013, 23:44

Hello

J'ai réussi a passé via un formulaire c'est super !

Par contre j'ai un autre petit probleme !

Le graphiste ma fait le design avec ce type d'appel de MODAL
					<div class="cell info1" data-id="65"><a href="#" class="plus1">1</a></div>
Son appel de la MODAL:
jQuery(document).ready(function(){
  jQuery(".info1").click(function(e){
    e.preventDefault();
    $('#modal_info').slideDown();
    $('#mask').css('display', 'block'); 
    $(window).scrollTop(0);
	var param = $(this).data('id');

    });
Hors je voudrais mettre ce code ci-dessous (Car il fonctionne) mais la Modal n'apparait pas :s
   jQuery.ajax({
                    type: "GET",
                    url: "test.php?w=1&id="+pId,
                    dataType: 'text',
                     contentType: "application/x-www-form-urlencoded;charset=UTF-8",
                    beforeSend: function(xhr) {
                    xhr.overrideMimeType('text/html; charset=UTF-8');
                },
                    success: function(data,textStatus){
                        $(function(){
                                $('#dialog').dialog({
                                        bgiframe: true,
                                        resizable: true,
                                        width: 350,
                                        title: 'test'
                                });
                                //Je remplis ma DIV avec les infos
                                $('#dialog').html(data);
                                 return false;
                        });
                },
                    error: function (xhr, ajaxOptions, thrownError){
                        jAlert("Erreur de traitement Ajax");
                }
           });
Mercide votre aide

Re: Récuperer information GET via MODAL

par franckm » 18 nov. 2013, 12:56

Bonjour,

Content que ça marche !

Pour ta première question, non je ne pense pas. Quand tu ouvres une modale, tu ne relances pas ta page, tu es toujours dans le même script.

Par contre, quand tu fais un submit d'un formulaire, tu vas recharger ta page en totalité. Donc forcément ta modale va se fermer.

Deux solutions:
1. Dans ton formulaire de la modale, tu ajoutes un champs input hidden du type:
<input type="hidden" name="modale" value="1" />
De cette façon, quand tu recharges ta page dans ton request tu sais que si tu viens de la modale le $_POST['modale'] == 1 et sinon il vaut ''.
Donc en retour de ton submit, tu ajoutes un test là dessus et si t'es sur 1, tu forces la MODALE à s'ouvrir avec les infos que tu veux.

2. Sur ton formulaire, tu ne fais pas un SUBMIT MAIS...... une requête AJAX à nouveau ! Tu prends les valeurs de ton formulaire et tu les envoies dans un fichier PHP qui traitera et en retour tu ré-affiche dans ta modale les infos.

A mon sens, la deuxième possibilité est plus esthétique car l'utilisateur n'a pas l'impression de quitter la page.

Re: Récuperer information GET via MODAL

par fabien_14 » 18 nov. 2013, 12:47

Bonjour !

Merci ça fonctionne parfaitement j’ai intégrer sur mon site avec ma base de donnée tout fonctionne nickel, vraiment grand merci !

Cependant j’ai un petit problème, quand la MODAL s’ouvre j’ai donc les données qui s’affichent en fonction de mon ID …mais j’ai un formulaire pour valider les informations. Quand je clique sur le submit cela me renvoi sur la page de traitement du formulaire (donc ferme la modal), est t’il possible que quand je clic sur le formulaire que ça reste dans la MODAL ?

Mon formulaire qui s’affiche dans la modal :
<form method="post" name="formulaire" 
<p class="double">
					<p align="center"><label for="spam_field" title="Anti Spam" class="oblig">Recopiez le texte dans la case : <b><? echo strtoupper($theCode); ?></b></label>
<input name="spam_field" type="text" size="20" maxlength="5" /></p><br>

<input type="hidden" name="spam_field_protect" value="<? echo strtoupper($theCode); ?>">
	<p align="center"><input type="submit" name="InfoUniversite" value="Cliquez ici pour valider les informations" /></p>
		
		</form>
Autre demande, au lieu d’avoir
<div class="cell info1"><a href="#" onclick="ouvreModale(44)" class="plus1" id="monclic">Cliquez pour Modale</a></div>
Est t’il possible d’avoir cette commande pour envoyer la variable en GET avec data-id ?
<div class="cell info1" data-id="44"> Cliquez pour Modale</div>

Merci

Re: Récuperer information GET via MODAL

par franckm » 17 nov. 2013, 17:14

Prends ce fichier HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
<title>Insert title here</title>
</head>

<script>
function ouvreModale(pId){  
	jQuery.ajax({
	            type: "GET",
	            url: "test.php?ID="+pId,
	            dataType: 'text',
	             contentType: "application/x-www-form-urlencoded;charset=UTF-8",
	            beforeSend: function(xhr) {
	            xhr.overrideMimeType('text/html; charset=UTF-8');
	        },
	            success: function(data,textStatus){
	            	$(function(){
		            	$('#dialog').dialog({
		            		bgiframe: true,
		            		resizable: true,
		            		width: 350,
		            		title: 'Ma fenêtre'
		                });
		            	//Je remplis ma DIV avec les infos
		            	$('#dialog').html(data);
		            	 return false;
	            	});
	        },
	            error: function (xhr, ajaxOptions, thrownError){
	                jAlert("Erreur de traitement Ajax");
	        }
	   });
}
	 
</script>

<body>

<div class="cell info1"><a href="#" onclick="ouvreModale(1)" class="plus1" id="monclic">Cliquez pour Modale</a></div>

<div id="dialog"></div>

</body>

</html>
Ce fichier PHP QUI S'APPELLE TEST.PHP:
<?php
/* Connexion à la base de données */
$serveur = "localhost";
$user = "root";
$password = "";
$base = "test";
$connexion=mysql_connect($serveur, $user, $password); //connexion au serveur
$connect=mysql_select_db($base, $connexion); //connexion à la base
if ($connect == false)
{
	echo "Pas de connexion à la base!";
}

function RetourneUser1(){
	$lId = $_GET['ID'];
	$lSql = "SELECT * FROM ACCESS WHERE ID = $lId";
	$lRequete = mysql_query($lSql);
	$lFetch = mysql_fetch_array($lRequete);
	return $lFetch['nom'];
}

echo RetourneUser1();

?>
Il fait EXACTEMENT ce que tu veux. Suivant l'ID que tu rentres dans ta fonction javascript(1,2,3...) il me renvoie le nom associé (nom1, nom2, nom3...)

Et côté HTML, quand tu cliques sur le lien, il te mets dans une modale le résultat de la requête envoyé dans le echo

Là, je ne peux pas t'aider plus. Si tu n'y arrives, y a rien à faire.

PS: n'oublies pas d'inclure les 3 fichiers du haut dans le HTML, les deux script et le link rel

Re: Récuperer information GET via MODAL

par fabien_14 » 17 nov. 2013, 17:11

Bonjour

Je comprend pas du tout comment ouvrir une MODAL et pouvoir lui envoyer une valeur en GET via cette commande
<div class="cell info1"><a href="javascript:ouvreModale(65)" class="plus1">1</a></div>

J'ai le fichier PHP contenant la requete SQL qui fonctionne viens et qui me renvoi le résultat attendu, mais je n'arrive pas avec la MODAL, pouvez vous m'aidez ? Merci

Re: Récuperer information GET via MODAL

par xTG » 16 nov. 2013, 09:22

Tu as en effet confondu avec les arguments d'une popup. ;)

Re: Récuperer information GET via MODAL

par fabien_14 » 15 nov. 2013, 20:06

Bonjour

J'ai vu ca dans un exemple mais je me demande si j'ai pas confondu avec du javascript :?

Re: Récuperer information GET via MODAL

par franckm » 15 nov. 2013, 18:34

Mais c'est quoi cette variable option ??????????????

Re: Récuperer information GET via MODAL

par fabien_14 » 15 nov. 2013, 14:22

Bonjour Franck

Désolé de ne pas avoir répondu plus vite j’étais sans connexion depuis quelques jours... les joies de la formation !

Sinon J'ai lu ton message et te remercie car c'est un langage que je connais moins que le php mais qui est très intéressant !

Cependant après des recherche il y a quelques point que je ne comprend pas :

Je n’arrive pas a ouvrir la fenêtre modal elle même (Déjà ça commence fort !)

J'ai fini par testé ceci qui ne fonctionne pas et j'ai pas l'impression que ça soit le plus propre... :
   jQuery.ajax({
            type: "GET",
			var option = 'width=500,height=150,resizable=no,scrollbars=no,menubar=no,location=no,toolbar=no,status=no',  
Merci de votre aide

Re: Récuperer information GET via MODAL

par franckm » 12 nov. 2013, 09:26

Je te donne des pistes et un exemple simple, à toi ensuite de faire ta sauce...

Déjà, utilises jQuery pour l'AJAX, la syntaxe est beaucoup moins barbare.
Si on reprend ton exemple, le gars appuie sur un bouton qui l'envoie vers une fonction javascript, de cette façon:
<div class="cell info1"><a href="javascript&#058;ouvreModale(65)" class="plus1">1</a></div>

Où 65 est l'ID sont tu veux afficher les informations dans ta modale. Avant d'ouvrir cette modale, on va faire une requête AJAX pour récupérer. AJAX permet de faire des appels au serveur sans avoir de besoin de rafraîchir toute la page ce qui est très pratique.
Ta fonction ouvreModale devient :
function ouvreModale(pId){
   jQuery.ajax({
	    type: "GET",
	    url: "mapage_traitement.php?ID="+pId,
	    dataType: 'text', 
	     contentType: "application/x-www-form-urlencoded;charset=UTF-8",
	    beforeSend: function(xhr) {
	    xhr.overrideMimeType('text/html; charset=UTF-8');
	},
	    success: function(data,textStatus){
		alert(data);	
	},
	    error: function (xhr, ajaxOptions, thrownError){
		jAlert("Erreur de traitement Ajax");
	}
	});
Comme tu peux le voir, la fonction appelle une méthode jQuery Ajax qui contient un tas de paramètre (je te laisse voir sur Internet le détail de tout ça...).
Le paramètre important est url: ici tu mets l'URl où le script va aller chercher l'information. Dans cette page (mapage_traitement.php) tu vas mettre un script qui va aller chercher ce que tu as besoin dans ta base (<?php ...mysql_query('select * from... where id=...')).
Ce qui est bien c'est que tu envoies en même temps dans cette URl ton ID. donc dans ta page de traitment PHP un simple $_GET['ID'] te permet d'avoir l'ID et donc de faire une requête sur cette ligne uniquement.

En retour, tu vas récupérer les infos qui seront stockées dans data dans la partie success. C'est peut être encore là le plus compliqué car tu peux récupérer tes données sous plusieurs format (JSON, XML notamment).

Il faut donc côté PHP organiser tes données sous format XML par exemple. Cas particulier : si ton retour est un simple string, number... c'est à dire une simple chaîne tu peux l'envoyer depuis PHP en faisant simplement un echo de ton résultat. et côté AJAX, comme dans mon exemple tu récupères la valeur dans data et tu peux faire un simple alert(data) pour l'afficher (tu peux bien sûr en faire ce que tu veux et l'afficher dans ta modale...).

A toi de creuser notamment le traitement des données en retour. Si tu as un souci , n'hésites pas à questionner de façon précise.

Re: Récuperer information GET via MODAL

par fabien_14 » 11 nov. 2013, 22:54

Après je ne sais pas si tu es familier avec AJAX

Merci pour ta réponse, en faite non je ne mi connais pas mais ça m'intéresserai de savoir comment faire

Re: Récuperer information GET via MODAL

par xTG » 11 nov. 2013, 15:46

Mea culpa... C'est écrit je ne sais combien de fois je n'ai aucune idée de comment j'ai pu le manquer même en lisant en diagonale... :evil:

Re: Récuperer information GET via MODAL

par franckm » 11 nov. 2013, 13:17

Oui mais moi ce que je comprends c'est que l'utilisateur va cliquer sur un lien qui va ouvrir une fenêtre modale mais que ce lien peut avoir en paramètre différents ID (peut être suivant un cheminement spécifique).

Dans ce cas, soit il charge le tableau entier des lignes de sa requête au départ et suivant l'ID du lien il affiche dans la modale la ligne du tableau correspondant à l'ID soit au moment du clic il lance une requête AJAX qui ira chercher le résultat de cette ligne uniquement et l'affichera dans la DIV.

Re: Récuperer information GET via MODAL

par xTG » 11 nov. 2013, 12:45

Bon après relecture... Pourquoi s'embêter avec de l'ajax alors que sa modale se contente de faire apparaître un élément html caché ?
Cependant je ne sais pas comment récupérer la variable pour la mettre dans ma requête SQL ?
De la même façon que si tu ne travaillais pas avec une fenêtre modale.
PHP s'exécute côté serveur, lorsque la page s'affiche il a déjà tout exécuté.
Ta fenêtre modale est remplie côté serveur mais est cachée de base, puis affichée grâce à un script JS.

Ce n'est depuis le début pas un problème de Javascript mais de PHP. ;)

Récupérer une variable d'url avec PHP :
$id = $_GET['id']; // index.php?id=5
echo $id; // 5