Problème avec un WHILE :( [PHP] - Programmation
Marsh Posté le 12-06-2002 à 12:50:47
si le resultat de ta 1ere requete ne renvoie qu'une seule ligne tu n'est pas oblige de faire un while, tu mets directos $data = mysql_fetch_array($req);
Marsh Posté le 12-06-2002 à 12:51:21
Hello
Justement non, je suis obligé de faire un WHILE, car apres c un tableau qui est généré
Marsh Posté le 12-06-2002 à 12:52:13
ta requete est comme ca:
$sql = "SELECT * FROM forum_categories WHERE idforum='$id'";
donc si je suis pas trop con normalement idforum est unique => le resultat de ta requete ne renvoi donc qu'une ligne
Marsh Posté le 12-06-2002 à 12:53:30
J'ai aussi testé :
Code :
|
Et :
Code :
|
Aucun ne marche
Marsh Posté le 12-06-2002 à 12:54:12
tu n'as qu'à faire une jointure (une gauche je crois). tu auras l'id du forum, dateheure et lastposteur tous rangés dans le même tableau, id restant identique tant que tu es dans le même forum (voilà pour la détection des différents forum).
cherche left join (ou les join en général si c'est pas ça ).
Marsh Posté le 12-06-2002 à 12:54:29
kayasax a écrit a écrit : ta requete est comme ca: $sql = "SELECT * FROM forum_categories WHERE idforum='$id'"; donc si je suis pas trop con normalement idforum est unique => le resultat de ta requete ne renvoi donc qu'une ligne |
Je me suis peut mal exprimé
En gros, en fonction du nombre d'enregistrement dans le champ, y aura le meme nombre de lignes au tablo.
Par exemple, ya 6 categories, y aura 6 lignes au tableau
Marsh Posté le 12-06-2002 à 12:55:11
youdontcare a écrit a écrit : tu n'as qu'à faire une jointure (une gauche je crois). tu auras l'id du forum, dateheure et lastposteur tous rangés dans le même tableau, id restant identique tant que tu es dans le même forum (voilà pour la détection des différents forum). cherche left join (ou les join en général si c'est pas ça ). |
Oki, v aller me renseigner, merchi
Marsh Posté le 12-06-2002 à 12:58:13
Code :
|
a tester, je pense que ca devrai etre bon ceci dit, j'ai pas testé
Marsh Posté le 12-06-2002 à 13:00:26
Nop, ca marche po, ca m'affiche a chaque fois 4 fois le nom de la categorie
Marsh Posté le 12-06-2002 à 13:02:57
C en gros les memes que celle de ton forum
CREATE TABLE forum_categories (
id tinyint(4) NOT NULL auto_increment,
idforum tinyint(4) NOT NULL default '0',
nom varchar(50) NOT NULL default '',
totaltopics smallint(4) NOT NULL default '0',
totalposts smallint(4) NOT NULL default '0',
modérateur varchar(50) NOT NULL default '',
description varchar(255) NOT NULL default '',
KEY id (id)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Structure de la table `forum_topics`
#
CREATE TABLE forum_topics (
topic int(11) unsigned NOT NULL auto_increment,
idforum tinyint(4) NOT NULL default '0',
categorie tinyint(4) NOT NULL default '0',
icone int(11) default '1',
titre varchar(100) NOT NULL default '0',
auteur varchar(50) NOT NULL default '0',
replys int(11) unsigned NOT NULL default '0',
views int(11) unsigned NOT NULL default '0',
dateheure datetime NOT NULL default '0000-00-00 00:00:00',
lastauteur varchar(50) NOT NULL default '0',
close tinyint(5) NOT NULL default '0',
PRIMARY KEY (topic)
) TYPE=MyISAM;
Marsh Posté le 12-06-2002 à 13:05:07
oué l'ancien (ptin kes ke c crade )
bon deja il serait bcp + simple que tu recopie les champs dateheure et lastauteur dans forum_categories
d'une part ca eviterai une jointure, (qui est tjs + lourd et + lent) et donc ca allege le serveur
d'autres part tu as tout en 1 requete ...
pour la page principale, mon vrairum ne fait que 2 requetes pour tout avoir (posts, config ...)
Marsh Posté le 12-06-2002 à 13:06:10
CREATE TABLE forum_forums ( |
Marsh Posté le 12-06-2002 à 12:36:34
Hello a tous
Voila, g un probleme, je suis en train de faire un forum, et je suis coincé
Voila le code :
Comme vous pouvez le constater, la 2° requete est dans la boucle WHILE, ce qui a pour consequence de ralentir considérablement l'affichage
A votre avis, je peux trouver l'id de la categorie (categorie='$data[id]' sans mettre la 2° requete ds le WHILE ?
Je vous remercie