Page 1 sur 1

variable coince au sein d'une requête...

Posté : 11 mars 2006, 22:33
par ItaloBADI
Bonjour,

je bute sur un petit problème bête...

Je récupère un nom via un formulaire, que j'appelle choix.
Or, je veux vérifier dans une table le nombre auquel correspond ce nom.
Par exemple : si choix se réfère à 'distille', savoir combien de distille possède le joueur.
Et là je coince dans mon script, à cause de la reprise de ma variable au sein d'une requête...
Je montre mon code où ça coince...
	if(isset($_POST) && !empty($_POST['somme']) && !empty($_POST['choix']) ) 
	{ 
	extract($_POST); 
		
		$choix=$_POST['choix'];
		$somme=$_POST['somme'];
		
		// Voici la requête où je coince
	$sql = "SELECT $choix FROM informations where login = '".$_SESSION['login']."'";
	// on envoie la requête 
	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
	
	$data = mysql_fetch_assoc($req);
	{ 
	$nbchoix= $data['$choix'];
	}
Quelqu'un voit-il le problème ?

Je dois coincer soit sur la requête même au départ
$sql = "SELECT $choix FROM informations where login = '".$_SESSION['login']."'";
Ou sur le moment où je veux afficher sous forme de variable le résultat de la requête avec ça:
$nbchoix= $data['$choix'];
C'est vrai que ça fait bizarre de voir une variable au sein de $data['']

Mais je ne sais pas comment je peux faire autrement...

Quelqu'un peut-il aider le débutant que je reste encore et toujours ?

Merci d'avance... :wink:

Posté : 11 mars 2006, 22:39
par Cyrano
Utilise la fonction SQL COUNT() :
$sql = "SELECT COUNT(". $choix .") as choix FROM informations where login = '".$_SESSION['login']."'";
Ensuite, récupère l'alias :
$nbchoix= $data['choix'];
Ou encore :
$nbchoix = mysql_result($req, 0);

Posté : 11 mars 2006, 22:45
par ItaloBADI

Ah j'ai de la chance de venir au moment où Cyrano est là !
Merci...

Mon sauveur, commeau bon vieux temps de mes tous premiers pas en PHP... !!!

Je vais tester ça...

C'est vrai que j'ai entendu parler des alias que très récemment :oops: , je ne les utilisais jamais avant...

Je vous tiens au courant.

Posté : 11 mars 2006, 22:51
par ItaloBADI
et voilà...

Cela fonctionne...

Merci beaucoup...


EDIT : voir mon post plus loin.

ERREUR, ce n'est pas résolu à ce stade...

Posté : 11 mars 2006, 23:05
par Truc
Ah j'ai de la chance de venir au moment où Cyrano est là !
Vénérons tous le dieu Ganesh :agenouille:

et les fidèles qui travaillent pour lui :langue:

Posté : 11 mars 2006, 23:23
par ItaloBADI

lol

ben finalement, j'ai enlevé le Résolu... :oops:

On s'est mal compris.
Je mesuis mal exprimé certainement au départ.

le COUNT me permet de compter le nombre de fois où il y a le champ $choix dans la table.
Or, il n'y en a qu'un à chaque fois...
Donc,j'ai toujours le nombre 1, même si à l'intérieur du champ $choix, on a la valeur ZERO, même si on a la valeur 4.

Or, ce que je cherche à faire, c'est un marché.
Je veux que lorsqu'il y a ZERO $choix , je dise : vous ne pouvez vendre ce type d'objet,vous n'en avez plus en stock.

DONC, je cherche toujours...

Au cas où quelqu'un passe par là...

Je vais voir avec le code tel qu'il est déjà, en attendant, si je trouve je le signale...

Posté : 11 mars 2006, 23:26
par Cyrano
Il faudrait voir la structure de la table et un échantillon de données pour mieux comprendre alors... :-k

Posté : 11 mars 2006, 23:32
par ItaloBADI
HOP....

Désolé de vous déranger pour rien.

C'est résolu cette fois : j'ai simplement enlevé le COUNT,ce qui me fait :

$sql = "SELECT (". $choix .") as choix FROM informations where login = '".$_SESSION['login']."'"; 
ça donne bien l'ordre que je veux, soit sélectionner le champ qui est connu sous la variable $choix, et savoir ce qu'il a comme nombre ( c'est un champ INT en fait qui mettre à jour le nombre d'objets possédés... )[/b]

Posté : 11 mars 2006, 23:33
par ItaloBADI
MERCI beaucoup...

Toujours aussi super ce forum et l'aide qu'on y trouve !!!!

Posté : 11 mars 2006, 23:40
par Truc
je suis intervenu tout à l'heure pour pas grand chose alors je vais dire un truc un peu plus utile.

Avec ce que tu montres ta 1ère solution aurait très bien fonctionnée si tu avais enelvé les apostrophes dans la varaible:
$nbchoix= $data[$choix];