Page 1 sur 2
prob requete avec variable $_SERVER['REMOTE_USER']
Posté : 11 sept. 2005, 15:34
par x-ben
salut à tous
donc voila je parviens a récupérer le log d'un htaccess grace a cette variable: $_SERVER['REMOTE_USER']
mais si je fais cette requette:
$requete = "SELECT id FROM droits WHERE log = \"".$_SERVER['REMOTE_USER']."\"";
$id_user = MYSQL_QUERY($requete);
echo "id:$id_user:fin";
(j'ai essayé aussi sans les \" en en ne mettant que ' )
en l'occurence l'echo affiche: Resource id #10
alors que l'id doit etre 19
si vous avez une ptite idée elle est super bienvenue 8)
thx
Posté : 11 sept. 2005, 15:47
par Cyrano
Parce que tu n'as fait qu'exécuter la requête, mais tu ne récupères pas le résultat, or mysql_query retourne une ressource, pas un résultat. Correction:
$requete = "SELECT id FROM droits WHERE log = '".$_SERVER['REMOTE_USER']."'";
$id_user = mysql_query($requete);
while($id = mysql_result, 0)
{
echo "id:". $id .":fin";
}
Posté : 11 sept. 2005, 16:19
par x-ben
merci cyrano.
je comprend à peu pres...
il reste une erreur apres avoir changé le code:
Parse error: parse error, unexpected ',' in /var/www/free.fr/7/5/blablaa/toto/index.php on line 45
line 45 c'est celle ou il y a le while.
j'ai tenté d'enlever le ,0 (ne sachant pas à quoi il sert) et le resultat a bouclé a l'infini dans la page.
Posté : 11 sept. 2005, 16:29
par Cyrano
Autant pour moi, il y a une erreur dans mon code : corrigé
$requete = "SELECT id FROM droits WHERE log = '".$_SERVER['REMOTE_USER']."'";
$id_user = mysql_query($requete);
while($id = mysql_result($id_user, 0))
{
echo "id:". $id .":fin";
}
Posté : 11 sept. 2005, 16:41
par x-ben
pas mal, ça m'affiche bien le résultat attendu, mais ça boucle à l'infini
peux tu m'expliquer a quoi correspondent les 2 parametres passés dans le mysql_result stp?
Posté : 11 sept. 2005, 16:45
par HD
le premier est le resultat
le deuxieme est le numero de la ligne (on commence a partir de 0)
plus d'ifos :
http://www.php.net/manual/fr/function.mysql-result.php
Posté : 11 sept. 2005, 16:46
par rami
Le premier argument: resultat d'une requete exécutée avec mysql_query
Deuxième : ligne à récupérer (ordre des champs du select, de 0 à n-1, si tu sélectionnes n champs)
Va voir
ici
edit:
La boucle infinie est logique car on boucle sur la ligne 0 indéfiniment.
Posté : 11 sept. 2005, 16:47
par Cyrano
...ça m'affiche bien le résultat attendu, mais ça boucle à l'infini ...

pas normal du tout... sauf si tout ça est à l'intérieur d'une autre boucle ?
Posté : 11 sept. 2005, 16:52
par x-ben
...ça m'affiche bien le résultat attendu, mais ça boucle à l'infini ...

pas normal du tout... sauf si tout ça est à l'intérieur d'une autre boucle ?
non regarde:
Code : Tout sélectionner
$requete = "SELECT id FROM droits WHERE log = '".$_SERVER['REMOTE_USER']."'";
$id_user = MYSQL_QUERY($requete);
while($id = mysql_result($id_user, 0))
{
echo "id:". $id .":fin";
}
$date = date("Y-d-m");
echo "test_fin";
ça m'affiche id:45:finid:45:finid:45:finid:45:finid:45:fin etc....
Posté : 11 sept. 2005, 17:01
par Cyrano
Ben c'est pas normal pour autant... essaye un truc en ajoutant juste un détail dans la requête SQL:
$requete = "SELECT DISTINCT id FROM droits WHERE log = '".$_SERVER['REMOTE_USER']."'";
$id_user = MYSQL_QUERY($requete);
while($id = mysql_result($id_user, 0))
{
echo "id:". $id .":fin";
}
$date = date("Y-d-m");
echo "test_fin";
Posté : 11 sept. 2005, 17:03
par rami
Si c'est normal, tu boucles sur la première ligne indéfiniment:
$requete = "SELECT id FROM droits WHERE log = '".$_SERVER['REMOTE_USER']."'";
$id_user = MYSQL_QUERY($requete);
$i=0;
while($id = mysql_result($id_user, $i))
{
echo "id:". $id .":fin";
$i++;
}
$date = date("Y-d-m");
echo "test_fin";
Posté : 11 sept. 2005, 17:07
par Cyrano
Sauf que là, on attend un seul résultat, il n'est pas normal d'obtenir le même résultat un nombre indéfini de fois. Peut-être un bug dans MySQL ou dans PHP, je l'ignore, mais je n'ai jamais vu ça.
C'est pour ça que je suggère d'essayer en ajoutant une clause DISTINCT dans la requête.
Posté : 11 sept. 2005, 17:11
par rami
Nan c'est pas un bug, le 2ème argument de mysql_result() est le numéro de ligne et non pas de la colonne du résultat.
Tu fais une boucle indéfinie car tu affecte à $id la valeur de la ligne 0 tant que mysql_result($res,0) est vrai ( ce qui est toujours le cas).
Posté : 11 sept. 2005, 17:11
par x-ben
alors, le distinct, ça ne change rien.
la méthode de rami fonctionne sauf que apres m'afficher le resultat, ça affiche:
Warning: mysql_result(): Unable to jump to row 1 on MySQL result index 10 in /var/www/free.fr/7/5/blabla/tota/index.php on line 46
Posté : 11 sept. 2005, 17:12
par rami
Si tu es sur de n'avoir qu'un seul resultat, ne fais pas de boucle while.
