Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1740 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  pb raffraichissement : ok | news pb cannot use scalar?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pb raffraichissement : ok | news pb cannot use scalar?

n°1529741
hyptnos
GT : Gui iom
Posté le 16-03-2007 à 21:47:55  profilanswer
 

Bonjour.
 
Je voulais faire un petit sondage sur le site que je suis entrain de faire pour un amis, enfin un script qui permet la gestion des sondages, ayant peu de temps devant moi j'ai trouver un script open source d'un sondage modifiable facilement et sans bdd.
 
Cela dit il n'avais pas de gestion des votants. Donc j'ai rajouter un petit bout de code maison qui permet de recupérer l'adresse IP du votant et de l'enregistrer en bdd au moment de la validation du formulaire. Si deja voter (donc adresse en bdd) je supprime le bouton valide sinon je le laisse.
 
Donc quand je valide tout va bien il fait bien l'ajout du sondage et affiche le resultat, j'ai bien mon info en bdd mais le souci c'est que le bouton valid est encore présent puisque la page n'a pas ete raffraichit donc voila le probleme
 
comment faire pour raffraichir la page après une action donné
Si je fait un header ca va pas marcher j'ai le fameux header already sent .....
 
voici le code si vous aviez une idée vous me serez d'une grande aide
 
l'ajout en BDD ligne 57
vérification de la presence en bdd de l'ip ligne : 20
banissement du bouton validation ligne : 108
 

Code :
  1. <?
  2. // Définition de la connexion à la base donné
  3. require("../../conf/connection-inc.php" );
  4.   // INFORMATIONS SUR LE SONDAGE
  5.   $titre = 'sondage'; // = nom du fichier dans lequel est stocké les votes
  6.   $question = 'Comment trouvez-vous ce site ?';
  7.   $reponse[1] = 'Bien';
  8.   $reponse[2] = 'Moyen';
  9.   $reponse[3] = 'Mauvais';
  10.   $reponse[4] = 'Pitoyable';
  11.   $nb_max_votes = 0; // 0 si illimité
  12.   // MODIFICATION DU SONDAGE
  13.   $choix = count($reponse);
  14.        $ip = $_SERVER["REMOTE_ADDR"];
  15.     // vérification de l'adresse IP dans la base de donnée
  16. $query = "select count(*) as nb from ip_sondage where ipsond_ip='$ip'";
  17. $result = mysql_query($query) or die("La requête \"$query\" n'a pas pu s'exécuter !" );
  18. $val = mysql_fetch_array($result);
  19. $ip_bdd = $val['nb'];
  20.   if (isset($_GET['vote']))
  21.   {
  22.    $resultats = fopen("$titre.txt", "r+" );
  23.    $vote = $_GET['vote'];
  24.    for ($numero = 1; $numero <= $choix; $numero ++)
  25.    {
  26.     $ligne[$numero] = (int) fgets($resultats);
  27.     if ($numero == $vote)
  28.     {
  29.      $ligne[$numero] ++;
  30.     }
  31.     if (isset($donnees_votes))
  32.     {
  33.      $donnees_votes = $donnees_votes . "\n" . $ligne[$numero];
  34.      $nb_votes += $ligne[$numero]; // comptage du nombre de votes
  35.     }
  36.     else
  37.     {
  38.      $donnees_votes = $ligne[$numero];
  39.      $nb_votes = (int) $ligne[$numero];
  40.     }
  41.    }
  42.    fseek ($resultats, 0);
  43.    if($nb_votes<=$nb_max_votes OR $nb_max_votes==0)
  44.      fputs ($resultats, $donnees_votes); // écriture des données
  45.   //insertion de l'adresse ip du votant en bdd
  46.   $add_ip = "INSERT INTO ip_sondage (ipsond_ip) VALUES ('$ip')";
  47.    mysql_select_db($sql_bdd, $db_link);
  48.     $result = mysql_query($add_ip, $db_link) or die(mysql_error());
  49.    fclose($resultats);
  50.   }
  51.   // LECTURE DU SONDAGE  
  52.   $resultats = fopen("$titre.txt", "r" );
  53.   $numero = 1;
  54.   while ($numero <= $choix) // attribution d'un nombre pour chaque vote à l'array $resultat[]
  55.   {
  56.    $resultat[$numero] = fgets($resultats);
  57.    if ($resultat[$numero] == NULL) // on remplace les lignes vides du fich txt par 0
  58.    {
  59.      $resultat[$numero] = 0;
  60.    }
  61.   $numero ++;
  62.   }
  63.   $total_votes = 0; // calcul du total des votes
  64.   foreach($resultat as $nb_resultat) $total_votes += $nb_resultat;
  65.   if ($total_votes == 0) // éviter la division par 0
  66.   {
  67.    $total_votes = 1;
  68.   }
  69.   $numero = 1;
  70.   while ($numero <= $choix) // transformation du nombre de vote en pourcentages
  71.   {
  72.    $pourcentage[$numero] = $resultat[$numero] / $total_votes * 100;
  73.    $numero ++;
  74.   }
  75.   $long_max_bloc = 120; // longueur maximale du curseur pour un vote en pixels
  76.   // affichage des barres et du nombre de votes
  77.   $numero = 1;
  78.   echo ('<div class="titresondage" align="center">'. $question . '</div><br /><form action=""> ');
  79.   while ($numero <= $choix)
  80.   {
  81.    echo ('<div class="choix"><label><input type="radio" name="vote" value="' . $numero . '" />'. $reponse[$numero] .'</label>
  82.         <br /> <img src="sondage_barre.jpg" height="10"width="' . $pourcentage[$numero] / 100 * $long_max_bloc . '"
  83.         alt="'.round($pourcentage[$numero]).'%" /><br />
  84.         <span style="font-size:80%;"><strong>' . $resultat[$numero] . ' votes</strong></span></div>');
  85. //    echo ($pourcentage[$numero] . '%');  
  86.    $numero ++;
  87.   }
  88.   if ($ip_bdd == "0" ){ echo ('<div align="center"><input type="submit" value="envoyer">'); }
  89.   if ($ip_bdd != "0" ){ echo ('<div align="center">Vous avez déjà voté'); }
  90.   echo ('</div></form>');
  91.   fclose($resultats);
  92. ?>


Message édité par hyptnos le 17-03-2007 à 22:43:45
mood
Publicité
Posté le 16-03-2007 à 21:47:55  profilanswer
 

n°1529908
nargy
Posté le 17-03-2007 à 14:03:10  profilanswer
 

ligne 57 et suivante: quand tu ajoute (avec succès) l'adresse ip, elle est alors présente dans la base, tu peux remettre à jour $ip_bdd:

Code :
  1. $ip_bdd = 1;

n°1529928
hyptnos
GT : Gui iom
Posté le 17-03-2007 à 14:50:45  profilanswer
 

Je vois ce que tu veux dire :) c'est vrai que cela pourrait etre la solution et en plus tres simple :)
 
Je vais tester cela merci bien :)

n°1530014
hyptnos
GT : Gui iom
Posté le 17-03-2007 à 22:15:25  profilanswer
 

exellent super merci  
un truc tout con sans prise de tete :) et ca marche
 
Moi qui cherchait midi a 14h :)
 

n°1530016
hyptnos
GT : Gui iom
Posté le 17-03-2007 à 22:42:31  profilanswer
 

j'ai un autre souci maintenant :(
 
j'ai fait un include du fichier sondage.php dans l'index et j'ai une erreur  
 

Citation :


Warning: Cannot use a scalar value as an array in C:\EasyPHP1-8\www\JapanArts\sondage.php on line 112


 
ca veux dire quoi?
 
la ligne 112 c'est  
 

Code :
  1. $resultat[$numero] = fgets($resultats);


 
Une idée?

n°1530017
Gaby59
Posté le 17-03-2007 à 23:00:04  profilanswer
 

A priori ton indice $numero n'est pas un entier.  
Debug la variable $numero par un var_dump par exemple pour en connaitre le contenu.
Sinon tu peux toujours caster ta variable en int : $numero = (int)$numero

n°1530019
sielfried
Posté le 17-03-2007 à 23:09:28  profilanswer
 

Je pense que c'est plutôt $resultat, le problème... il doit déjà avoir une valeur (genre un entier), d'une manière ou d'une autre.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1530020
hyptnos
GT : Gui iom
Posté le 17-03-2007 à 23:11:22  profilanswer
 

euh excuse moi j'ai pas tout compris
 
j'ai rajouter $numero = (int)$numero juste apres la définition de la variable mais ca na rien changer :(
 
le code entier est ci dessus pour plus d'info

n°1530024
sielfried
Posté le 17-03-2007 à 23:18:13  profilanswer
 

Fous un $resultat = array() avant ta boucle (c'est plus propre de toute façon, mais normalement le fait de l'omettre ne devrait pas produire ce genre d'erreurs... :spamafote:)


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1530025
hyptnos
GT : Gui iom
Posté le 17-03-2007 à 23:25:00  profilanswer
 

merci les gars :)
 
$resultat= array(); avant la boucle et sa roule :)
 
Encore merci :p


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  pb raffraichissement : ok | news pb cannot use scalar?

 

Sujets relatifs
fatal error RC1015: cannot open include file 'afxres.h'Problème type "fatal error :Cannot instantiate..."
Shellexecute pour raffraichissement IE 6 ???[Résolu][VS6] WinXP=>Win2k: "This program cannot be run in DOS Mode"
News défilantesChargement dynamique de news
Afficher des news sur son site... Module de news ?[Réglé] [MySQL] Requête qui ne retourne pas toutes les news...
Cannot send session cache limiter (erreur php help)Recherche un bon script news fiable
Plus de sujets relatifs à : pb raffraichissement : ok | news pb cannot use scalar?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR