Erreur SQL (Count)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Erreur SQL (Count)

par 3LpH4Ri0N » 02 janv. 2006, 19:18

okay merci beaucoup pour les précisions :D

par sadeq » 02 janv. 2006, 15:16

Oui, tu peux utiliser mysql_fetch_assoc pour créer un tableau associatif qui contient les noms des champs comme indexes (ça marche aussi avec mysql_fetch_array)
if(empty($_SESSION['pseudo'])){ 
    echo "Vous devez être connecté à un profil pour accéder à cette page";
} 
else {
$sql2 = "SELECT COUNT(id_joueur) AS nb_joueur, id_joueur, nom_joueur, age_joueur  FROM lao_lan_participe WHERE id_joueur = $_SESSION[id]"; 
$req2 = mysql_query($sql2) or die ("Erreur Selection".mysql_error()); 
while ($compte = mysql_fetch_assoc($req2)) { 
    if($compte[nb_joueur] > 0){ 
        echo "$compte[nom_joueur], Vous êtes déja inscrit à ce rassemblement";
    } 
    else { 
        echo "<input type='submit' name='Submit' value='Valider' />";
    } 
  }
}      
 ?>

par Cyrano » 02 janv. 2006, 15:02

le 0 correspond au premier résultat. Un petit tour dans la doc t'en apprendra largement plus que moi

par 3LpH4Ri0N » 02 janv. 2006, 14:56

Okay cela fonctionne, merci CYrano

Cependant j'aurais quelques questions d'ordre pratique pour comprendre ce que tu m'a proposé :D
$compte = mysql_result($req2, 0); 
Bon okay c'est joli ( :wink: ) mais je ne comprend pas le ", 0" ca signifie quoi??
Et sinon est ce que cela ne fonctionne qu'avec un seul champ projetté?? si par exemple je fait une projection de 3 champs : id_joueur, nom_joueur, age_joueur => Puis je faire $compte[id_joueur] ? Est ce donc un while différent??
MErci

par 3LpH4Ri0N » 02 janv. 2006, 14:52

Simple précision:
l'id d'une session n'est pas le même pour un même visiteur dans le temps.
le serveur web attribut un id de session au hasard à un visiteur tant que son navigateur n'est pas initialisé et tant que la session n'a pas expiré.

Si tu enregistre les id de session pour identifier tes membres, ils risquent de ce voir attribuer d'autres id session différents dans le temps et par conséquant la requête d'identification ne marche pas car le nouveau id est inconnu dans la base de données.

Le mieu est se reposer sur un pseudo ou un critère unique personnel au membre.
Non c'est bon car dans ma page d'authtentification je met en $_SESSION l'id de l'utilisateur (id de la table membre) et non pas l'id de la session (aléatoire) :D

par Cyrano » 02 janv. 2006, 14:46

Proposition de correction (à tester)
<?
if(empty($_SESSION['pseudo']))
{
    echo "Vous devez être connecté à un profil pour accéder à cette page";
}
else
{
    $sql2 = "SELECT COUNT(id_joueur) AS nb_joueur FROM lao_lan_participe WHERE id_joueur = ". $_SESSION['id'];
    $req2 = mysql_query($sql2) or die ("Erreur Selection".mysql_error());
    $compte = mysql_result($req2, 0);
    if($compte > 0)
    {
        echo "Vous êtes déja inscrit à ce rassemblement";
    }
    else
    {
        echo "<input type='submit' name='Submit' value='Valider' />";
    }
}
?>

par sadeq » 02 janv. 2006, 14:44

Simple précision:
l'id d'une session n'est pas le même pour un même visiteur dans le temps.
le serveur web attribut un id de session au hasard à un visiteur tant que son navigateur n'est pas initialisé et tant que la session n'a pas expiré.

Si tu enregistre les id de session pour identifier tes membres, ils risquent de ce voir attribuer d'autres id session différents dans le temps et par conséquant la requête d'identification ne marche pas car le nouveau id est inconnu dans la base de données.

Le mieu est se reposer sur un pseudo ou un critère unique personnel au membre.

Erreur SQL (Count)

par 3LpH4Ri0N » 02 janv. 2006, 14:34

Bonjour, bonjour,
Tout d'abord bonne année à tous (ceux qui liront ce post et le reste du monde) et souhaitons plein de bonheur à ceux qui s'occupent gentiement de ce forums et de nos (gros??) problèmes :D

Bon ceci dit, moi j'ai un soucis :(

je voudrais que mes membres s'inscrivent à un rassemblement, je leur donne donc un formulaire et tout le tralala...
Ensuite, une fois le formulaire et le tralala effectué, il s'agit de vérifier s'il n'est pa déja inscrit, pour cela je lui affiche ou non le bouton "Valider".
Voici mon code :
	<?
$sql2 = "SELECT COUNT(id_joueur) AS nb_joueur FROM lao_lan_participe WHERE id_joueur = $_SESSION[id]";
$req2 = mysql_query($sql2) or die ("Erreur Selection".mysql_error());
while ($compte = mysql_fetch_array($req2)) {

	if(empty($_SESSION['pseudo'])){
	echo "Vous devez être connecté à un profil pour accéder à cette page";}
	elseif($compte[nb_joueur] > 0){
		echo "Vous êtes déja inscrit à ce rassemblement";}
	  	else {
		echo "<input type='submit' name='Submit' value='Valider' />";}
		
		?>
Donc théoriquement si mon id n'est pas déja dans la BDD il doit m'afficher mon bouton, or non il ne l'affiche pour personne :(

J'ai affiiché ma requête générée qui dans phpmyadmin me donne 0 donc je ne comprend pas d'ou cela vient ; de plus $compte[nb_joueur] me donne 1 :?

Quelqu'un comprend pourquoi (je suppose que c'est ca) mon while me transfome 0 en 1???

Merci d'avance