IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Mon script fonctionne partout sauf sous Safari


Sujet :

jQuery

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 72
    Par défaut
    je viens de tester sur safari cela fonctionne ! As-tu vérifié que le Javascript est actif sur ton navigateur ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Par défaut
    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.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 72
    Par défaut
    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 ^^

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Par défaut
    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 ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 72
    Par défaut
    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.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Par défaut
    Il est sur MAC.

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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/

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 72
    Par défaut
    sur pc ceci fonctionne chez moi sous safari encore une fois avec la div qui affiche les résultats de mon vote.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Par défaut
    Incroyable, je vais essayer sur un autre pc.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Par défaut
    Je viens d'installer safari sur mon autre pc et toujours le même resultat, y'a un truc qui m'échappe

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Par défaut
    Bon le problème vient peut être d'ailleurs voici tous les fichiers utilisés :


    Fichier Index.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 )

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 207
    Par défaut
    Et si tu forces le www sur ton domaine via htaccess c'est pas mieux non ?

  14. #14
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    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 !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

Discussions similaires

  1. mon site ne fonctionne plus sous safari
    Par ickyknox dans le forum Débuter
    Réponses: 1
    Dernier message: 10/12/2012, 17h11
  2. Script fonctionne partout SAUF sous IE
    Par Scots dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/01/2011, 19h02
  3. Script fonctionne sous firefox et safari mais pas sous IE !
    Par philodido dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/01/2009, 11h21
  4. Mon script fonctionne avec un bouton, mais pas avec l'image!
    Par julien.63 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 12/04/2006, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo