Débats, partage et délires en tout genre. C'est une tradition maintenant...
Règles du forum
Sujet verrouillé

15 Avr 2007, 19:19

loursin a écrit:
Le Kaiser a écrit:Ki-2, en fait mon besoin est très simple. Sur la page d'accueil de mon site afterfoot (nouvelle version) je voulais mettre els 3 derniers joueurs inscrits en base. Afin de différencier mes pages deans le wiki, les fiche de joueurs appartiennent à la catégorie (cl_to dans la bdd wiki) "Joueurs" de la table "categorylist". En face de chaque article appartenant à la catégorie joueur, j'ai un n° unique "cl_from". Afin de savoir de quel joueur il s'agit je dois retrouver ce même numéro "cl_from" dans la table "page", pour ensuite y associer la valeur "page_title" qui correspond de fait au nom du joueur sous la forme Prenom_Nom. (toutes mes images de joueurs sont également sous cette forme là)

mon abjectif est donc le suivant
1- je choisi les 3 dernières "id" dans la base catégorylist avec comme paramètre "catégory='joueurs'"

2 - un fois ces 3 valeurs obtenues, je dois interroger la table "page" pour connaitre la valeur du champ "page_title" associée à chacune de ces 3 valeurs

3- je dois afficher le lien et la photo du joueurs (index.php?title=page_title et page_title.jpg) dans un tableau à 1 ligne et 3 colonnes.

Et bien évidemment je n'y arrive pas. le code que tu as vu provient d'ci

Si tu peux m'éclairer, par avance, merci beaucoup... le chemin vers la maitrise du php est long et difficile, mais je suis confiant


ou un truc style

select page_title from page where cl_from IN (select cl_from from categorylist where category="joueurs" order by cl_from DESC limit 3)

+1
tu devrais pas réutiliser du code déja tout fait en général sa marche pas (la preuve)

15 Avr 2007, 19:42

ben là j'ai essayé
Code:
   $sql = mysql_query("SELECT page_title FROM page WHERE cl_from IN (SELECT cl_from FROM categorylinks WHERE cl_to='Joueurs' order by cl_from DESC limit O, 1) ");

echo "<img src=http://www.afterfoot.com/wikifoot/images/joueurs/$sql.jpg></img><br>
<a href=http://afterfoot.com/wikifoot/index.php?title=$sql><u>$sql</u></a>"


mais ca marche pas plus.. il faut savoir que les champ "cl_from" de la table categorylinks et "page_id" de la table page ont les mêmes valeurs mais des noms différents.. du coup il ne retrouve pas de "cl_from" dans la table "page"
j'ai essayé de mettre $page_id = cl_from; avant mais ca marche pas ... :(

15 Avr 2007, 19:49

bin remplace direct dans la requete

SELECT page_title FROM page WHERE cl_from IN (SELECT page_id FROM categorylinks WHERE cl_to='Joueurs' order by cl_from DESC limit O, 3

puis t'as oublié une étape entre la tentative d'affichage et le résultat de la requete

genre

while($data = mysql_fetch_array($sql))
{
echo "<img src=http://www.afterfoot.com/wikifoot/images/joueurs/".$data[page_title].".jpg></img><br>
<a href=http://afterfoot.com/wikifoot/index.php?title=".$data[page_title]."><u>".$data[page_title]."</u></a>"
}

15 Avr 2007, 21:22

bon je suis vraiment navré loursin mais ton code de marche pas plus. j'ai rien... le problème de la requete jointe est que des champs qui ont la même valeur n'ont pas le même nom en fonction de l atable où ils se trouvent.

D'où mon tout premier code où je fais la première requete, puis la seconde avec comme parametre l'égalité entre les 2 champs "cl_from" et "page_id"

je craaaaaaaaaque :rocket:

15 Avr 2007, 21:28

tu parles de la requete ? tu peux pas la tester directement dans phpmyadmin ou un truc du style ?

d'ailleurs rajoute

or die('<br>'.$sql.'<br>'.mysql_error());

après le mysql_query histoire de voir si l'erreur vient de la requete ou de son traitement

(et a la limite, met ton code complet)

15 Avr 2007, 21:29

bin a priori c'est pas vraiment un probleme que le nom du champ change d'une table a l'autre... c'est meme tres habituel

15 Avr 2007, 21:36

ok merci pour le or die

j'ai un message d'erreur qui me dit
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'O , 1' at line 1


avec comme code :
Code:
   <?php
   
   //dernier joueur

   $sql = mysql_query("SELECT page_title FROM page WHERE cl_from IN (SELECT page_id FROM categorylinks WHERE cl_to= 'Joueurs' order by cl_timestamp DESC limit O , 1  ")or die('<br>'.$sql.'<br>'.mysql_error());

while($data = mysql_fetch_array($sql))
{
echo "<img src=http://www.afterfoot.com/wikifoot/images/joueurs/".$data[page_title].".jpg></img><br>
<a href=http://afterfoot.com/wikifoot/index.php?title=".$data[page_title]."><u>".$data[page_title]."</u></a>";
}

?>


ma version de mysql est la MySQL - 5.0.26-standard et je suis en php5 (pour mediawiki 1.9.3 c'est obligatoire)

15 Avr 2007, 21:38

bon bin vire le limit 0,1 deja pour voir :D

edit : ah bah non il manque une parenthese dans ta requete

$sql = mysql_query("SELECT page_title FROM page WHERE cl_from IN (SELECT page_id FROM categorylinks WHERE cl_to= 'Joueurs' order by cl_timestamp DESC limit O , 1 ) ")or die('<br>'.$sql.'<br>'.mysql_error());

15 Avr 2007, 21:46

bin non avant, je te l'ai mis en gras ;)

15 Avr 2007, 21:47

hey t'as viré ton message ! :lol:

15 Avr 2007, 21:47

ca y ets j'ai le fond du pb... :
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'


ca fait plaisir un tel message.. bon va faloir trouver une autre methode

15 Avr 2007, 21:54

humpf bizarre...

bon bin

SELECT p.page_title FROM page p ,categorylinks c WHERE c.cl_from=p.page_id order by p.page_id desc

puis tu afficheras que les 3 premiers

15 Avr 2007, 22:02

tu fais comment pour afficher les 3 premiers ? sinon ca marche.. merci beaucoup

juste pour info le p. de vant page_title, il sert à quoi ?

15 Avr 2007, 22:07

heu pas à grand chose effectivement dans ce cas précis mais j'ai l'habitude de toujours préfixer mes champs histoire d'y voir clair si je rajoute des trucs dans la requete par la suite... c'est un détail ;)

pour limiter aux 3 premiers... tu peux arreter ta boucle apres 3 passages par exemple avec un truc du style

$i = 3;
while (.... && $i>0)
{
...
...
$i--;
}

y'a peut-etre mieux... dommage que ton LIMIT veuille pas marcher

15 Avr 2007, 22:25

en fait si il fonctionne c'est le IN qui bloquait je pense.. du coup c'est comem ça que j'ai fait

tu peux voir le résultat (il me reste à formater les images afin qu'elles aient toutes la même dimension ce qui va pas être aisé étant donné la diversité des sources

15 Avr 2007, 22:31

tu peux toujours utiliser des <div> avec des dimensions fixes par exemple

15 Avr 2007, 22:33

oui c'es ce que j'ai fait mais bon vu la taille de mes images c'est pas génial... ca risque d'être la fête du pixel

15 Avr 2007, 22:35

:mrgreen: amuse toi bien ;)

16 Avr 2007, 21:29

j'ai un souci avec AZUREUS
je ne trouve pas de chanson de rap en francais.
quelqu'un connaitrait il un torrent qui pourrait m'aider???
merci

25 Avr 2007, 21:24

Je voudrais savoir si quelques uns d'entre vous ont des problèmes de surchauffe Freebox HD ces temps-ci avec les fortes chaleurs?
Du genre l'image qui zig zag ou qui passe en noir et blanc pour finir par un plantage complet necessitant un reboot après avoir laisser refroidire le boitier?
Sujet verrouillé