[résolu] Problème de requête

Eléphanteau du PHP | 12 Messages

02 nov. 2007, 13:07

Bonjour
débutant en PHP, j'ai un petit pb avec une requête.
Dans le code suivant, si Identifiant (provenant d'un formulaire) est égal à une valeur "vote_key" dans la table "vote_emargement" et que "vote_flag" correspondant = 1 (ce qui veut dire qu'on a déjà voté), je voudrais afficher une alerte et rediriger vers une autre page. Sinon on continue le script.
Si qqn peut me dire où est l'erreur, d'avance merci.
<?php
$Identifiant = isset($_POST['Identifiant']) ? $_POST['Identifiant'] : '';
$vote_choix = isset($_POST['vote_choix']) ? $_POST['vote_choix'] : '';
 
if ($Identifiant == "")
	//controle Identifiant non vide
if (empty($Identifiant))
{
echo"<script language=\"javascript\">alert(\"Vous devez saisir votre code pour accèder au vote!\");";
echo"window.history.go(-1);</script>";
}
{
	// Connexion à la BD
	include("_conn.php");
$result = mysql_query("SELECT vote_key FROM vote_emargement WHERE vote_key = '". addslashes($_POST["Identifiant"]) ."'");
$count = mysql_num_rows($result);
 
// Si l'utilisateur n'est pas trouvé dans la base de données
if($count <= 0)
{
	// Redirection vers la page index.php
	header("location: index.php");
	exit;
}
// Vérifie que l'identifiant n'a pas déjà voté 
$result = mysql_query("SELECT vote_flag FROM vote_emargement WHERE vote_key = '". addslashes($_POST["Identifiant"]) ."'");
if($result == '1')
{echo"<script language=\"javascript\">alert(\"Vous avez déjà voté. Vous ne pouvez plus accèder au vote.\");";
echo"window.history.go(-1);</script>";
}

}
Modifié en dernier par rabiet le 02 nov. 2007, 15:09, modifié 1 fois.

Eléphant du PHP | 445 Messages

02 nov. 2007, 13:23

Tu as 2 requetes quasi identiques :
$result = mysql_query("SELECT vote_key FROM vote_emargement WHERE vote_key = '". addslashes($_POST["Identifiant"]) ."'"); 
$result = mysql_query("SELECT vote_flag FROM vote_emargement WHERE vote_key = '". addslashes($_POST["Identifiant"]) ."'"); 
Tu pourrais n'en avoir qu'une.
$result = mysql_query("SELECT vote_flag,vote_key FROM vote_emargement WHERE vote_key = '". addslashes($_POST["Identifiant"]) ."'"); 
Ensuite, une fois que tu as fait un mysql_query() tu recuperes une ressource et pas un entier.
Tu dois utiliser une fonction qui te permettra de lire cette ressource.
$result = mysql_query("SELECT vote_flag,vote_key FROM vote_emargement WHERE vote_key = '". addslashes($_POST["Identifiant"]) ."'");
$count = mysql_num_rows($result); 

// Si l'utilisateur n'est pas trouvé dans la base de données
if($count <= 0)
{
    // Redirection vers la page index.php
    header("location: index.php");
    exit;
}else{
$row = mysql_fetch_assoc($result));
$vote_flag = $row['vote_flag'];

   if($vote_flag == '1')   // Verifies que vote_flag n'est pas de type int dans ta table sinon enlever les '
   {
   echo"<script language=\"javascript\">alert(\"Vous avez déjà voté. Vous ne pouvez plus accèder au vote.\");";
   echo"window.history.go(-1);</script>";
   } 
}

Eléphanteau du PHP | 12 Messages

02 nov. 2007, 15:14

Merci beaucoup !

ça marche impec.

il y avait juste une ) de trop à la fin de la ligne :
$row = mysql_fetch_assoc($result);
ça prend un peu la tête ce langage.

@+