AIDE pour un SONDAGE en PHP et javascript !!

Signaler
Messages postés
42
Date d'inscription
lundi 1 septembre 2008
Statut
Membre
Dernière intervention
6 septembre 2011
-
Messages postés
42
Date d'inscription
lundi 1 septembre 2008
Statut
Membre
Dernière intervention
6 septembre 2011
-
Bonjour je vais me"jeter par la fenêtre" car cela fait deux trois jours que je cherche une solution à mon problème et même après diverses pistes je n'ai pas encore trouver la solution donc je m'adresse a vous.
Mon problème est que je dois cliquer deux fois pour voir apparaitre mes resultats.
Apparemment mon script serait pas eronné donc je compte sur vous pour m'aider à résoudre tous les prblèmes!
Voici mon code :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>

<link rel="stylesheet" href="questionnaire.css" type="text/css">

<?php
ini_set ('display_errors', 'on');
error_reporting(E_ALL);
include ("config.php");
$ip = $_ENV["USERNAME"]; // récupere l'ip de visiteur.
$unix = time(); // temps actuel.
$temps = time()-3600; // le temps y'as maintenant une heure.

$sql="SELECT * FROM `sondages` WHERE `categorie`='question' AND `online`='1'";
$result=mysql_query($sql) or die (mysql_error());
while ($donnees=mysql_fetch_assoc($result)){
    $id=$donnees['id'];
    $libel=$donnees['libelle'];       
}
$sql1 = 'SELECT count(*) FROM `sondages` WHERE `categorie`="reponse" AND `id`='.$id.'';
$result1=mysql_query($sql1);
while ($donnees=mysql_fetch_assoc($result1)){
    $preado=$donnees['count (*)'];   
}
// Verification que l'utilisateur a voté ou non
$verifier = "SELECT `ip` FROM `vote` WHERE ip='$ip'";
$voter = mysql_query($verifier);

//pour l'affichage on utilise une petite fonction  :
  function VerifText($text,$valeur,$reponse,$totaldesreponse){
    $resultat = $reponse*2; 
      if ($text < '1'){ // on teste si le total des votes est moins qu'un, alors, on affiche l'image de la barre avec comme valeur de Width, et on met "0" comme valeur du vote
        $text1 = '
  '.$valeur.' : '.$reponse.'%
'.$reponse.'%

';
      }
      if ($text == '1'){ // on teste si le total des votes est égal a 1, alors, on affiche l'image de la barre avec comme valeur de Width, "la variable du pourcentage", et on met la "valeur du vote".
        $text1 = '
  '.$valeur.' : '.$reponse.'%
'.$reponse.'%

';
      }
      if ($text > '1'){  // on teste si le total des votes est plus grand que 1, alors, on affiche l'image de la barre avec comme valeur de Width, "la variable du pourcentage", et on met la "valeur du vote" avec une "s" a la fin cette fois. c tt
        $text1 = '
  '.$valeur.' : '.$reponse.'%
'.$reponse.'%

';
      }
    return $text1;
  }
 
if(@mysql_num_rows($voter)!='0'){//Si oui, ca veut dire que notre visiteur a déja voté, on lui affiche alors un message de remerciments, et les résultats.
  echo $libel;
  $sql2 = "SELECT `reponse` FROM `vote` WHERE question='".$id."'"; //on récupere le résultat des anciens votes.
  $result2 = mysql_query($sql2);
  $reponse=array();
 
  while($resultat = mysql_fetch_array($result2)) {
    $cadre[] = $resultat['reponse'];  //on récupere le résultat de notre requête, et on le stocke dans un tableau.
  }
 
  //on stocke le total du vote dans une variable "$totalvote" via la méthode "count" qui parcourt tout notre tableau.
  $totalvote= count($cadre);
 
  //on stocke le nombre de chaque choix dans un tableau avec la méthode "array_count_values" .. qui retourne par exmple.
  //$array = array(1, "tyty", 1, "slt", "tyty");   array_count_values($array);    retourne array(1=>2, "tyty"=>2, "slt"=>1)
  $totalreponse = array_count_values($cadre);
   
  //Maintenant on calcule le pourcentage de nos votes selon la régle universel pour ca ^^  "p = chifre x 100 / total".
  //pour ca on utilise "bcdiv" qui divise et renvoie le résultat sous forme de chaîne de caractères.(en plus qu'on peut la fixé comme içi à 1 chiffres après la virgule). sinon on aura parfois des pourcentage genre 65.2323232323% et c'est pas beau >_<
     
//la on affiche notre function avec ces nouveaux paramètres.
  //VerifText($_variable_du_total_du_vote , 'Valeur a affiché dans notre page' , $_variable_de_notre_pourcentage , $_variable_du_total_du_vote);
 
$sql1 = 'SELECT `libelle` FROM `sondages` WHERE `categorie`="reponse" AND `id`='.$id.'';
$result1=mysql_query($sql1);
$k=1;
while ($donnees=mysql_fetch_assoc($result1)){
    $val=$donnees['libelle'];
   
  $reponse[$k] = bcdiv($totalreponse[$k]*100, $totalvote, 1);
  echo VerifText($totalreponse[$k],$val,$reponse[$k],$totalreponse[$k]);
$k++;
}

  echo ' Total votes : '.$totalvote.'

';
  //on répète notre function n fois nos choix avec une "." Pour la concaténation  , et une autre echo pour le total des votes.

}else{ //Si non, ça veut dire que notre visiteur n'as pas encore voté, on lui affiche le formulaire avec les choix.
    $sql="SELECT * FROM `sondages` WHERE `categorie`='question' AND `online`='1'";
    $result=mysql_query($sql) or die (mysql_error());
        while ($donnees=mysql_fetch_assoc($result)){
        echo $donnees['libelle']."

";
        $id=$donnees['id'];
        $question=$donnees['libelle'];
    }
    echo '<form method="POST" >';
    $sql1="SELECT * FROM `sondages` WHERE `categorie`='reponse' AND `id`='".$id."'";
    $result1=mysql_query($sql1);
    $i=1;
    while ($donnees1=mysql_fetch_assoc($result1)){
        echo '';
        echo $donnees1['libelle']."
";
        $i++;
    }

    echo '
</form>';     
 }  
if ($_POST[choix]!=0){
    $enregistrer = "INSERT vote SET question='$id', id='', reponse='$_POST[choix]', ip='$ip', unix='$unix'";
    mysql_query ($enregistrer);
}
?>

</html>

Merci d'avance a tous!

2 réponses

Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Salut Yoh,

Plutôt que de reposter 2 fois la même chose tu devrais prendre en compte les remarques et éventuelles solutions qui te sont données. Comment veux tu résoudre tes problèmes si tu ne tiens pas compte des remarques des personnes qui tentent de t'aider ?

Ca n'encourage pas vraiment à régler ton problème

Bonne soirée,

Kohntark -
Messages postés
42
Date d'inscription
lundi 1 septembre 2008
Statut
Membre
Dernière intervention
6 septembre 2011

Slt, justement j'ai pris en considération certaine remarque mais d'autres que je n'arrive pas a comprendre surtout avec ce qu'il faut mettre avant le while mais quel while ?
Merci quand meme