Problème php pour un système de sondage
5 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Problème php pour un système de sondage
Bonsoir tout le monde,
Je viens vous demander un coup de main car là je planche sur quelques problèmes dont je n'arrive pas toujours à résoudre leur nature.
J'ai créé un système de sondage avec 2 petits fichiers, un nommé sondages_admin.php et l'autre sondage_public.php
J'ai 2 tables MySql qui se nomment sondages et sondages_rep
Pour sondages :
id => int(255) en auto-index et clé index
question => varchar(120)
date => datetime
sondages_rep :
refer => int(255) defaut = 0
reponse => varchar(50)
hits => mediumint(255) defaut = 0
Voici le code de sondage_public
Niveau design tout s'affiche comme je le souhaite en partie publique, j'ai ma question qui s'affiche et mes réponses en type radiobox qui s'affichent aussi. Le souci est que lorsque je clique sur l'une des réponses et que j'envoie ben sa me ramène sur la même page sans avoir traité la demande, les votes ne changent pas. Peux etre un problème de cookies ? Je ne suis pas trop callé la-dedans...
Maintenant mon second souci touche le fichier sondages_admin.php dont voici le code.
Là le(s) soucis sont différents, je n'arrive même pas à créer un sondage lorsque je clique sur ajouter un sondage.
Souci identique sur modifier ou tout simplement sur supprimer, rien ne se passe alors que visuellement c'est ce que je désire.
Je vous remercierais de prêter un peu attention à mes petits soucis ce serait vraiment sympa ^^
Cordialement,
Mikaweb
Si vous avez des questions, je restent à disposition.
ps: me conceriez vous d'utiliser simplement un système d'ip que je stocke en bdd ou bien le système de cookies ?
Est ce que mes tables sont bien choisies ? Pas trop gros, de trucs superflus ?
Un gros merci d'avance car là je sèche.
Je viens vous demander un coup de main car là je planche sur quelques problèmes dont je n'arrive pas toujours à résoudre leur nature.
J'ai créé un système de sondage avec 2 petits fichiers, un nommé sondages_admin.php et l'autre sondage_public.php
J'ai 2 tables MySql qui se nomment sondages et sondages_rep
Pour sondages :
id => int(255) en auto-index et clé index
question => varchar(120)
date => datetime
sondages_rep :
refer => int(255) defaut = 0
reponse => varchar(50)
hits => mediumint(255) defaut = 0
Voici le code de sondage_public
- Code: Tout sélectionner
<?php
//Connexion a la base de donnée
require_once('connect_forum.php');
connexion_portail();
// "Magic Quotes"
set_magic_quotes_runtime(0);
// Ajout d'anti-slashes selon "Magic Quotes"
function AuAddSlashes($chaine) {
return(get_magic_quotes_gpc() == 1 ? $chaine : AddSlashes($chaine));
}
// Retire les anti-slashes selon "Magic Quotes"
function AuStripSlashes($chaine) {
return(get_magic_quotes_gpc() == 1 ? StripSlashes($chaine) : $chaine);
}
$site_cookie = "gunners"; // Debut de nom du cookie :?:
// Affichage des resultats Problème ici ???? :?:
$resultats = 0;
if (!empty($HTTP_COOKIE_VARS[$site_cookie."sondage".$id])) {
$resultats = 1;
}
// Extraction des infos sur le sondage
if (isset($id) && is_numeric($id)) {
$q = mysql_query("SELECT *, TO_DAYS(NOW()) - TO_DAYS(date) AS depuis FROM sondages WHERE id = $id");
}
else {
$q = mysql_query("SELECT *, TO_DAYS(NOW()) - TO_DAYS(date) AS depuis FROM sondages ORDER BY date DESC LIMIT 1");
}
$r = mysql_fetch_array($q);
$id = $r["id"];
$son_q = $r["question"];
$son_depuis = $r["depuis"];
// Ajout d'un vote Problème ici ???? :?:
if (isset($id) && is_numeric($id) && isset($vote) && empty($HTTP_COOKIE_VARS[$site_cookie."sondage".$id])) {
mysql_query("UPDATE sondages_rep SET hits = hits + 1 WHERE reponse = '".AuAddSlashes($vote)."' AND refer = $id");
setCookie($site_cookie."sondage".$id, "1", time() + (3600 * 24));
header("Location: sondage_public.php?id=".$id);
}
// Total de votes
$q = mysql_query("SELECT SUM(hits) AS num FROM sondages_rep WHERE refer = $id");
$r = mysql_fetch_array($q);
$total = $r["num"];
?>
<?php
include('design/haut_inc.php');
?>
<?php
// Affichage des ses reponses
if ($resultats == 1) {
echo "<p><b>".htmlentities($son_q)."</b></p>\n";
echo "<table cellspacing=\"0\" cellpadding=\"0\">\n";
$q1 = mysql_query("SELECT *, TRUNCATE((CEILING(hits / ".$total." * 1000) / 10), 1) AS pourcent FROM sondages_rep WHERE refer = $id");
echo mysql_error();
while ($r1 = mysql_fetch_array($q1)) {
echo "<tr><td><p>".htmlentities($r1["reponse"])."</p></td><td><p><img src=\"themes/".$theme."/barre.gif\" border=\"0\" height=\"10\" width=\"".ceil($r1["pourcent"] * 1.5)."\"></p></td><td><p>".$r1["pourcent"]."%</p></td></tr>\n";}
echo "<tr><td><p><b>Total :</b></p></td><td><p><img src=\"themes/".$theme."/barre.gif\" border=\"0\" height=\"10\" width=\"150\"></p></td><td><p>100%</p></td></tr>\n";
echo "</table>\n";
}
// Affichage du formulaire
else {
echo "<p><b>".htmlentities($son_q)."</b></p>\n";
echo "<form action=\"sondage_public.php\" method=\"post\">\n";
echo "<p><input type=\"hidden\" name=\"id\" value=\"".$id."\"/></p>";
echo "<table cellspacing=\"0\" cellpadding=\"0\">\n";
$q1 = mysql_query("SELECT reponse FROM sondages_rep WHERE refer = $id");
echo mysql_error();
while ($r1 = mysql_fetch_array($q1)) {
echo "<tr><td><input type=\"radio\" name=\"vote\" value=\"".htmlentities($r1["reponse"])."\"/></td>
<td><p>".htmlentities($r1["reponse"])."</p></td></tr>\n";
}
echo "<tr><td colspan=\"2\"><input type=\"submit\" value=\"Voter\"/></td></tr>";
echo "</table>\n";
echo "</form>\n";
echo "<p>Voter afin de voir les résultats.</p>\n";
}
echo "<p>Il y a eu ".$total." vote(s) depuis ";
$son_depuis > 1 ? print($son_depuis." jours") : print($son_depuis." jour");
echo ".</p>\n\n";
// Tous les sondages
$q1 = mysql_query("SELECT *, DATE_FORMAT(date, '$site_date_j') AS dateh FROM sondages ORDER BY date DESC");
while ($r1 = mysql_fetch_array($q1)) {
echo "<p> - <b><a href=\"sondage_public.php?id=".$r1["id"]."\">".htmlentities($r1["question"])."</a></b> (créé ".$r1["dateh"].")</p>\n";
}
?>
</div><div id="footer"></div>
</body>
</html>
Niveau design tout s'affiche comme je le souhaite en partie publique, j'ai ma question qui s'affiche et mes réponses en type radiobox qui s'affichent aussi. Le souci est que lorsque je clique sur l'une des réponses et que j'envoie ben sa me ramène sur la même page sans avoir traité la demande, les votes ne changent pas. Peux etre un problème de cookies ? Je ne suis pas trop callé la-dedans...
Maintenant mon second souci touche le fichier sondages_admin.php dont voici le code.
- Code: Tout sélectionner
<?php
//Connexion a la base de donnée
require_once('connect_forum.php');
connexion_portail();
// "Magic Quotes"
set_magic_quotes_runtime(0);
// Ajout d'anti-slashes selon "Magic Quotes"
function AuAddSlashes($chaine) {
return(get_magic_quotes_gpc() == 1 ? $chaine : AddSlashes($chaine));
}
// Retire les anti-slashes selon "Magic Quotes"
function AuStripSlashes($chaine) {
return(get_magic_quotes_gpc() == 1 ? StripSlashes($chaine) : $chaine);
}
// Creation de l'index
function creerIndex($requete, $maximum) {
global $deb, $total, $max, $commence;
if ($deb <= 0 || !is_numeric($deb) || !isset($deb)) {
$deb = 0;}
$max = $maximum;
$q = mysql_query($requete);
$r = mysql_fetch_array($q);
$total = $r["num"];
$commence = $deb * $max;
}
// Convertisseur texte en HTML compatible
function conv($chaine, $nobr = 0) {
$chaine = htmlentities($chaine);
if ($nobr != 1) {
$chaine = nl2br($chaine);}
$chaine = str_replace("<", "<", $chaine);
$chaine = str_replace(">", ">", $chaine);
$chaine = str_replace(""", "\"", $chaine);
$chaine = str_replace("[<]", "<", $chaine);
$chaine = str_replace("[>]", ">", $chaine);
return $chaine;
}
// Navigateur de pages
function navBarre2($plus) {
global $total, $deb, $max, $PHP_SELF;
if ($total > $max) {
echo "<p>";
if ($deb > 0) {
echo "<a href=\"".basename($PHP_SELF)."?deb=".($deb - 1).$plus."\">< ".$max." précédentes ></a> ";}
if ($total > ($deb + 1) * $max) {
echo " <a href=\"".basename($PHP_SELF)."?deb=".($deb + 1).$plus."\">< ".$max." suivantes ></a>";}
echo "<br />\n";
for ($i = 0; $i < ceil($total / $max); $i++) {
if ($i == $deb) {
echo "(<b>".($i + 1)."</b>) ";}
else {
echo "(<a href=\"".basename($PHP_SELF)."?deb=".$i.$plus."\">".($i + 1)."</a>) ";}
}
echo "</p>\n\n";
}
}
// Ajouter une ligne
function ligne($id, $titre, $modifier, $supprimer, $activer, $imgnum, $plus = "") {
global $PHP_SELF;
$fichier = basename($PHP_SELF);
echo "<b>".conv($titre)."</b>";
if ($activer == 1) {
echo "(<a href=\"$fichier?action=activer&id=".$id.$plus."\">Activer</a>)";}
if ($modifier == 1) {
echo "(<a href=\"$fichier?action=modifier&id=".$id.$plus."\">Modifier</a>)";}
if ($supprimer == 1) {
echo "(<a href=\"$fichier?action=supprimer&id=".$id.$plus."\">Supprimer</a>)";}
echo "\n";
}
// Ajouter un sondage
if ($poster == 1) {
mysql_query("INSERT INTO sondages (question, date) VALUES('".AuAddSlashes($question)."', NOW())");
$q = mysql_query("SELECT id FROM sondages ORDER BY date DESC LIMIT 1");
$r = mysql_fetch_array($q);
for ($i = 0; $i < 15; $i++) {
if (!empty($rep[$i])) {
mysql_query("INSERT INTO sondages_rep (refer, reponse, hits) VALUES (".$r["id"].", '".AuAddSlashes($rep[$i])."', '".AuAddSlashes($vote[$i])."')");}
}
}
// Modifier un sondage
elseif (isset($modifier) && is_numeric($modifier)) {
$action = "modifier";
$id = $modifier;
mysql_query("UPDATE sondages SET question = '".AuAddSlashes($question)."' WHERE id = $modifier");
mysql_query("DELETE FROM sondages_rep WHERE refer = $modifier");
for ($i = 0; $i < 15; $i++) {
if (!empty($rep[$i])) {
mysql_query("INSERT INTO sondages_rep (refer, reponse, hits) VALUES (".$modifier.", '".AuAddSlashes($rep[$i])."', '".AuAddSlashes($vote[$i])."')");}
}
}
// Supprimer un sondage
elseif ($action == "supprimer" && isset($id) && is_numeric($id))
{
mysql_query("DELETE FROM sondages WHERE id = $id");
mysql_query("DELETE FROM sondages_rep WHERE refer = $id");
}
?>
<?php
include('design/haut_inc.php');
?>
<p><a href="sondage_public.php">Liste des sondages</a> - <a href="sondages_admin.php?action=ajouter">Ajouter un sondage</a></p>
<?php
// Ajouter un sondage
if ($action == "ajouter") {
echo "<p>Ajouter un sondage</p>\n";
echo "<form action=\"sondages_admin.php\" method=\"post\">\n";
echo "<input type=\"hidden\" name=\"poster\" value=\"1\"/>\n";
echo "<table cellspacing=\"0\" cellpadding=\"5\" border=\"0\">\n";
echo "<tr><td><b>Question :</b></td><td><input type=\"text\" name=\"question\"/></td><td> </td><td> </td></tr>\n";
for ($i = 0; $i < 15; $i++) {
echo "<tr><td>Réponse ".($i + 1)." :</td><td><input type=\"text\" name=\"rep[".$i."]\"></td><td>Votes :</td>
<td><input type=\"text\" name=\"vote[".$i."]\" value=\"0\"/></td></tr>\n";}
echo "<tr><td colspan=\"4\"><input type=\"submit\" value=\"Ajouter le sondage\"/></td></tr>\n";
echo "</table>\n";
echo "</form>\n";
}
// Modifier un sondage
elseif ($action == "modifier" && isset($id) && is_numeric($id)) {
$q = mysql_query("SELECT * FROM sondages WHERE id = $id");
$r = mysql_fetch_array($q);
echo "<p>Modifier un sondage</p>\n";
echo "<form action=\"sondages_admin.php\" method=\"post\">\n";
echo "<input type=\"hidden\" name=\"modifier\" value=\"".$r["id"]."\"/>\n";
echo "<table cellspacing=\"0\" cellpadding=\"5\" border=\"0\" align=\"center\">\n";
echo "<tr><td><b>Question :</b></td><td><input type=\"text\" name=\"question\" value=\"".$r["question"]."\"/></td><td> </td><td> </td></tr>\n";
$q1 = mysql_query("SELECT * FROM sondages_rep WHERE refer = ".$r["id"]." ORDER BY reponse");
$i = 0;
while ($r1 = mysql_fetch_array($q1)) {
echo "<tr><td>Réponse ".($i + 1)." :</td><td><input type=\"text\" name=\"rep[".$i."]\" value=\"".$r1["reponse"]."\" /></td><td>Votes :</td>
<td><input type=\"text\" name=\"vote[".$i."]\" value=\"".$r1["hits"]."\"/></td></tr>\n";
$i++;}
while ($i < 15) {
echo "<tr><td>Réponse ".($i + 1)." :</td><td><input type=\"text\" name=\"rep[".$i."]\" /></td><td>Votes :</td>
<td><input type=\"text\" name=\"vote[".$i."]\" value=\"0\"/></td></tr>\n";
$i++;}
echo "<tr><td colspan=\"4\" align=\"center\"><input type=\"submit\" value=\"Modifier le sondage\"/></td></tr>\n";
echo "</table>\n";
echo "</form>\n";
}
// Liste des sondages
else {
// Creation de l'index
creerIndex("SELECT COUNT(*) AS num FROM sondages", 20);
// Affichage des news sur le site
echo "<p>Liste des sondages :</p>\n";
$q = mysql_query("SELECT id, CONCAT(question, ' / Date : ', DATE_FORMAT(date, '%d/%m/%Y')) AS titre2 FROM sondages ORDER BY date DESC LIMIT $commence, $max");
$i = 0;
while ($r = mysql_fetch_array($q)) {
$i ++;
ligne($r["id"], $r["titre2"], 1, 1, 0, $i);}
}
?>
</div><div id="footer"></div>
</body>
</html>
Là le(s) soucis sont différents, je n'arrive même pas à créer un sondage lorsque je clique sur ajouter un sondage.
Souci identique sur modifier ou tout simplement sur supprimer, rien ne se passe alors que visuellement c'est ce que je désire.
Je vous remercierais de prêter un peu attention à mes petits soucis ce serait vraiment sympa ^^
Cordialement,
Mikaweb
Si vous avez des questions, je restent à disposition.
ps: me conceriez vous d'utiliser simplement un système d'ip que je stocke en bdd ou bien le système de cookies ?
Est ce que mes tables sont bien choisies ? Pas trop gros, de trucs superflus ?
Un gros merci d'avance car là je sèche.
Bonjour, ou plutôt bonsoir
je n'arrive pas a dormir, je m'ennuie alors, je lit les forum ^^
pour ton problème, c'est que ton script est prévu pour fonctionner avec register global à on et que maintenant, il est sur off partout ou presque.
pour régler ton problème, ne surtout pas le passer à on, mais modifier ton script
voila un exemple de modification à faire :
dans ton code, tu as :
qui devrait être écrit comme cela :
en fait, toutes les valeurs passée par ton formulaire, doivent être récupérée par $_POST['nomdelavaleur'] et non pas par $nomdelavaleur
Bonne continuation
je n'arrive pas a dormir, je m'ennuie alors, je lit les forum ^^
pour ton problème, c'est que ton script est prévu pour fonctionner avec register global à on et que maintenant, il est sur off partout ou presque.
pour régler ton problème, ne surtout pas le passer à on, mais modifier ton script
voila un exemple de modification à faire :
dans ton code, tu as :
- Code: Tout sélectionner
// Extraction des infos sur le sondage
if (isset($id) && is_numeric($id) && isset($vote)
qui devrait être écrit comme cela :
- Code: Tout sélectionner
// Extraction des infos sur le sondage
if (isset($_POST['id']) && is_numeric($_POST['id']) && isset($_POST['vote'])
en fait, toutes les valeurs passée par ton formulaire, doivent être récupérée par $_POST['nomdelavaleur'] et non pas par $nomdelavaleur
Bonne continuation
- NextGeneration
- WRInaute impliqué

- Messages: 425
- Inscription: Mer Sep 27, 2006 18:34
Je t'aurais bien répondu, mais y'a trop de code et pas assez d'explications.... Donc je te donne ma vision des choses pour la réalisation d'un sondage
Les tables:
( PK ) = primary key, clé primaire
( FK -> table.champ ) = foreign key, clé étrangère sur le champ "champ" de la table "table"
s_sondage
----------
id_sondage ( PK ) INT(4)
question_sondage VARCHAR(255)
etat_sondage TINYINT(1)
s_option
--------
id_option ( PK ) INT(5)
id_sondage ( FK -> s_sondage.id_sondage ) INT(4)
libelle_option VARCHAR(255)
s_vote
------
id_vote ( PK ) INT(7)
id_sondage ( FK -> s_sondage.id_sondage ) INT(4)
id_option ( FK -> s_option.id_option ) INT(5)
date_vote INT(11)
ip_vote VARCHAR(20)
Un vote s'applique à une option.
Une option appartient à un sondage.
Avec une structure comme celle-ci, il sera pas très compliqué de coder une classe Sondage, qui pourrait ressembler à ca ( uml simplifié ):
Une remarque générale sur ton code... essaye de bien séparer tes traitements de ton affichage. Une requete sql suivie d'un "echo", c'est un enfer à maintenir si tu veux revoir ton code dans 6 mois :s
Les tables:
( PK ) = primary key, clé primaire
( FK -> table.champ ) = foreign key, clé étrangère sur le champ "champ" de la table "table"
s_sondage
----------
id_sondage ( PK ) INT(4)
question_sondage VARCHAR(255)
etat_sondage TINYINT(1)
s_option
--------
id_option ( PK ) INT(5)
id_sondage ( FK -> s_sondage.id_sondage ) INT(4)
libelle_option VARCHAR(255)
s_vote
------
id_vote ( PK ) INT(7)
id_sondage ( FK -> s_sondage.id_sondage ) INT(4)
id_option ( FK -> s_option.id_option ) INT(5)
date_vote INT(11)
ip_vote VARCHAR(20)
Un vote s'applique à une option.
Une option appartient à un sondage.
Avec une structure comme celle-ci, il sera pas très compliqué de coder une classe Sondage, qui pourrait ressembler à ca ( uml simplifié ):
Une remarque générale sur ton code... essaye de bien séparer tes traitements de ton affichage. Une requete sql suivie d'un "echo", c'est un enfer à maintenir si tu veux revoir ton code dans 6 mois :s
NextGeneration, pourrait tu m'expliquer l'utilité de la seconde table car là sa m'échappe
Est-ce les options possibles dans le vote ? Ou bien autre chose, je ne veux pas paraitre stupdide mais j'ai décidé de tout reprendre à zéro comme toi tu voie la chose, sa me semble un peu plus correct
Merci.
Est-ce les options possibles dans le vote ? Ou bien autre chose, je ne veux pas paraitre stupdide mais j'ai décidé de tout reprendre à zéro comme toi tu voie la chose, sa me semble un peu plus correct
Merci.
5 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Honda va inclure Google Earth dans son système de navigation par satellite
- Interview de Larry Page dans Playboy
- Accord entre AOL et Google
- AdSense : des AdWords sur vos sites
- Google Code Jam 2003
- Du nouveau dans le Centre pour Webmasters de Live Search
- Google signe avec Lycos Europe un accord sur la publicité ciblée
- Google obtient un brevet sur le Social Bookmarking
- Clics frauduleux AdWords : une ardoise de 90 M$
- Explications sur le Crawl Caching Proxy de Google
- Un petit sondage: Système d'exploitation...
- Sondage en php
- Sondage php, mon code est barbare !
- [PHP] Système de vote!
- PHP - Créer un système de ping ?
- Système de blog php/mysql
- [PHP] Créer des système de votes efficaces
- Cherche systeme de gestion de portail PHP/MYSQL
- performance système de commentaire/forums PHP/mySQL
- Problème avec le système de cache UR - .htaccess - RewriteC.
- probleme entre index.php centre.php et news.php
- Passage d'un systeme "frames" vers systeme sans fr
- AJax, php et xml, probleme de variable php
- [ Script PHP ] Problème de connexion (session php)
- Problème SQL et PHP
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités



le forum