Vous n'êtes pas identifié(e).
Pages :: 1
bonjour,
encore une panne que je n'arrive pas à reproduire. je fais une vérification afin que des personnes n'arrivent pas à signer deux fois une même pétition.
de mon coté, je n'arrive pas à signer deux fois, j'ai bien le message "vous avez déjà signé"
mais certaine personnes sont en doublons parmi les signataires (leur identifiant unique, pas que leur nom)
j'ai une table signataire (id_signataire, nom etc...), une pétition (id_petition, texte etc...) et une table verif_petition avec id_signataire, id_petition.
je teste avec nom, prenom, adresse mel si la personne existe. si non, je l'ajoute, si oui, je test si elle a déjà signé. c'est sur cette partie que j'ai un soucis (c'est forcément la même personne car il renvoie le même id_signataire)
ce code fonctionne a chaque fois que je l'essaie, en local et sur le site, et pourtant, certains signent 2 voir 3 fois.
Hors ligne
salut,
si tu regarde bien la doc de mysql_num_rows tu pourra voir que cette fonction retourne un entier, décrit dans le prototype :
int mysql_num_rows ( resource $result )
et toi tu test ligne 7
qui littéralement signifie si le contenu de la variable $res est différent du texte '0' alors ...
hors c'est toujours le cas car le nombre entier zéro est différent de la chaine de caractère '0'.
je te conseil plutôt d'utiliser mysql pour faire le calcul et bien sur de vérifier le type donnée que tu compare
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
merci pour cette réponse très instructive ... j'ai encore du travail avant de savoir programmer
pour cela
!empty($_POST['id'])
je ne t'avais pas tout mis, le test se fait dès l'ouverture de la page. mais à le relire, toujours avec le même soucis que je vais corriger grâce à ton message
[code = php]if(!is_numeric($id))
{
echo" </title></head><body>";
require_once("../include/en_tete.inc");
echo "<h2>Erreur </h2> Cette requête n'est pas valide.<p>Consulter la liste des cyber actions et pétitions ";
echo '<a href="http://www.cyberacteurs.org/actions">sur cette page : http://www.cyberacteurs.org/actions</a>';
exit();
}
else
{
$sql = "SELECT id_petition FROM petition WHERE id_petition = '$id' && valid = 'oui'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$result = mysql_num_rows ($req);
if($result=='0')
{
echo" </title></head><body>";
require_once("../include/en_tete.inc");
echo '<h2>Cyber action / pétition </h2><strong>Aucune pétition ou cyber action ne correspond à votre demande.</strong><p> La pétition ou cyber action demandée n\'existe peut être plus.<p> Vous pouvez en voir le bilan sur cette page <a href="../archives/index.php">http://www.cyberacteurs.org/archives</a> <p>ou bien consulter la liste des cyber actions et pétitions <a href="../actions/index.php">http://www.cyberacteurs.org/actions</a>' ;
[/code]
Hors ligne
juste un truc quand même, cette page
http://www.cyberacteurs.org/actions/pre … p?id=15412
a un $id qui n'existe pas et est testé comme précédement.
#
$sql = "SELECT id_petition FROM petition WHERE id_petition = '$id' && valid = 'oui'";
#
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
#
$result = mysql_num_rows ($req);
#
if($result=='0')
#
{}
et renvoie bien le resultats la pétition n'existe pas
comment cela fait que ça marche si je me suis trompé ?
Hors ligne
je viens de chercher sur internet mais je ne comprend pas ce terme "auto cast"
Hors ligne
transformation automatique de type de donnée, par exemple de caractère en entier. ceci afin de simplifier la vie des gens qui l'utilise.
Par exemple un formulaire ne founit que des chaines de caractère pourtant il est courant de voir if($_POST['id']==28) ..., on devrait utiliser intval pour "changer" la donnée de chaine de caractère en entier
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
Merci, j'ai compris
affaire résolue donc
Hors ligne
Pages :: 1