Les avertissements suivants se sont produits :
Warning [2] Undefined array key 0 - Line: 1640 - File: showthread.php PHP 8.2.18 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/showthread.php 1640 errorHandler->error_callback
/showthread.php 915 buildtree




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Resolu] Pb avec une requette SQL sur les tables du module news
#3
tu auras compris qu'il y a un sérieux soucis de performance avec ton système donc par habitude prend toujours soins de NE PAS faire de requêtes SQL dans une boucle.

alors comment qu'on fait ???

SQL (mysql / oracle / postgresql / ...) implémente un système de liaison inter-table que l'on appel l'Union et ca fait sa force (oui l'union fait la force c'est bien connu)

Je t'invites évidement à lire la documentation là dessus mais en synthétique pour ton cas présent... et sans avoir testé que dalle de mon côté ... je te proposerais ce code SQL

Attention : pour des soucis de lisibilité de code j'utilise les notions de pseudonyme de table

Citation :SELECT c.news_category_id, c.news_category_name, n.news_id, n.news_title, n.news_date, u.username, f1.value as champs5, f2.value as champs6
FROM
as1_module_news_categories c,
as1_module_news n
LEFT JOIN as1_module_news_fieldvals f1 ON f1.news_id = n.news_id
LEFT JOIN as1_module_news_fieldvals f2 ON f2.news_id = n.news_id,
as1_users u,
WHERE
c.parent_id = 7
AND f1.fielddef_id = 1
AND f2.fielddef_id = 3
AND c.news_category_id = n.news_category_id
AND u.username = n.author_id
ORDER BY
c.hierarchy ASC, n.news_date ASC

en rouge le principe d'Union qui sera sans doute à peaufiner pour intégrer les news n'ayant aucune info côté valeur complémentaire

pour mémoire, tes propres requêtes

Citation :SELECT news_category_id, news_category_name FROM as1_module_news_categories WHERE parent_id = 7 ORDER BY hierarchy
SELECT news_id, news_title, news_date, author_id FROM as1_module_news WHERE news_category_id = '$CodeCategory' ORDER BY news_date
SELECT username FROM as1_users WHERE user_id = '$CodeAuteur
SELECT fielddef_id, value FROM as1_module_news_fieldvals WHERE news_id = '$CodeNews' SORTED BY fielddef_id

Alors il y a aucune chance que ma requête fonctionne du premier coup hein ^^ mais tu peux y trouver une bonne source pour ensuite l'adapter à ton besoin et surtout supprimer un maximum de code et optimiser ton algo : 1 requête, certes plus complexe, qui renvois 50 lignes, et c'est tout !

Cette requête tu vas la lire, la comprendre et la tester dans un phpmyadmin avant de l'intégrer dans PHP. Si tu as un soucis, préviens moi, je ferrais ce que je peux pour la corriger Smile


Messages dans ce sujet

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)