Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/01/2012, 10h31   #1
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : janvier 2012
Messages : 38
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Service public

Informations forums :
Inscription : janvier 2012
Messages : 38
Points : 11
Points : 11
Par défaut Afficher des options en fonction d'un choix

Bonjour,

Voila mon problème :

J'ai une liste d'abonnement que l'on choisi avec un bouton radio. Et en fonction de l'abonnement choisi on affiche les informations de cet abonnement(Prix, durée ...).
Et je voudrais faire tout cela en AJAX et PHP sous le modèle mvc :
J'ai donc mon modèle avec dedans une fonction qui affiche un formulaire d'abonnement :

Code :
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
function afficheFormAbonnement() 
{ 
 $afficher = ""; 
    $afficher.=' 
 <form name="formAbo" action="index.php?page=abonnement&action=souscrire" method="POST" id="formAbo" onsubmit="formAbonnement();return false;"> 
  <table border id="tabAbo">     
   <tr> 
    <td id="lignAbo">Abonnement 1 mois<input type="radio" id="proposition" name="proposition" value="1" onclick="infoAbo()" /></td> 
   </tr> 
   <tr> 
    <td id="lignAbo">Abonnement 3 mois<input type="radio" id="proposition" name="proposition" value="2" onclick="infoAbo()" /></td> 
   </tr> 
   <tr> 
    <td id="lignAbo">Abonnement 6 mois<input type="radio" id="proposition" name="proposition" value="3" onclick="infoAbo()" /></td> 
   </tr> 
   <tr> 
    <td id="lignAbo">Abonnement 9 mois<input type="radio" id="proposition" name="proposition" value="4" onclick="infoAbo()" /></td> 
   </tr> 
   <tr> 
    <td id="lignAbo">Abonnement 12 mois<input type="radio" id="proposition" name="proposition" value="5" onclick="infoAbo()" /></td> 
   </tr>              
  </table> 
 
 <div id="infoAbonnement" align = "right"><br> 
  <div id="detailAbo"> 
  </div> 
  <div id="optionAbonnement" name="optionAbonnement"> 
   <ul> 
    <li>Option 1</li> 
    <li>Option 2</li> 
    <li>Option 3</li> 
   </ul> 
  </div> 
 </div> 
 <div id="moyenPaiement"><br> 
   Moyen de paiement : </br> 
 <table> 
  <tr> 
   <td><img src="images/CB.jpg" height="50" width="50" ALIGN="middle"></td> 
   <td><img src="images/paypal.jpg" height="50" width="50" ALIGN="middle"></td> 
   <td><img src="images/cheque.png" height="50" width="50" ALIGN="middle"></td> 
  </tr> 
  <tr> 
   <td><input type="radio" id="choix" name="choix" value="cartebleue"></td> 
   <td><input type="radio" id="choix" name="choix" value="paypal"></td> 
   <td><input type="radio" id="choix" name="choix" value="cheque"></td> 
  </tr> 
 </table> 
 </br> 
 <input type="button" value="Valider" onclick="formAbonnement()" name="formAbo"/> 
 </form> 
 </div></br></br> 
 '; 
 
   return $afficher; 
 
}
Ma vue :

Code :
1
2
3
4
5
<div id="abonnement"><br> 
 <h2 align="center">ABONNEMENT</h2>     
<?php 
   echo $abonnement; 
?>
Mon contrôleur :

Code :
1
2
3
4
5
6
7
8
<?php  
 
 require_once("modele/m_abonnement.php");  
 
 $abonnement = afficheFormAbonnement(); 
 
        include_once("vue/v_abonnement.php"); 
<?
Et ma fonction AJAX :

Code :
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
function infoAbo() 
{ 
 var xhr = null; 
    if(window.XMLHttpRequest) 
    { // Firefox et autres 
      xhr = new XMLHttpRequest(); 
    } 
    else 
    { 
     if(window.ActiveXObject)  
  {// Internet Explorer 
       try 
   { 
       xhr = new ActiveXObject("Msxml2.XMLHTTP"); 
    } 
   catch (e) 
   { 
       xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
   } 
     }  
  else  
  {// XMLHttpRequest non supporté par le navigateur 
   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
   xhr = false; 
     } 
    } 
    var requete = ""; 
 requete += "proposition="+document.getElementById('proposition'); 
 if(document.forms["formAbo"].proposition[0].checked || document.forms["formAbo"].proposition[1].checked || document.forms["formAbo"]. proposition[2].checked || document.forms["formAbo"].proposition[3].checked || document.forms["formAbo"].proposition[4].checked) 
 { 
  if(document.forms["formAbo"].proposition[0].checked) 
  { 
   requete += "proposition="+document.forms["formAbo"].proposition[0].value; 
  } 
  else if(document.forms["formAbo"].proposition[1].checked) 
  { 
   requete += "proposition="+document.forms["formAbo"].proposition[1].value; 
  } 
  else if(document.forms["formAbo"].proposition[2].checked) 
  { 
   requete += "proposition="+document.forms["formAbo"].proposition[2].value; 
  } 
  else if(document.forms["formAbo"].proposition[3].checked) 
  { 
   requete += "proposition="+document.forms["formAbo"].proposition[3].value; 
  } 
  else if(document.forms["formAbo"].proposition[4].checked) 
  { 
   requete += "proposition="+document.forms["formAbo"].proposition[4].value; 
  } 
  else 
  { 
   alert("Erreur"); 
  } 
 } 
 xhr.open( 'POST', 'modele/m_abonnement.php',  true);  
 xhr.onreadystatechange  = function()  
 { 
  if(xhr.readyState  == 4) 
  { 
   if(xhr.status  == 200) 
   { 
    if(xhr.responseText != "") 
    { 
     document.getElementById('detailAbo').innerHTML = "Ok";     
    } 
    else 
    { 
     alert(xhr.responseText); 
    } 
   } 
   else  
   { 
    alert(xhr.status); 
   } 
 
  } 
 }; 
 xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
 xhr.send(requete); 
 
}
Et ça ne fonctionne pas : je ne sais pas pourquoi ...
Et aussi comment récupérer le choix pour ensuite faire une requête SQL dans mon modèle pour récupérer les infos de l'abonnement
Merci à tous pour votre aide !
<config>Windows 7 / Safari 535.7</config>
goku19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 10h45   #2
Modérateur
 
Avatar de Golgotha
 
Homme cédric
Développeur informatique
Inscription : août 2007
Messages : 733
Détails du profil
Informations personnelles :
Nom : Homme cédric
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2007
Messages : 733
Points : 1 561
Points : 1 561
Envoyer un message via Skype™ à Golgotha
Bonjour,

pfiou.. "ça ne fonctionne pas" c'est un peux vague..

Tu as localisé ton erreur ? (Vue, contrôleur, javascript.. ?)
Pour ça tu doit faire des tests Unitaires sur chaque partie, et t'assurer que chacun marche seule.

Ensuite, on ne fait plus d'ajax de cette façon depuis quelques années. Utilise $.ajax de jQuery.
__________________
modérateur webmasters - développements web & php
faq jQuery - règles du forum - faqs web
mon espace perso
Venez participez au deuxième defi Web !
Golgotha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 10h51   #3
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : janvier 2012
Messages : 38
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Service public

Informations forums :
Inscription : janvier 2012
Messages : 38
Points : 11
Points : 11
Citation:
Envoyé par Golgotha Voir le message
Bonjour,

pfiou.. "ça ne fonctionne pas" c'est un peux vague..

Tu as localisé ton erreur ? (Vue, contrôleur, javascript.. ?)
Pour ça tu doit faire des tests Unitaires sur chaque partie, et t'assurer que chacun marche seule.

Ensuite, on ne fait plus d'ajax de cette façon depuis quelques années. Utilise $.ajax de jQuery.
Merci pour ta réponse mais malheureusement c'est mon tuteur de stage qui m'a imposé cette méthode...

Quand je parlé du fait que ça ne fonctionnais pas, et bien je voulais dire que quand je coché sur un abonnement une alert vide apparait donc mon responseText et toujours vide ...

Et non je ne sais pas d'où viens mon erreur.. De plus je ne sais pas comment récupérer le choix pour ensuite faire une requête SQL dans mon modèle pour récupérer les infos de l'abonnement
goku19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 10h59   #4
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 786
Points : 35 786
Code :
requete += "proposition="+document.getElementById('proposition');


Qu'est-ce que tu t'attends que ça envoie ça comme valeur ?
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 11h03   #5
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : janvier 2012
Messages : 38
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Service public

Informations forums :
Inscription : janvier 2012
Messages : 38
Points : 11
Points : 11
Bah suivant ce que l'utilisateur à coché, 1, 2, 3, 4 ou 5 (donc la valeur de la proposition) comme ça je pourrait l'utiliser dans une requête SQL pour récupérer les infos de l'abonnement (même si je ne sais toujours pas comment faire ^^).

Et en même temps, dans mon formulaire, toutes les div doivent être cachées jusqu'à ce que l'utilisateur clique sur un abonnement.
goku19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 13h18   #6
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 148
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 148
Points : 7 295
Points : 7 295
Bonjour,

1- Un id doit être unique dans un document.
2-
Code :
1
2
3
4
5
6
7
8
9
10
11
var requete;
var erreur = true; 
var propositions = document.forms["formAbo"].proposition;
for (i = 0; i<propositions.length; i++){
	if(propositions[i].checked){
		requete = "proposition=" + propositions[i].value;
		erreur = false;
		break;
	}
}
if (erreur){alert ("Erreur")}
A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h24.


 
 
 
 
Partenaires

Hébergement Web