Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, 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 14/12/2010, 12h32   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 8
Points : 0
Points : 0
Par défaut Mon script fonctionne partout sauf sous Safari

Bonjour,


Voila, j'ai un petit problème avec un script Jquery, il marche sur tous les navigateurs sauf Safari.


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
$(function(){
 
    $('.1000sondages input[type="submit"]').hide();  
 
     $('.1000sondages[type="radio"]').click(function(){  
 
 
          $('.1000sondages input[type="submit"]').fadeIn(); 
 
     });
 
    $(".1000sondages").submit(function(){  
 
       $checked = $('.1000sondages[type="radio"]:checked').val();
       $question = $('.1000sondages[name="question"]').val();
 
     $.post("http://www.quentin-le-bevillon.fr/test/traitement.php", { reponse: $checked , question: $question }, function(data){ 
 
     alert(data);
 
 
 
 
     });
 
 
       return false; // Enfin j'effectue un return false pour que l'attribut "action=" du formulaire ne soit pas pris en compte.
    });
 
 
});



Ce qui est étrange, c'est que traitement.php ajoute bien les infos dans la base de données, mais la fonction retour n'est pas effectuée, dans le cas présent, il n'y a pas d'alert. ( Je répete seulement sur safari).

Merci d'avance pour vos réponses.

Quentin
Quentinlebev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 12h59   #2
Membre régulier
 
Laurent S.
Inscription : novembre 2010
Messages : 71
Détails du profil
Informations personnelles :
Nom : Laurent S.
Âge : 25
Localisation : France

Informations forums :
Inscription : novembre 2010
Messages : 71
Points : 77
Points : 77
je viens de tester sur safari cela fonctionne ! As-tu vérifié que le Javascript est actif sur ton navigateur ?
larffas68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 13h16   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 8
Points : 0
Points : 0
Bonjour, merci pour ta réponse.

Oui le JS est activé, en fait le script marche, la seule chose qui ne fonctionne pas c'est la fonction qui s'effectue après l'envoi des variables a la page traitement.php (l'alert en somme) .

Les variables sont bien transmises car elles s'ajoutent dans la DB.

C'est seulement ce alert qui ne fonctionne pas !

Pourtant j'ai un return dans ma page php, j'ai essayé avec des echo mais sa ne fonctionne pas non plus

Vous pouvez essayer ici : www.quentin-le-bevillon.fr/test

Merci d'avance.
Quentinlebev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 13h38   #4
Membre régulier
 
Laurent S.
Inscription : novembre 2010
Messages : 71
Détails du profil
Informations personnelles :
Nom : Laurent S.
Âge : 25
Localisation : France

Informations forums :
Inscription : novembre 2010
Messages : 71
Points : 77
Points : 77
C'est sur cet url que j'ai testé et j'ai bien une alerte JavaScript avec votre script sous Safari

d'ou ma question d'activer le javascript ^^
larffas68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 13h44   #5
Invité de passage
 
Inscription : décembre 2010
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 8
Points : 0
Points : 0
Waaa,

Alors là, j'y comprend vraiment plus rien.

ça pourrait venir d'un problème de version ?
Personnellement j'ai la dernière version pour pc !

Une chose est sûre je n'ai pas d'alerte. Pourtant le js est bien activé puisque lorsque je click sur un radio, le submit se fade.

Enfet je ne fais pas ça pour moi, mais pour un ami et c'est lui qui m'a fait la remarque que ça ne fonctionnait pas sur safari.

Peut être avez vous une idée pour optimiser le code, et qui pourrait le faire fonctionner pour tous le monde ?
Quentinlebev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 13h55   #6
Membre régulier
 
Laurent S.
Inscription : novembre 2010
Messages : 71
Détails du profil
Informations personnelles :
Nom : Laurent S.
Âge : 25
Localisation : France

Informations forums :
Inscription : novembre 2010
Messages : 71
Points : 77
Points : 77
cela fonctionne chez moi avec la derniere version pour windows de safari, as-tu essayé de vider le cache du navigateur ? ton ami n'est-il pas sur mac ? il est vrai que si le fade fonctionne cela devrait fonctionner pour le JavaScript....

Je ne vois à priori aucune raison qui ferait que cela ne fonctionne pas sur PC.
larffas68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 14h04   #7
Invité de passage
 
Inscription : décembre 2010
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 8
Points : 0
Points : 0
Il est sur MAC.

J'ai remis le code comme il est prévu a la base :

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
$(function(){
 
    $('.1000sondages input[type="submit"]').hide();  // je cache le bouton submit du formulaire au demarage du script.
 
     $('.1000sondages[type="radio"]').click(function(){  // si l'utilisateur clique sur un bouton radio qui a la classe 1000 sondages...
 
 
          $('.1000sondages input[type="submit"]').fadeIn(); // Je réaffiche le bouton submit avec une animation.
 
     });
 
    $(".1000sondages").submit(function(){   // Si on submit le formulaire ....
 
 
       $checked = $('.1000sondages[type="radio"]:checked').val(); // j'enregiste la valeur de l'input de type radio qui est checké dans la variable $checked .
       $question = $('.1000sondages[name="question"]').val(); // j'enregistre la valeur de l'input qui a le nom question dans la variable $question.
 
     $.post("http://www.quentin-le-bevillon.fr/test/traitement.php", { reponse: $checked , question: $question }, function(data){ // J'envoi sur traitement.php via la méthode post les variables "reponse" et "question" qui auront les valeur de $checked et $question. Lorsque tratement.php a fini d'être éxécuté, j'effectue une fonction (la variable data contient ici tout ce que tratement.php a affiché.)'
 
      $("form.1000sondages").fadeOut(); // Je cache le formulaire.
 
     $("div.1000sondages").append(data);// Puis j'ajoute dans la div qui a la classe 1000sondages, la valeur de data.
 
 
 
 
     });
 
 
       return false; // Enfin j'effectue un return false pour que l'attribut "action=" du formulaire ne soit pas pris en compte.
    });
 
 
});
Voila toujours le même résultat, tous fonctionne hormis la fonction qui s'effectue après l'envoi des variables a traitement.php (encore une fois seulement sur safari ) .

http://quentin-le-bevillon.fr/test/
Quentinlebev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 14h07   #8
Membre régulier
 
Laurent S.
Inscription : novembre 2010
Messages : 71
Détails du profil
Informations personnelles :
Nom : Laurent S.
Âge : 25
Localisation : France

Informations forums :
Inscription : novembre 2010
Messages : 71
Points : 77
Points : 77
sur pc ceci fonctionne chez moi sous safari encore une fois avec la div qui affiche les résultats de mon vote.
larffas68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 14h09   #9
Invité de passage
 
Inscription : décembre 2010
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 8
Points : 0
Points : 0
Incroyable, je vais essayer sur un autre pc.
Quentinlebev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 14h29   #10
Invité de passage
 
Inscription : décembre 2010
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 8
Points : 0
Points : 0
Je viens d'installer safari sur mon autre pc et toujours le même resultat, y'a un truc qui m'échappe
Quentinlebev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 15h44   #11
Invité de passage
 
Inscription : décembre 2010
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 8
Points : 0
Points : 0
Bon le problème vient peut être d'ailleurs voici tous les fichiers utilisés :


Fichier Index.php :
Code :
1
2
3
4
5
6
7
8
9
 
<?php
 
 
echo '<script type="text/javascript" src="sondage.php?id=2"></script>';
 
 
 
?>
Fichier sondage.php :
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
 
<?php
 
// On "transforme" le fichier PHP en fichier 
 
 
// Quelques généralités
//require('includes/config.php');
 
// On récupère l'id
$qid = filter_var(filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT), FILTER_VALIDATE_INT);
 
// Connexion à la base de données (BDD) avec $bdd
require('includes/bdd_connexion.php');
include 'js/jquery.js';
include 'js/ajax.js';
 
// Le sondage appellé par cet id existe-il vraiment ?
$id_existe = $bdd->prepare('SELECT count(*) as nb_sond FROM questions WHERE id = :qid');
$id_existe->bindValue(':qid', $qid, PDO::PARAM_INT);
$id_existe->execute();
$id_existe_retour = $id_existe->fetch();
$id_existe->closeCursor();
 
if($id_existe_retour['nb_sond'] != 0) // Tout va bien
{	
	// Les fonctions
	require('includes/fonctions.php');
 
	// Si l'internaute a déjà voté
	if(VoteEffectue($qid, $bdd))
	{
		echo AfficherResultats($qid, $bdd);
	}
	else // Si l'internaute n'a pas encore voté
	{
		echo AfficherFormulaire($qid, $bdd);
	}
}
else // Le sondage demandé n'existe pas !
{
	echo 'document.write(\'<i>Le sondage demandé est introuvable !</i>\');';
}
?>
Fichier fonctions.php :
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
 
<?php
// L'internaute a-t-il déjà voté ?
function VoteEffectue($question_id, $bdd)
{
	$vote_effectue = $bdd->prepare('SELECT count(*) as nb_votes FROM votes WHERE qid = :qid AND INET_NTOA(ipadress) = :ip');
	$vote_effectue->bindValue(':qid', $question_id, PDO::PARAM_INT);
	$vote_effectue->bindValue(':ip', $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR);
	$vote_effectue->execute();
	$nombre_de_votes = $vote_effectue->fetch();
	$vote_effectue->closeCursor();
 
	return ($nombre_de_votes['nb_votes'] == 0) ? false : true;
}
 
// Le formulaire
function AfficherFormulaire($question_id, $bdd)
{
	global $titre_site;
 
	// La question
	$afficher_formulaire_question = $bdd->prepare('SELECT * FROM questions WHERE id = :qid');
    $afficher_formulaire_question->bindValue(':qid', $question_id, PDO::PARAM_INT);
    $afficher_formulaire_question->execute();
    $afficher_formulaire_question_retour = $afficher_formulaire_question->fetch();
    $afficher_formulaire_question->closeCursor();
 
	// Le thème
	$afficher_formulaire_theme = $bdd->prepare('SELECT * FROM themes WHERE id = :tid');
	$afficher_formulaire_theme->bindValue(':tid', $afficher_formulaire_question_retour['tid'], PDO::PARAM_INT);
    $afficher_formulaire_theme->execute();
    $afficher_formulaire_theme_retour = $afficher_formulaire_theme->fetch();
    $afficher_formulaire_theme->closeCursor();
 
	if($afficher_formulaire_theme_retour['bouton_voter'] == 1)
    {
        $bouton_voter = '<input  type="submit" value="Voter"/>';
    }
    else // $theme2['bouton_voter'] vaut 2
    {
        $bouton_voter = '<input type="submit" value="Voter"/>';
    }
 
	// Les réponses
	$afficher_formulaire_reponses = $bdd->prepare('SELECT * FROM reponses WHERE qid = :qid');
    $afficher_formulaire_reponses->bindValue(':qid', $question_id, PDO::PARAM_INT);
    $afficher_formulaire_reponses->execute();
 
	$formulaire = 'document.write(\'<div id="div_cadre" class="1000sondages" style="width: '.htmlspecialchars(utf8_encode($afficher_formulaire_theme_retour['largeur_sondage'])).'px; border: '.htmlspecialchars(utf8_encode($afficher_formulaire_theme_retour['largeur_bordure'])).'px solid #'.htmlspecialchars(utf8_encode($afficher_formulaire_theme_retour['couleur_bordure'])).' ; background-color: #'.htmlspecialchars(utf8_encode($afficher_formulaire_theme_retour['couleur_fond'])).' ; padding-top: 10px; padding-left: 10px; padding-right: 10px; padding-bottom: 10px; font-family: Arial, Helvetica, sans-serif; font-size: 13px; color: #'.htmlspecialchars(utf8_encode($afficher_formulaire_theme_retour['couleur_reponses'])).';"> <span style="font-weight: bold;">'.htmlspecialchars($afficher_formulaire_question_retour['question']).'</span><br/><br/><form class="1000sondages" method="post" action="#" target="_blank">';
 
	while($afficher_formulaire_reponses2 = $afficher_formulaire_reponses->fetch())
	{
		$formulaire .= '<input type="radio" name="reponse" value="'.htmlspecialchars(utf8_encode($afficher_formulaire_reponses2['id'])).'" id="form-'.$titre_site.'-'.htmlspecialchars(utf8_encode($afficher_formulaire_reponses2['id'])).'" class="1000sondages"/><label for="form-'.$titre_site.'-'.htmlspecialchars(utf8_encode($afficher_formulaire_reponses2['id'])).'">'.htmlspecialchars($afficher_formulaire_reponses2['texte']).'</label><br/><br/>';
	}
 
	$formulaire .= '<input class="1000sondages" type="hidden" name="question" value="'.htmlspecialchars(utf8_encode($afficher_formulaire_question_retour['id'])).'"/>'.utf8_encode($bouton_voter).' <br/><br/> <span style="font-size: 11px; color: #'.htmlspecialchars(utf8_encode($afficher_formulaire_theme_retour['couleur_reponses'])).';"><a style="text-decoration: none; color: #'.htmlspecialchars(utf8_encode($afficher_formulaire_theme_retour['couleur_reponses'])).';" href="http://www.1000sondages.com" alt="Creer sondage gratuit" title="Cr&eacute;er un sondage gratuit">'.$titre_site.'</a></span></form></div>\');';
 
	return $formulaire ;
}
 
// Les résultats
function AfficherResultats($question_id, $bdd)
{
	global $titre_site;
 
	// La question
	$afficher_resultats_question = $bdd->prepare('SELECT * FROM questions WHERE id = :qid');
    $afficher_resultats_question->bindValue(':qid', $question_id, PDO::PARAM_INT);
    $afficher_resultats_question->execute();
    $afficher_resultats_question_retour = $afficher_resultats_question->fetch();
    $afficher_resultats_question->closeCursor();
 
	// Le thème
	$afficher_resultats_theme = $bdd->prepare('SELECT * FROM themes WHERE id = :tid');
	$afficher_resultats_theme->bindValue(':tid', $afficher_resultats_question_retour['tid'], PDO::PARAM_INT);
    $afficher_resultats_theme->execute();
    $afficher_resultats_theme_retour = $afficher_resultats_theme->fetch();
    $afficher_resultats_theme->closeCursor();
 
	$resultats = 'document.write(\'<div id="div_cadre" style="width: '.htmlspecialchars(utf8_encode($afficher_resultats_theme_retour['largeur_sondage'])).'px; border: '.htmlspecialchars(utf8_encode($afficher_resultats_theme_retour['largeur_bordure'])).'px solid #'.htmlspecialchars(utf8_encode($afficher_resultats_theme_retour['couleur_bordure'])).' ; background-color: #'.htmlspecialchars(utf8_encode($afficher_resultats_theme_retour['couleur_fond'])).' ; padding-top: 10px; padding-left: 10px; padding-right: 10px; padding-bottom: 10px; font-family: Arial, Helvetica, sans-serif; font-size: 13px; color: #'.htmlspecialchars(utf8_encode($afficher_resultats_theme_retour['couleur_reponses'])).';"> <span style="font-weight: bold; font-size: 13px;">'.htmlspecialchars($afficher_resultats_question_retour['question']).'</span><br/><br/>';
 
	// Les réponses et résultats
	$reponses = $bdd->prepare('SELECT * FROM reponses WHERE qid = :qid');
	$reponses->bindValue(':qid', $question_id, PDO::PARAM_INT);
	$reponses->execute();
 
	while($reponses_retour = $reponses->fetch())
	{
		// Le nombre de votes par réponse
		$votes = $bdd->prepare('SELECT count(*) as rep_votes FROM votes WHERE rid = :rid');
		$votes->bindValue(':rid', $reponses_retour['id'], PDO::PARAM_INT);
		$votes->execute();
		$votes_retour = $votes->fetch();
 
		// Le total de votes
		$total = $bdd->prepare('SELECT count(*) as nb_votes FROM votes WHERE qid = :qid');
		$total->bindValue(':qid', $question_id, PDO::PARAM_INT);
		$total->execute();
		$total_retour = $total->fetch();
		$total->closeCursor();
 
		$un_pour_cent = ($theme_retour['largeur_sondage'] - 20) / 100;
		$pourcentage = ($votes_retour['rep_votes'] / $total_retour['nb_votes']) * 100;
		$largeur_div = $un_pour_cent * $pourcentage;
 
		if($largeur_div == 0)
		{
			$largeur_div = 5;
		}
 
		$resultats .= '<strong>'.htmlspecialchars($reponses_retour['texte']).' </strong>'.htmlspecialchars(utf8_encode(round($pourcentage))).'%<br/>';
		$resultats .= '<div style="width: '.htmlspecialchars(utf8_encode($largeur_div)).'px; height: 12px; background-color: #CCCCCC ;"></div><br/>';
	}
 
	$votes->closeCursor();
	$reponses->closeCursor();
 
	$resultats .= '<span style="font-size: 11px; color: #'.htmlspecialchars(utf8_encode($afficher_resultats_theme_retour['couleur_reponses'])).';"><a style="text-decoration: none; color: #'.htmlspecialchars(utf8_encode($afficher_resultats_theme_retour['couleur_reponses'])).';" href="http://www.1000sondages.com" alt="Creer sondage gratuit" title="Cr&eacute;er un sondage gratuit">'.$titre_site.'</a></span><input type="text" name="qid" value="'.htmlspecialchars(utf8_encode($qid)).'" style="display: none;"/></form></div>\');';
 
	return $resultats;
}
 
function EnregistrerVote($question_id, $bdd)
{
	// On vérifie que l'internaute a bien validé le formulaire
	if(isset($_GET['reponse']) AND !empty($_GET['reponse']))
	{
		// On enregistre
		$bdd->beginTransaction();
		try
		{
			$insertion = $bdd->prepare('INSERT INTO votes (qid, rid, ipadress) VALUES (:qid, :rid, INET_ATON(:ipadress))');
			$insertion->bindValue(':qid', $question_id, PDO::PARAM_INT);
			$insertion->bindValue(':rid', $_GET['reponse'], PDO::PARAM_INT);
			$insertion->bindValue(':ipadress', $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR);
			$insertion->execute();
			$insertion->closeCursor();
			$bdd->commit();
		}
		catch(PDOException $e)
        {
           	$insertion->closeCursor();
           	$bdd->rollBack();
           	throw $e;
        }
	}
}
?>
Fichier traitement.php :
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
83
84
 
 
<?php
if(!empty($_POST['question']) AND !empty($_POST['reponse']))
{
	// On se connecte à la BDD avec $bdd
	include('includes/bdd_connexion.php');
 
	// On vérifie que l'internaute n'a pas déjà voté
	$votes = $bdd->prepare('SELECT * FROM votes WHERE qid = :qid AND INET_NTOA(ipadress) = :ip');
	$votes->bindValue(':qid', $_POST['question'], PDO::PARAM_INT);
	$votes->bindValue(':ip', $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR);
	$votes->execute();
	$nb_votes = $votes->fetchColumn();
	$votes->closeCursor();
 
	if($nb_votes == 0)
	{
		// On enregistre le nouveau vote
		$nouveau = $bdd->prepare('INSERT INTO votes (qid, rid, ipadress) VALUES(:qid, :rid, INET_ATON(:ipadress))');
		$nouveau->bindValue(':qid', $_POST['question'], PDO::PARAM_INT);
		$nouveau->bindValue(':rid', $_POST['reponse'], PDO::PARAM_INT);
		$nouveau->bindValue(':ipadress', $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR);
		$nouveau->execute();
		$nouveau->closeCursor();
	}
 
	// Puis ... les résultats !
 
		// La question
		$question = $bdd->prepare('SELECT * FROM questions WHERE id = :qid');
		$question->bindValue(':qid', $_POST['question'], PDO::PARAM_INT);
		$question->execute();
		$question_retour = $question->fetch();
		$question->closeCursor();
 
 
		// Les réponses
		$reponses = $bdd->prepare('SELECT * FROM reponses WHERE qid = :qid');
		$reponses->bindValue(':qid', $_POST['question'], PDO::PARAM_INT);
		$reponses->execute();
 
		// Le total de votes
		$total = $bdd->prepare('SELECT count(*) as nb_votes FROM votes WHERE qid = :qid');
		$total->bindValue(':qid', $_POST['question'], PDO::PARAM_INT);
		$total->execute();
		$total_retour = $total->fetch();
		$total->closeCursor();
 
		while($reponses_retour = $reponses->fetch())
		{
			// Combien de votes par réponse ?
			$votes_par_reponse = $bdd->prepare('SELECT count(*) as rep_votes FROM votes WHERE rid = :rid');
			$votes_par_reponse->bindValue(':rid', $reponses_retour['id'], PDO::PARAM_INT);
			$votes_par_reponse->execute();
			$votes_par_reponse_retour = $votes_par_reponse->fetch();
			$votes_par_reponse->closeCursor();
 
			// Calcul des pourcentages
			$poucentage = ($votes_par_reponse_retour['rep_votes'] / $total_retour['nb_votes']) * 100;
			$longueur = 5 * $poucentage;
			$longueur = round($longueur);
 
			if($longueur == 0)
			{
				$longueur = 18;
			}
 
			// On affiche
                        echo htmlspecialchars(utf8_encode($reponses_retour['texte'])).'<br/>';
			$thereturn = '<div id="droite" style="height: 15px; background-image: url(\'images/degrade.jpg\'); width: '.htmlspecialchars($longueur).'px;"><img src="images/deb_arrondi.jpg" style="float: left;"/><img src="images/fin_arrondi.jpg" style="float: right;"/></div><strong>'.htmlspecialchars(round($poucentage)).' %</strong><br/><br/>';
		}
 
		$reponses->closeCursor();
 
		echo htmlspecialchars($total_retour['nb_votes']).' vote';
		if($total_retour['nb_votes'] > 1) { echo 's' ; }
}
else
{
	$thereturn = "<i>Résultats indisponibles pour le sondage indiqué</i>";
}
return $thereturn;
?>
Fichier ajax.js :
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
 
$(function(){
 
    $('.1000sondages input[type="submit"]').hide();  // je cache le bouton submit du formulaire au demarage du script.
 
     $('.1000sondages[type="radio"]').click(function(){  // si l'utilisateur clique sur un bouton radio qui a la classe 1000 sondages...
 
 
          $('.1000sondages input[type="submit"]').fadeIn(); // Je réaffiche le bouton submit avec une animation.
 
     });
 
    $(".1000sondages").submit(function(){   // Si on submit le formulaire ....
 
 
       $checked = $('.1000sondages[type="radio"]:checked').val(); // j'enregiste la valeur de l'input de type radio qui est checké dans la variable $checked .
       $question = $('.1000sondages[name="question"]').val(); // j'enregistre la valeur de l'input qui a le nom question dans la variable $question.
 
     $.post("traitement.php", { reponse: $checked , question: $question }, function(data){ // J'envoi sur traitement.php via la méthode post les variables "reponse" et "question" qui auront les valeur de $checked et $question. Lorsque tratement.php a fini d'être éxécuté, j'effectue une fonction (la variable data contient ici tout ce que tratement.php a affiché.)'
 
     $("form.1000sondages").fadeOut(); // Je cache le formulaire.
 
     $("div.1000sondages").append(data);// Puis j'ajoute dans la div qui a la classe 1000sondages, la valeur de data.
 
 
     });
 
 
       return false; // Enfin j'effectue un return false pour que l'attribut "action=" du formulaire ne soit pas pris en compte.
    });
 
 
});
Voila, celui qui trouvera la solution sera mon nouveau dieux, je suis entrain de perdre tous mes cheveux sur ce problème.
Quentinlebev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 16h59   #12
Invité de passage
 
Inscription : décembre 2010
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 8
Points : 0
Points : 0
Je sais d'où viens le problème et ça ne m'enchante pas !

C'est un problème de cross domain. Je pensais que le cross domain allez être géré par Jquery.

Hors ce n'est pas le cas, en fait le script ne marche sur aucun navigateur.

Je faisais mes tests sur cette URL http://quentin-le-bevillon.fr/test/
or l'url que je vous ais précédemment communiqué était http://www.quentin-le-bevillon.fr/test/

et regardez bien dans le script l'url que j'appelle ...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 $.ajax({
	type: "POST",
	url: "http://www.quentin-le-bevillon.fr/test/traitement.php",
   data: "question="+$question+"&reponse="+$checked,
   success: function(data){
 
     $("form.1000sondages").fadeOut(); 
 
     $("div.1000sondages").append(data);
   },
   error: function(data){
 
     $("form.1000sondages").fadeOut(); 
 
     $("div.1000sondages").append(data);
   }
 });
(oui je l'ai un peux modifier mais ça fait la même chose)

En fait si l'url n'est pas la même ça ne fonctionne pas ...

Ce que je ne comprend pas, c'est que peut importe l'url le vote est quand même enregistré dans la DB, alors j'ais fais des tests en rajoutant l'attribut "error:" dans la fonction ajax, le formulaire se cache bien, mais rien ne s'affiche (data est vide) .

Voila, j'ai bien avancer, une idée ? (sauvez moi s'il vous plait )
Quentinlebev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 17h22   #13
Membre éclairé
 
sébastien courjean
Inscription : novembre 2010
Messages : 204
Détails du profil
Informations personnelles :
Nom : sébastien courjean
Localisation : France, Indre et Loire (Centre)

Informations forums :
Inscription : novembre 2010
Messages : 204
Points : 319
Points : 319
Et si tu forces le www sur ton domaine via htaccess c'est pas mieux non ?
__________________
Sébastien Courjean
Développeur Web
scourjean@cyres.fr
http://www.cyres.fr/
scourjean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 17h26   #14
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
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 802
Points : 35 807
Points : 35 807
Citation:
C'est un problème de cross domain. Je pensais que le cross domain allez être géré par Jquery.
jQuery ne sait pas rendre par magie possible ce qui ne l'est pas en JavaScript
__________________
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 déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h21.


 
 
 
 
Partenaires

Hébergement Web