> Tous les forums > Forum des Webmasters
 Problème avec condition
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
chester80
  Posté le 05/04/2010 @ 12:24 
Aller en bas de la page 
Petit astucien

Bonjour à tous,

J'ai fait un sondage qui fonctionne bien comme je l'ai fait.

En faite il s'affiche le formulaire sur ma page d'accueil avec les résultats juste en dessous.


Quand je clique sur votez les résultats s'affiche dans une autre pages.

Le sondage fonctionne avec reconnaissance d'ip.

Ce que je voudrait c'est que des que quelqu'un a voté, le formulaire n'existe plus et soit remplacer par les résultats

Voici les codes
dans page d'accueil:

// Formulaire

$sql = mysql_query('SELECT * FROM sondage ORDER BY id DESC LIMIT 0,1');
while($resultat = mysql_fetch_array($sql))
{
$id_sondage = $resultat['id'];
$question = $resultat['question'];

echo '
<form method="POST" action="sondages_resultats.php?id='.$id_sondage.'">
<p class="sondage_question">'.$question.'</p>
';

$re_1 = $resultat['reponse1'];
$re_2 = $resultat['reponse2'];
$re_3 = $resultat['reponse3'];
$re_4 = $resultat['reponse4'];

if(!empty($resultat['reponse1']))
{
echo '<p class="sondage_choix"><input type="radio" value="1" name="reponse"> '.$re_1.'<br/>';
}
if(!empty($resultat['reponse2']))
{
echo '<input type="radio" value="2" name="reponse">'.$re_2.'<br/>';
}
if(!empty($resultat['reponse3']))
{
echo '<input type="radio" value="3" name="reponse">'.$re_3.'<br/>';
}
if(!empty($resultat['reponse4']))
{
echo '<input type="radio" value="4" name="reponse">'.$re_4.'<br/></p>';
}
}

echo '<p class"sondage">
<input type="submit" value="Voter">
</p>
</form>
';


// Résultats


$connexion = mysql_connect("*******" , "*****" , "****");
$sql = "SELECT * FROM resultats WHERE numero='$id_sondage'";
$result = mysql_db_query('********' , $sql , $connexion);
$votes = mysql_num_rows($result);
if($votes == 0)
{
$votes = 1;
}
$sql = "SELECT * FROM resultats WHERE numero='$id_sondage' AND reponse='1'";
$result = mysql_db_query("******",$sql,$connexion);
$rep1 = mysql_num_rows($result);
$sql = "SELECT * FROM resultats WHERE numero='$id_sondage' AND reponse='2'";
$result = mysql_db_query("****",$sql,$connexion);
$rep2 = mysql_num_rows($result);
$sql = "SELECT * FROM resultats WHERE numero='$id_sondage' AND reponse='3'";
$result = mysql_db_query("******",$sql,$connexion);
$rep3 = mysql_num_rows($result);
$sql = "SELECT * FROM resultats WHERE numero='$id_sondage' AND reponse='4'";
$result = mysql_db_query("********",$sql,$connexion);
$rep4 = mysql_num_rows($result);


$deb1 = 100*$rep1;
$fin1 = $deb1 / $votes;
$deb2 = 100*$rep2;
$fin2 = $deb2 / $votes;
$deb3 = 100*$rep3;
$fin3 = $deb3 / $votes;
$deb4 = 100*$rep4;
$fin4 = $deb4 / $votes;

echo '<script language="javascript">
reponse1 = Math.round('.$fin1.');
reponse2 = Math.round('.$fin2.');
reponse3 = Math.round('.$fin3.');
reponse4 = Math.round('.$fin4.');
';

$sql = "SELECT * FROM sondage_ip WHERE numero='$id_sondage' AND ip='$REMOTE_ADDR'";
$result = mysql_db_query("*******" , $sql , $connexion);
$lignes = mysql_num_rows($result);
if($lignes == 1)
{

if(!empty($re_1))
{
echo '
document.write(\'<center><b>1. '.$re_1. ' ('.$rep1.')</b><br/> <img border="0" src="img/sondage.gif" height=5 WIDTH="\'+reponse1+\'"> \'+reponse1+\'%</center>\');
';
}
if(!empty($re_2))
{
echo '
document.write(\'<center><b>2. '.$re_2.' ('.$rep2.')</b><br/> <img border="0" src="img/sondage.gif" height=5 WIDTH="\'+reponse2+\'"> \'+reponse2+\'%</center>\');
';
}
if(!empty($re_3))
{
echo '
document.write(\'<center><b>3. '.$re_3.' ('.$rep3.')</b><br/> <img border="0" src="img/sondage.gif" height=5 WIDTH="\'+reponse3+\'"> \'+reponse3+\'%</center>\');
';
}
if(!empty($re_4))
{
echo '
document.write(\'<center><b>4. '.$re_4.' ('.$rep4.')</b><br/> <img border="0" src="img/sondage.gif" height=5 WIDTH="\'+reponse4+\'"> \'+reponse4+\'%</center>\');
';
}
echo '</script>';

}
$total_votants=$rep1 + $rep2 + $rep3 + $rep4;
echo '<p>Total Votants : ' . $total_votants . '</p>';

Pages résultats:

<?php

$sql = mysql_query('SELECT * FROM sondage_ip WHERE numero="$id" AND ip="$REMOTE_ADDR"') or die(mysql_error());
$lignes = mysql_num_rows($sql);
if($lignes == 0)
{
$sql = mysql_query('INSERT INTO sondage_ip VALUES("$id","$REMOTE_ADDR")');
$sql = mysql_query('INSERT INTO resultats VALUES("$id", "$reponse")');

print 'Merci d\'avoir voté !';
}
else
{
print 'Vous avez déjà voté !';
}





$sql = mysql_query('SELECT * FROM sondage ORDER BY id DESC LIMIT 0,1') or die(mysql_error());
while($resultat = mysql_fetch_array($sql))
{
$id_sondage = $resultat['id'];
$question = $resultat['question'];
echo '
<form method="POST" action="sondage_resultats.php?id='.$id_sondage.'">
<b>'.$question.'</b><br><br>
';

$re_1 = $resultat['reponse1'];
$re_2 = $resultat['reponse2'];
$re_3 = $resultat['reponse3'];
$re_4 = $resultat['reponse4'];

if(!empty($resultat['reponse1']))
{
echo '<input type="radio" value="1" name="reponse"><span class="sondage_choix"> '.$re_1.'</span><br>';
}
if(!empty($resultat['reponse2']))
{
echo '<input type="radio" value="2" name="reponse"><span class="sondage_choix"> '.$re_2.'</span><br>';
}
if(!empty($resultat['reponse3']))
{
echo '<input type="radio" value="3" name="reponse"><span class="sondage_choix"> '.$re_3.'</span><br>';
}
if(!empty($resultat['reponse4']))
{
echo '<input type="radio" value="4" name="reponse"><span class="sondage_choix"> '.$re_4.'</span><br>';
}
}

echo '
<br>
<input type="submit" value="Voter">
</form>

<br>
';

$sql = mysql_query('SELECT * FROM resultats WHERE numero="$id_sondage"') or die(mysql_error());
$votes = mysql_num_rows($sql);
if($votes == 0)
{
$votes = 1;
}
$sql = mysql_query('SELECT * FROM resultats WHERE numero="$id_sondage" AND reponse="1"');
$rep1 = mysql_num_rows($sql);

$sql = mysql_query('SELECT * FROM resultats WHERE numero="$id_sondage" AND reponse="2"');
$rep2 = mysql_num_rows($sql);

$sql = mysql_query('SELECT * FROM resultats WHERE numero="$id_sondage" AND reponse="3"');
$rep3 = mysql_num_rows($sql);

$sql = mysql_query('SELECT * FROM resultats WHERE numero="$id_sondage" AND reponse="4"');
$rep4 = mysql_num_rows($sql);


$deb1 = 100*$rep1;
$fin1 = $deb1 / $votes;
$deb2 = 100*$rep2;
$fin2 = $deb2 / $votes;
$deb3 = 100*$rep3;
$fin3 = $deb3 / $votes;
$deb4 = 100*$rep4;
$fin4 = $deb4 / $votes;

echo '<script language="javascript">
reponse1 = Math.round('.$fin1.');
reponse2 = Math.round('.$fin2.');
reponse3 = Math.round('.$fin3.');
reponse4 = Math.round('.$fin4.');
';

$sql = mysql_query('SELECT * FROM sondage_ip WHERE numero="$id_sondage" AND ip="$REMOTE_ADDR"');
$lignes = mysql_num_rows($sql);
if($lignes == 1)
{

if(!empty($re_1))
{
echo '
document.write(\'<b>1. '.$re_1. ' ('.$rep1.')</b><br/> <img border="0" src="barre.gif" height=5 WIDTH="\'+reponse1+\'"> <b> \'+reponse1+\'%</b><br/><br/>\');
';
}
if(!empty($re_2))
{
echo '
document.write(\'<b>2. '.$re_2.' ('.$rep2.')</b><br/> <img border="0" src="barre.gif" height=5 WIDTH="\'+reponse2+\'"> <b> \'+reponse2+\'%</b><br/><br/>\');
';
}
if(!empty($re_3))
{
echo '
document.write(\'<b>3. '.$re_3.' ('.$rep3.')</b><br/> <img border="0" src="barre.gif" height=5 WIDTH="\'+reponse3+\'"> <b> \'+reponse3+\'%</b><br/><br/>\');
';
}
if(!empty($re_4))
{
echo '
document.write(\'<b>4. '.$re_4.' ('.$rep4.')</b><br/> <img border="0" src="barre.gif" height=5 WIDTH="\'+reponse4+\'"> <b> \'+reponse4+\'%</b><br/><br/>\');
';
}
echo '</script>';

}
$total_votants=$rep1 + $rep2 + $rep3 + $rep4;
echo '<p>Total Votants : ' . $total_votants . '</p>';



?>

J'ai fait comme sa mais cela ne fonctionne pas:

$sql = mysql_query('SELECT * FROM sondage_ip WHERE numero="$id" AND ip="$REMOTE_ADDR"') or die(mysql_error());
$lignes = mysql_num_rows($sql);
if($lignes == 0)
{
//formulaire;
}
else
{
//resultats;
}

Merci pour votre aide



Modifié par chester80 le 07/04/2010 16:26
Publicité
Malcolm
 Posté le 05/04/2010 à 17:38 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

tu veux dire que si l'IP a déjà voté, alors ne pas réafficher le formulaire ?

Tu peux trouver l'IP dans $_SERVER['REMOTE_ADDR']

il suffit de voir s'il y a un votant dont l'IP vaut cette valeur. Si zéro : on affiche le formulaire, autrement (1 ligne ou plus) : on n'affiche pas.

Mais l'IP n'est pas une donnée à 100% sûre.

chester80
 Posté le 05/04/2010 à 22:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

C'est ce que j'ai fais mais cela ne fonctionne pas (Voir plus haut).

Merci pour votre aide

chester80
 Posté le 06/04/2010 à 16:16 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Personne?

Cedders
 Posté le 06/04/2010 à 20:08 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

Je lis actuellement ton code mais si j'étais toi j'éditerais de suite mon message car ce n'est pas une bonne idée de diffuser les accès à ta base de donnée chez 1and1.

EDIT : Tu utilises dans ta requête ou tu test la présence de l'ip cette variable : $REMOTE_ADDR. Est-ce que tu as affecté à cette variable la valeur de $_SERVER['REMOTE_ADDR'] ou s'agit-il d'une erreur ?



Modifié par Cedders le 06/04/2010 20:11
chester80
 Posté le 07/04/2010 à 16:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Cedders a écrit :

Bonjour,

Je lis actuellement ton code mais si j'étais toi j'éditerais de suite mon message car ce n'est pas une bonne idée de diffuser les accès à ta base de donnée chez 1and1.

EDIT : Tu utilises dans ta requête ou tu test la présence de l'ip cette variable : $REMOTE_ADDR. Est-ce que tu as affecté à cette variable la valeur de $_SERVER['REMOTE_ADDR'] ou s'agit-il d'une erreur ?

J'avais completement zapper de supprimer les acces voila c'est fait

tu parle de quel page?

Car resultats fonctionne tres bien alors j'ai repris la meme condition que la page résulats pour mettre sur ma page d'acueil et cela donne sa

$sql = mysql_query('SELECT * FROM sondage_ip WHERE numero="$id" AND ip="$REMOTE_ADDR"') or die(mysql_error());
$lignes = mysql_num_rows($sql);
if($lignes == 0)
{
//formulaire;
}
else
{
//resultats;
}

Mais sa ne focntionne pas

Malcolm
 Posté le 07/04/2010 à 19:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

sql = mysql_query('SELECT * FROM sondage_ip WHERE numero="$id" AND ip="$REMOTE_ADDR"') or die(mysql_error());

ne marchera pas car ta chaine de caractères est délimitée par une apostrophe, et la variable $machin ne sera donc pas remplacée par sa valeur.

Solution 1 (crade) : mettre des guillemets

sql = mysql_query("SELECT * FROM sondage_ip WHERE numero='$id' AND ip='$REMOTE_ADDR'") or die(mysql_error());

Solution 2 (plus propre) : concaténer, ou utiliser des requêtes préparées (ou (intermédiaire) un pseudo casting :

$sql = sprintf("SELECT * FROM sondage_ip WHERE numero='%d' AND ip='%d';", $id, $REMOTE_ADDR) or die(mysql_error());

Cedders
 Posté le 07/04/2010 à 23:13 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Ha bien vu Malcolm ... j'avais complètement zapper les ' et ".

chester80
 Posté le 08/04/2010 à 20:13 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Salut

Je viens de faire et c'est pareil.

J'ai toujours la condition1 et jamais la condition 2

Publicité
Cedders
 Posté le 08/04/2010 à 22:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Tu as testé ta requête sql directement sur phpmyadmin ou autre pour voir si celà venait d'une erreur SQL ou de ton script php ?

Sinon moi je ferais directement comme ça

if(mysql_num_rows($sql))
{
//formulaire;
}
else
{
//resultats;
}

mais bon je crois pas que ça va résoudre ton problème :D donc regarde si ta requête sql fonctionne via phpmyadmin et tiens nous au courant.

christele
 Posté le 09/04/2010 à 00:22 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Il est inquiétant de voir même des TOPOS "sérieux" se baser sur l'IP alors que tout aprentis, hackeur niveau maternelle, sait changer son IP toute les cinq minutes.

Le pire étant que même ceux qui ne veulent pas tricher et sont par exemple sur un SAGEM 800 chez Orange sertont sans arret reconnectés avec une adresse IP nouvelle !

chester80
 Posté le 09/04/2010 à 05:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Oui je sais sa mais des que j'aurai fait mon espace membre je changer la condition de l'ip par la connexion de l'utilisateur.

Voila

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
79,99 €Barbecue WEBER Compact Kettle 47 cm à 79,99 €
Valable jusqu'au 16 Septembre

Cdiscount fait une promotion sur le barbecue Barbecue WEBER Compact Kettle 47 cm qui passe à 79,99 € au lieu de 100 €. La livraison est gratuite. 


> Voir l'offre
137,02 €Alimentation modulaire Corsair RM850X 80+ Gold à 137,02 € livrée
Valable jusqu'au 18 Septembre

Amazon Espagne propose actuellement l'alimentation modulaire Corsair RM850X à 127,88 €. Comptez 9,14 € pour la livraison en France soit un total de 137,02 € livrée. Cette alimentation de 850W est certifiée 80+ Gold et est garantie 7 ans. Entièrement modulaire, vous pourrez brancher uniquement les câbles (fournis) dont vous avez besoin. On la trouve ailleurs à partir de 170 €. 


> Voir l'offre
1491,79 €Acer Nitro 5 (17,3'' FHD 144Hz, Ryzen 5800H, 16/1 To, RTX 3080 8 Go) à 1491,79 €
Valable jusqu'au 16 Septembre

Le vendeur sérieux AcheterNet fait une belle promotion via Rakuten sur l'ordinateur portable Acer Aspire Nitro AN517-41 qui passe à 1491,79 €. Ce portable dédié aux joueurs dispose d'un écran 17,3 pouces FHD 1920 x 1080 IPS 144 Hz, d'un processeur AMD Ryzen 7 5800H, de 16 Go de mémoire RAM, d'un SSD NVMe de 1 To et surtout d'une carte graphique Nvidia GeForce RTX 3070 avec 8 Go de mémoire qui vous permettra de profiter de vos jeux de manière fluide en haute résolution. Le tout tourne sous Windows 10. 44,75 € vous sont également reversés pour vos prochains achats Rakuten.


> Voir l'offre

Sujets relatifs
Problème avec free
problème avec fichier "xxx.klm"
problème avec google
Problème avec le panel d'un hébergeur d'image
Problème avec onduleur APC; Back-UPS PRO 900
Probléme avec vos liens
Problème avec le mot casino
Problème avec clé d'activation.
Problème avec menu en javascript à éditer
Problème avec dewplayer
Plus de sujets relatifs à Problème avec condition
 > Tous les forums > Forum Forum des Webmasters