Discussion:
Comment verifier la presence d'une valeur dans une table...
(trop ancien pour répondre)
L'epicurien
2008-10-30 11:55:57 UTC
Permalink
Bonjour à tous,

Tout d'abord, je débute en code, alors soyez indulgents hein ;)

Bref,

Je possède un site dynamique utilisant le CMS NPDS, bref, je cherche
simplement à ajouter
une bricole dans mes forums... Je voudrais afficher la présence en ligne ou
non, des membres
ayant posté des messages...

Pour cela, je me base sur une recherche dans la table session (logique je
pense) et je voudrais
y faire une recherche du pseudo du membre... (Sachant qu'il n'y a pas d'UID
dans la table session)...

Bref, je récupère donc le pseudo, soit, la valeur à trouver dans la table
session :
$verif1 = $posterdata[uname];


Ensuite il me faut vérifier si "$verif1" existe bien dans le champs uname de
la table session... Et c'est
là que je galère... Je débute vraiment avec les requêtes et j'ai bien sur
fais des recherches sur Google
et autre, mais je n'ai pas trouvé d'explications concrètes pour mon cas...

Voici mon bou de code actuel et en l'état (je pense ne pas être loin, mais
c'est la recherche qui ne
marche pas...

// Le membre est-il en ligne ?
$verif1 = $posterdata[uname];
$verif2 ="SELECT username FROM session";
$online = mysql_query($verif2)
or die ("introuvable");
$ligne = mysql_fetch_array($online, MYSQL_ASSOC);

if ($verif1 == $ligne['username'] )
{
echo "<font size='1' color='#4d6f90'>- Actuellent en ligne : <img
src=\"images/point_vert.jpg\"</font>";
}
else
{
echo "<font size='1' color='#4d6f90'>- Actuellent en ligne : <img
src=\"images/point_rouge.jpg\"</font>";
}


Voila ou j'en suis... ça ne marche pas parce que "$ligne['username']" prend
la première valeur qu'il trouve dans
le champs uname de la table session...

C'est surement tout bête, mais je tourne en rond !!!

Help ;)

Merci d'avance pour celui qui m'éclaircira...
Tonio
2008-10-30 13:16:47 UTC
Permalink
Post by L'epicurien
Bonjour à tous,
Hello,

Tu doit passer le username à ta requete, plutot que de tout récuperer
et de tester en PHP.

Qqc comme ça (non testé) :

$name = $posterdata['uname'];
$query = "SELECT username FROM session WHERE username='%s' ";
$res = mysql_query(sprintf($query, mysql_real_escape_string($name)));

$color = (mysql_fetch_array($online)!==false)?'vert':'rouge';

echo '<font size="1" color="#4d6f90">- Actuellement en ligne : <img
src="images/point_'.$color.'.jpg"</font>';
Olivier Miakinen
2008-10-30 16:15:32 UTC
Permalink
Post by Tonio
Tu doit passer le username à ta requete, plutot que de tout récuperer
et de tester en PHP.
[...]
Rien à dire sur toute cette partie, ce n'est pas mon rayon.
Post by Tonio
echo '<font size="1" color="#4d6f90">- Actuellement en ligne : <img
src="images/point_'.$color.'.jpg"</font>';
Là en revanche il manque toujours un chevron fermant, et pour la
lisibilité je préfère ceci :

echo "<font size='1' color='#4d6f90'>- Actuellement en ligne : <img
src='images/point_$color.jpg'></font>";

Noter qu'il manque aussi un attribut alt dans la balise img...

CrazyCat
2008-10-30 14:51:51 UTC
Permalink
Post by L'epicurien
$verif1 = $posterdata[uname];
$verif2 ="SELECT username FROM session";
if ($verif1 == $ligne['username'] )
Voila ou j'en suis... ça ne marche pas parce que "$ligne['username']" prend
la première valeur qu'il trouve dans
le champs uname de la table session...
Ton problème est plutôt sql, ta requète n'est pas logique.
Tu devrais faire:
$verif2 = "SELECT COUNT(*) AS nb FROM session WHERE username='".$verif1."'";
$res = mysql_query($verif2);
$ligne = mysql_fetch_assoc($res);
if ($ligne['nb']==0) {
... hors ligne ...
} else {
... en ligne ...
}
--
Réseau IRC Francophone: http://www.zeolia.net
Aide et astuces webmasters : http://www.c-p-f.org
Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Olivier Miakinen
2008-10-30 14:51:51 UTC
Permalink
Bonjour,
Post by L'epicurien
[...]
Bref, je récupère donc le pseudo, soit, la valeur à trouver dans la table
$verif1 = $posterdata[uname];
Attention: si « uname » n'est pas une constante que tu aurais définie
par un define("uname", quelque chose), alors il y a une erreur de
syntaxe ici. L'interpréteur est sympa et fait la supposition que tu
voulais bien une chaîne de caractères à la place, mais il vaudrait
mieux le corriger :
$verif1 = $posterdata['uname'];

Note que tant que le code n'est pas en production tu as intérêt à faire
afficher toutes les erreurs, y compris celle-ci, par :
error_reporting(E_ALL);
Post by L'epicurien
Ensuite il me faut vérifier si "$verif1" existe bien dans le champs uname de
la table session... Et c'est
là que je galère... Je débute vraiment avec les requêtes et j'ai bien sur
fais des recherches sur Google
et autre, mais je n'ai pas trouvé d'explications concrètes pour mon cas...
Si le problème concerne la requête SQL, alors le bon groupe pour y poser
la question est fr.comp.applications.sgbd (mais je te souhaite d'arriver
à passer à travers les trolls qui sont le lot presque quotidien de ce
groupe).
Post by L'epicurien
Voici mon bou de code actuel et en l'état (je pense ne pas être loin, mais
c'est la recherche qui ne
marche pas...
[...]
echo "<font size='1' color='#4d6f90'>- Actuellent en ligne : <img
src=\"images/point_vert.jpg\"</font>";
Il y a plein de choses à dire sur cette ligne de code. Tout d'abord, il
manque un chevron fermant à la balise img. Ensuite, la balise font est
dépréciée depuis un moment : il vaudrait mieux utiliser les CSS, aussi
bien pour toi que pour tes visiteurs. D'ailleurs la taille « size='1' »
est illisible dans la plupart des polices. Sinon, note que tu peux
utiliser « ' » à la place de « \" » dans la balise img, exactement comme
tu le fais dans la balise font, tu gagneras en lisibilité du code.
Post by L'epicurien
Voila ou j'en suis... ça ne marche pas parce que "$ligne['username']" prend
la première valeur qu'il trouve dans
le champs uname de la table session...
Je n'ai pas compris ce que tu veux dire, peut-être parce que je ne sais
pas ce que contient $posterdata, mais plus probablement parce que je ne
suis pas un pro des bases de données. Malgré tout, corrige déjà ce qui
précède, ainsi que toutes les erreurs que tu trouveras en changeant la
valeur de error_reporting(), avec un peu de chance ça suffira...
Post by L'epicurien
Merci d'avance pour celui qui m'éclaircira...
Le chirurgien esthétique qui s'est occupé de Michael Jackson ?
Continuer la lecture sur narkive:
Loading...