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
#12
prend l'habitude d'entourer ton code des balises [ code ] ou [ quote ] dans le forum afin d'aider à lire Wink

pour la gestion des erreurs tu t'emmerdes pas, fait simple :

Citation :global $gCms; //pour pouvoir travailler avec les objets, classes et méthodes du cms
$db = &$gCms->GetDb(); //connection à la bd cms, recherche de la catégorie Travail et de sa filiation
$query =" SELECT COUNT(*) as Compteur
FROM as1_module_news n
LEFT JOIN as1_module_news_categories c ON c.news_category_id = n.news_category_id
WHERE
c.parent_id = 7
ORDER BY
c.hierarchy ASC, n.news_date ASC";
$compteur= $db->getOne($query);
if($compteur=== false) { echo "Erreur lors du comptage des lignes";exit();}
echo "il y a ".$compteur." résultats en base";

Citation :query = "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 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
LEFT JOIN as1_module_news_categories c ON c.news_category_id = n.news_category_id
LEFT JOIN as1_users u ON u.user_id = n.author_id
WHERE
c.parent_id = 7
AND (f1.fielddef_id = 1 OR f1.fielddef_id is null)
AND (f2.fielddef_id = 3 OR f2.fielddef_id is null)
ORDER BY
c.hierarchy ASC, n.news_date ASC";
$dbretour = &$db->Execute($query);//exécution de la requête
if($dbretour === false) { echo "Erreur lors de la remontée des données";exit();}

while ($row = $dbretour->FetchRow())
{
echo <<<REQUETE
<tr>
<td class="leftcol">{$row['news_category_name']}</td>
<td class="datadesc">{$row['news_title']}</td>
<td class="data">{$row['news_date']}</td>
<td class="data">{$row['username']}</td>
<td class="data">{$row['Champs5']}</td>
<td class="data">{$row['Champs6']}</td>
</tr>
REQUETE;
}
if ($dbretour) $dbretour->Close();//Toutes les news de toutes les catégories sont lues, on ferme la connection
echo "</table>";

En vert : la gestion simplifiée des erreurs : ca évite de tracer à la vue de tous les erreurs SQL bien trop souvent source d'exploitation de failles de sécu type SQL-injection car elles affichent par exemple les noms des tables, pas bon)
En rouge : pas bon ou pas utile : à supprimer
En bleu : corrections !


Messages dans ce sujet

Atteindre :


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