sql frage für block snippet
Eingetragen von Sofo (72)
am 25.04.2007 - 12:23 Uhr in
am 25.04.2007 - 12:23 Uhr in
hallo,
dieser code zeigt mir im block jeweils die relevatnten nodes zu den entsprechenden terms an. der block wird jeweils bei den node/* angezeigt
$sql = "SELECT n.title, n.created, n.nid FROM {node} n INNER JOIN {term_node} tn ON n.nid = tn.nid WHERE tn.tid = $term->tid AND n.nid != $nid ORDER BY n.created DESC LIMIT 3";
nun möchte ich den sql" erweitern um die verweise anhand der tabelle {node_counter} (totalcount) zu ordnen und nicht nur nach dem datum (n.created) , habe meine probleme mit den SELECT FROM INNER JOIN WHERE anwiesungen
das ganze php snippet
<?php
if (arg(0) == 'node' && is_numeric(arg(1)) && is_null(arg(2))) {
$nid = (int)arg(1);
$terms = taxonomy_node_get_terms($nid);
foreach($terms as $term){
$sql = "SELECT n.title, n.created, n.nid FROM {node} n INNER JOIN {term_node} tn ON n.nid = tn.nid WHERE tn.tid = $term->tid AND n.nid != $nid ORDER BY n.created DESC LIMIT 3";
$result = db_query(db_rewrite_sql($sql));
if (db_num_rows($result)) {
$output .="<h3> Rubrik - ".$term->name."</h3></li><ul class=\"menu\">";
while ($anode = db_fetch_object($result)) {
$output .= "<li class=\"leaf\">".l($anode->title, "node/$anode->nid")."</li>";
}
$output.="</ul>";
}
}
return $output;
}
?>
hier noch ein beispiel um die meistgezählten node anzuzeigen
$result = db_query_range("SELECT n.title, n.nid, nc.nid, nc.totalcount
FROM node n, node_counter nc
WHERE n.status = 1 and n.nid = nc.nid
ORDER BY nc.totalcount
DESC ", 0, 10);
while ($node = db_fetch_object($result)) {
$output[] = l($node->title, "node/$node->nid") . " ($node->totalcount views) -- Created " . format_date($node->created, 'custom', 'F j, Y, g:i a');
}
return theme('item_list', $output)
hoffe ich habe die frage verständlich gestellt.
besten dank.
http://wireltern.eu
beispiel - Relevante Artikel Block - zeigt nach terms Schule Deutschland deutsch
http://wireltern.eu/index.php?q=node/841
- Anmelden oder Registrieren um Kommentare zu schreiben
block relevatnte links nach therm und totalcount sortiert
am 26.04.2007 - 14:39 Uhr
hallo bis jetzt scheind dies zu funktionieren (keine ahnung weshalb so spielte es zb eine rolle welche reienfolge die select's haben und welche from.. tabelle zuerst aufgeführt wird.)
ich habe 3 terms pro story und versuche jetzt zu vermeiden das unter den 3 auflistungen dieselben verweise angezeigt werden)
<?php
if (arg(0) == 'node' && is_numeric(arg(1)) && is_null(arg(2))) {
$nid = (int)arg(1);
$terms = taxonomy_node_get_terms($nid);
$output = "<ul class=\"menu\">";
foreach($terms as $term){
$sql = "SELECT nc.nid, nc.totalcount, n.title, n.created, n.nid FROM node_counter nc, node n INNER JOIN {term_node} tn ON n.nid = tn.nid WHERE tn.tid = $term->tid AND n.nid != $nid AND nc.nid=n.nid ORDER BY nc.totalcount DESC LIMIT 3";
$result = db_query(db_rewrite_sql($sql));
if (db_num_rows($result)) {
$output .="<li class=\"expanded\">$term->name</li><ul>";
while ($anode = db_fetch_object($result)) {
$output .= "<li class=\"leaf\">".l($anode->title, "node/$anode->nid")."</li>";
}
$output.="</ul>";
}
}
$output .= "</ul>";
return $output;
}
?>
danke,
mfg sofo
lg sofo
Frutigen Schützenverein