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:
<?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:
<?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>
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.
