Demo

Probiere ClanSphere aus und teste daran herum. Demo


Antworten: 13
Seite [1]
zuma


Wannabe poster




Beiträge: 23
# Thema - 07.06.2012 um 23:51 Uhr
Hallo,

sitze gerade vor einem kleinen Problem

Ich wollte eine Liste machen wo ausgegeben wird welche News am häufigsten kommentiert wurden. Dieses würde ich in einem Top3 Ranking machen. Hat jemand eine Idee wie die SQL Abfrage aussehen könnte?

Vielen Dank für eure Hilfe.

Grüße
Inaktiv
hajo ClanSphere Team


VIP - Poster




Herkunft: Barsbüttel
Beiträge: 9411
# Antwort: 1 - 07.06.2012 um 23:57 Uhr
kommentare haben jeweils ein modul dabei, zu dem sie gehören. die foreign id (fid) sagt zudem aus, welcher news diese zugeordnet werden können. entsprechend ließe sich darüber mit nem zählvorgang und sortierung nach dessen resultat und bei bedarf einer verbindung auf die news tabelle das ziel erreichen.

wenns niemand anders hinbekommt seh ich mir das sonst mal an sofern zeit dafür da ist.


------------------
ClanSphere - professional clan care starts here

Inaktiv
|
Fr33z3m4n ClanSphere Team


Medal of Honor




Herkunft: Hamm
Beiträge: 11094
# Antwort: 2 - 08.06.2012 um 08:51 Uhr
SQL:
SELECT nws.news_id, (SELECT count(comments_id) FROM cs_comments WHERE comments_mod = 'news' AND comments_fid = nws.news_id) count
FROM cs_news nws
ORDER by count DESC
LIMIT 0,3

CSP-Code
 
1.
2.
3.
4.
5.
1. / 2. / ... 
 
$tables 
"news nws";
$select "nws.news_id, (SELECT count(comments_id) FROM cs_comments WHERE comments_mod = 'news' AND comments_fid = nws.news_id) count";
$order "ORDER by count DESC";
cs_sql_select(__FILE__,$tables$select0$order03);


SQL ist getestest, nur der PHP Code nicht, sollte aber passen.


------------------
mfg
Patrick "Fr33z3m4n" Jaskulski

Antoine de Saint-Exupéry: Wenn Du ein Schiff bauen willst, so trommle nicht Männer zusammen, um Holz zu beschaffen, Aufgaben zu verteilen, sondern lehre die Männer die Sehnsucht nach dem endlosen weiten Meer.

Zuletzt editiert von Fr33z3m4n ClanSphere Team am 08.06.2012 um 08:52 Uhr (1x Editiert)
Inaktiv
|
zuma
Thread-Ersteller


Wannabe poster




Beiträge: 23
# Antwort: 3 - 08.06.2012 um 21:06 Uhr
vielen vielen vielen vielen Dank! Ich werde den gleich heute Abend ausprobieren!

Edit Habe es leider nihcht hinbekommen. er gibt mir lediglich irgendwelche News aus welche aber nicht die meisten comments haben

Hab nochmal den Code in den Anhang gepackt. Nur die ABfrage ist da drin

 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
1. / 2. / ... 
 

$join 
'news nws INNER JOIN {pre}_categories cat ON nws.categories_id = cat.categories_id';
$news_count cs_sql_count(__FILE__$join$where'news_id');
$data['head']['pages'] = cs_pages('news''recent'$news_count$start$cat_id0,4);

$from 'news nws INNER JOIN {pre}_users usr ON nws.users_id = usr.users_id ';
$from .= 'INNER JOIN {pre}_categories cat ON nws.categories_id = cat.categories_id';
$select 'nws.news_id AS news_id, nws.news_headline AS news_headline, nws.news_time AS news_time, nws.news_text AS news_text,';
$select .= 'nws.news_myspace AS news_myspace, nws.news_pictures AS news_pictures, nws.users_id AS users_id, usr.users_nick AS users_nick, usr.users_active AS users_active, usr.users_delete AS users_delete, nws.categories_id AS ';
$select .= 'categories_id, cat.categories_picture AS categories_picture, cat.categories_name AS categories_name, nws.news_mirror AS news_mirror, nws.news_mirror_name AS news_mirror_name, nws.news_readmore AS news_readmore, nws.news_readmore_active AS news_readmore_active';
$order 'news_attached DESC, news_time DESC';
$cs_news cs_sql_select(__FILE__$from$select$where$order$start4);

if(
$cs_option['max_recent'] == '1') {
  
$anews = array();
  
array_push($anews,$cs_news);
  unset(
$cs_news);
  
$cs_news $anews;
  
$news_loop 1;
}
else {
  
$news_loop count($cs_news);
}


Zuletzt editiert von zuma am 09.06.2012 um 11:22 Uhr (2x Editiert)
Inaktiv
|
zuma
Thread-Ersteller


Wannabe poster




Beiträge: 23
# Antwort: 4 - 10.06.2012 um 12:17 Uhr
Hab die halbe nacht versucht das hinzubekommen. Bekomme immer nur die template datei ausgegeben


Inaktiv
|
Fr33z3m4n ClanSphere Team


Medal of Honor




Herkunft: Hamm
Beiträge: 11094
# Antwort: 5 - 11.06.2012 um 08:23 Uhr
Dein Quellcode weist aber nirgends meinen SQL auf.


------------------
mfg
Patrick "Fr33z3m4n" Jaskulski

Antoine de Saint-Exupéry: Wenn Du ein Schiff bauen willst, so trommle nicht Männer zusammen, um Holz zu beschaffen, Aufgaben zu verteilen, sondern lehre die Männer die Sehnsucht nach dem endlosen weiten Meer.

Inaktiv
|
zuma
Thread-Ersteller


Wannabe poster




Beiträge: 23
# Antwort: 6 - 11.06.2012 um 17:58 Uhr
habe den code für die zeilen sieben bis 13 einfach ersetzt


Inaktiv
|
Fr33z3m4n ClanSphere Team


Medal of Honor




Herkunft: Hamm
Beiträge: 11094
# Antwort: 7 - 12.06.2012 um 08:01 Uhr
Für den eigentlichen SQL-Code bitte mal per PHPmyadmin aus, und schau, welche News er dann ausgibt.


------------------
mfg
Patrick "Fr33z3m4n" Jaskulski

Antoine de Saint-Exupéry: Wenn Du ein Schiff bauen willst, so trommle nicht Männer zusammen, um Holz zu beschaffen, Aufgaben zu verteilen, sondern lehre die Männer die Sehnsucht nach dem endlosen weiten Meer.

Inaktiv
|
zuma
Thread-Ersteller


Wannabe poster




Beiträge: 23
# Antwort: 8 - 12.06.2012 um 18:25 Uhr
So habe mir das gerade mal angeschaut. Der SQl Befehl ist richtig (siehe Bild im Anhang)



Jedoch bekomme ich bei der Ausgabe über das CMS nur die templatedatei einmal ausgegeben. Also mit Platzhaltern. Hier der Code den ich verwende:

 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
1. / 2. / ... 
 
$join 
'news nws INNER JOIN {pre}_categories cat ON nws.categories_id = cat.categories_id';
$news_count cs_sql_count(__FILE__$join$where'news_id');
$data['head']['pages'] = cs_pages('news''recent'$news_count$start$cat_id0,4);

$tables "news nws";
$select "nws.news_id, (SELECT count(comments_id) FROM cs_comments WHERE comments_mod = 'news' AND comments_fid = nws.news_id) count";
$order "ORDER by count DESC";
$cs_news cs_sql_select(__FILE__,$tables$select0$order03);


if(
$cs_option['max_recent'] == '1') {
  
$anews = array();
  
array_push($anews,$cs_news);
  unset(
$cs_news);
  
$cs_news $anews;
  
$news_loop 1;
}
else {
  
$news_loop count($cs_news);
}

for(
$run 0$run $news_loop$run++) {
  
$cs_news[$run]['news_headline'] = cs_secure($cs_news[$run]['news_headline']);
  
$cs_news[$run]['news_myspace'] = cs_secure($cs_news[$run]['news_myspace']);
  
$cs_news[$run]['news_time'] = cs_date('unix'$cs_news[$run]['news_time'], 1);
  
$figures 190;
  
$short strlen($cs_news[$run]['news_text']) <= $figures $cs_news[$run]['news_text'] : substr($cs_news[$run]['news_text'],0,$figures) . '...';
  
$cs_news[$run]['news_text'] = cs_secure($short$abcode[0], $abcode[1], $abcode[2], $abcode[3], $abcode[4]);


Inaktiv
|
Fr33z3m4n ClanSphere Team


Medal of Honor




Herkunft: Hamm
Beiträge: 11094
# Antwort: 9 - 13.06.2012 um 07:59 Uhr
ruf die Seite mit der Fehlerdiagnose mal auf.

anstatt index.php nimmst du mal die debug.php.
Im Kopfbereich sollte dann ggf. ein Fehler in roter Schrift stehen.

http://wiki.clansphere.de/Fehlerdiagnose


------------------
mfg
Patrick "Fr33z3m4n" Jaskulski

Antoine de Saint-Exupéry: Wenn Du ein Schiff bauen willst, so trommle nicht Männer zusammen, um Holz zu beschaffen, Aufgaben zu verteilen, sondern lehre die Männer die Sehnsucht nach dem endlosen weiten Meer.

Inaktiv
|
zuma
Thread-Ersteller


Wannabe poster




Beiträge: 23
# Antwort: 10 - 15.06.2012 um 21:05 Uhr
Hier einmal die Meldungen die ich bekomme:

 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
1. / 2. / ... 
 
PHP
-WarningNoticeUndefined indexnews_myspace in E:\xampp\htdocs\web\mods\news\most_comments.php on line 57

PHP
-WarningNoticeUndefined indexnews_time in E:\xampp\htdocs\web\mods\news\most_comments.php on line 58

PHP
-WarningNoticeUndefined indexnews_text in E:\xampp\htdocs\web\mods\news\most_comments.php on line 60

PHP
-WarningNoticeUndefined indexnews_text in E:\xampp\htdocs\web\mods\news\most_comments.php on line 60

PHP
-WarningNoticeUndefined indexusers_nick in E:\xampp\htdocs\web\mods\news\most_comments.php on line 64

PHP
-WarningNoticeUndefined indexusers_id in E:\xampp\htdocs\web\mods\news\most_comments.php on line 65

PHP
-WarningNoticeUndefined indexusers_nick in E:\xampp\htdocs\web\mods\news\most_comments.php on line 65

PHP
-WarningNoticeUndefined indexusers_active in E:\xampp\htdocs\web\mods\news\most_comments.php on line 65

PHP
-WarningNoticeUndefined indexusers_delete in E:\xampp\htdocs\web\mods\news\most_comments.php on line 65

PHP
-WarningNoticeUndefined indexnews_id in E:\xampp\htdocs\web\mods\news\most_comments.php on line 66

PHP
-WarningNoticeUndefined indexnews_id in E:\xampp\htdocs\web\mods\news\most_comments.php on line 70

PHP
-WarningNoticeUndefined indexnews_id in E:\xampp\htdocs\web\mods\news\most_comments.php on line 71

PHP
-WarningNoticeUndefined indexcategories_name in E:\xampp\htdocs\web\mods\news\most_comments.php on line 72


 
1.
2.
3.
1. / 2. / ... 
 E:\xampp\htdocs\web\mods\news\most_comments.php
40
SELECT categories_namecategories_id FROM cs_categories WHERE categories_mod 'news' AND categories_access <= 5 ORDER BY categories_name
41
SELECT COUNT(DISTINCT news_idFROM cs_news nws INNER JOIN cs_categories cat ON nws.categories_id cat.categories_id WHERE nws.news_public AND cat.categories_access <= 5


 
1.
2.
3.
1. / 2. / ... 
 E:\\xampp\\htdocs\\web\\mods\\news\\most_comments.php
40
SELECT categories_namecategories_id FROM cs_categories WHERE categories_mod 'news' AND categories_access <= 5 ORDER BY categories_name
41
SELECT COUNT(DISTINCT news_idFROM cs_news nws INNER JOIN cs_categories cat ON nws.categories_id cat.categories_id WHERE nws.news_public AND cat.categories_access <= 5


Habe noch einmal meine PHP Datei angefügt.

 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
1. / 2. / ... 
 // ClanSphere 2009 - www.clansphere.net
// $Id: recent.php 3284 2009-06-15 14:01:52Z duRiel $



$cs_lang cs_translate('news');
$data = array();
$cs_post cs_post('where');
$cs_get cs_get('where');


$cat_id = empty($cs_get['where']) ? $cs_get['where'];
if (!empty(
$cs_post['where']))  $cat_id $cs_post['where'];

$cs_option cs_sql_option(__FILE__'news');
$abcode explode(","$cs_option['abcode']);

$where "nws.news_public = 1 AND cat.categories_access <= " $account['access_news'];
if(!empty(
$cat_id)) {
  
$where .= " AND cat.categories_id = '" $cat_id "'";
}

$start = empty($_REQUEST['start']) ? : (int)$_REQUEST['start'];

$newsmod "categories_mod = 'news' AND categories_access <= " $account['access_news'];
$data['cats'] = cs_sql_select(__FILE__'categories''categories_name, categories_id'$newsmod'categories_name'00);
$count_cats count($data['cats']);
for (
$i 0$i $count_cats$i++) {
  
$data['cats'][$i]['categories_name'] = cs_secure($data['cats'][$i]['categories_name']);
  
$data['cats'][$i]['if']['selected'] = $data['cats'][$i]['categories_id'] == $cat_id true false;
}

$join 'news nws INNER JOIN {pre}_categories cat ON nws.categories_id = cat.categories_id';
$news_count cs_sql_count(__FILE__$join$where'news_id');
$data['head']['pages'] = cs_pages('news''recent'$news_count$start$cat_id0,4);

$tables "news nws";
$select "nws.news_id, (SELECT count(comments_id) FROM cs_comments WHERE comments_mod = 'news' AND comments_fid = nws.news_id) count";
$order "ORDER by count DESC";
$cs_news cs_sql_select(__FILE__,$tables$select0$order03);


if(
$cs_option['max_recent'] == '1') {
  
$anews = array();
  
array_push($anews,$cs_news);
  unset(
$cs_news);
  
$cs_news $anews;
  
$news_loop 1;
}
else {
  
$news_loop count($cs_news);
}

for(
$run 0$run $news_loop$run++) {
  
$cs_news[$run]['news_headline'] = cs_secure($cs_news[$run]['news_headline']);
  
$cs_news[$run]['news_myspace'] = cs_secure($cs_news[$run]['news_myspace']);
  
$cs_news[$run]['news_time'] = cs_date('unix'$cs_news[$run]['news_time'], 1);
  
$figures 190;
  
$short strlen($cs_news[$run]['news_text']) <= $figures $cs_news[$run]['news_text'] : substr($cs_news[$run]['news_text'],0,$figures) . '...';
  
$cs_news[$run]['news_text'] = cs_secure($short$abcode[0], $abcode[1], $abcode[2], $abcode[3], $abcode[4]);


  
$cs_user cs_secure($cs_news[$run]['users_nick']);
  
$cs_news[$run]['users_link'] = cs_user($cs_news[$run]['users_id'],$cs_news[$run]['users_nick'], $cs_news[$run]['users_active'], $cs_news[$run]['users_delete']);
  
$where3 "comments_mod = 'news' AND comments_fid = " $cs_news[$run]['news_id'];
  
$cs_news[$run]['comments_count'] = cs_sql_count(__FILE__'comments'$where3);
  
$start floor($cs_news[$run]['comments_count'] / ($account['users_limit'] + 1)) * $account['users_limit'];
  
$cs_news_com_count $cs_news[$run]['comments_count'] - $start;
  
$cs_news[$run]['comments_link'] = cs_link(cs_html_img('templates/teameq/images/buttons/readmore.png'), 'news''view''id=' $cs_news[$run]['news_id']);
  
$cs_news[$run]['fb_link'] = $cs_news[$run]['news_id'];
  
$cs_news[$run]['categories_name'] = cs_secure($cs_news[$run]['categories_name']);


  
$cs_news[$run]['if']['catimg'] = empty($cs_news[$run]['categories_picture']) ? false true;
  
$cs_news[$run]['url_catimg'] = empty($cs_news[$run]['if']['catimg']) ? '' 'uploads/categories/' $cs_news[$run]['categories_picture'];

  
$cs_news[$run]['pictures'] = '';
  if(!empty(
$cs_news[$run]['news_pictures'])) {
    
$news_pics explode("\n"$cs_news[$run]['news_pictures']);
    
$cs_news[$run]['pictures'] .= cs_html_br(2);
    foreach (
$news_pics as $pic) {
    
$link cs_html_img('uploads/news/thumb-' $pic);
        
$path $cs_main['php_self']['dirname'];
    
$cs_news[$run]['pictures'] .= cs_html_link($path 'uploads/news/picture-' $pic$link) . ' ';
    }
  }

  
$cs_news[$run]['if']['show'] = false;

  if(!empty(
$cs_news[$run]['news_mirror'])) {
    
$cs_news[$run]['if']['show'] = true;

    
$temp_mirror explode("\n"$cs_news[$run]['news_mirror']);
  
$temp_mirror_name explode("\n"$cs_news[$run]['news_mirror_name']);

  
$tpl_run 0;
  for(
$run_mirror=1$run_mirror count($temp_mirror); $run_mirror++) {
    
$num $run_mirror;

    if(
$run_mirror == (count($temp_mirror) - 1)) {
        
$cs_news[$run]['mirror'][$tpl_run]['dot'] =  '';
    }
    elseif(!empty(
$run_mirror)) {
      
$cs_news[$run]['mirror'][$tpl_run]['dot'] =  ' - ';
    }
    else {
      
$cs_news[$run]['mirror'][$tpl_run]['dot'] =  ' - ';
    }
    
$url strpos($temp_mirror[$run_mirror],'://') === false 'http://' $temp_mirror[$run_mirror] : $temp_mirror[$run_mirror];
    
$cs_news[$run]['mirror'][$tpl_run]['news_mirror'] = cs_html_link($url,$temp_mirror_name[$run_mirror]);
    
$tpl_run++;
  }
  }
}

$data['news'] = $cs_news;
echo 
cs_subtemplate(__FILE__$data'news''recent');
?>



Edit: habe noch das dazu gefunden

 
1.
2.
1. / 2. / ... 
 ErrorE:\xampp\htdocs\web\mods\news\most_comments.php -> cs_sql_select You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER by count DESC LIMIT 0,3' at line 1
Error
E:\xampp\htdocs\web\mods\news\most_comments.php -> cs_sql_count You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


Zuletzt editiert von zuma am 15.06.2012 um 21:06 Uhr (1x Editiert)
Inaktiv
|
Fr33z3m4n ClanSphere Team


Medal of Honor




Herkunft: Hamm
Beiträge: 11094
# Antwort: 11 - 16.06.2012 um 08:15 Uhr
 
1.
1. / 2. / ... 
 $select "nws.news_id, (SELECT count(comments_id) FROM cs_comments WHERE comments_mod = 'news' AND comments_fid = nws.news_id) count";

ersetzen durch
 
1.
2.
3.
4.
5.
1. / 2. / ... 
 
$select 
"nws.news_id, (SELECT count(comments_id) FROM cs_comments WHERE comments_mod = 'news' AND comments_fid = nws.news_id) count, ";
$select .= 'nws.news_id AS news_id, nws.news_headline AS news_headline, nws.news_time AS news_time, nws.news_text AS news_text,';
$select .= 'nws.news_myspace AS news_myspace, nws.news_pictures AS news_pictures, nws.users_id AS users_id, usr.users_nick AS users_nick, usr.users_active AS users_active, usr.users_delete AS users_delete, nws.categories_id AS ';
$select .= 'categories_id, cat.categories_picture AS categories_picture, cat.categories_name AS categories_name, nws.news_mirror AS news_mirror, nws.news_mirror_name AS news_mirror_name, nws.news_readmore AS news_readmore, nws.news_readmore_active AS news_readmore_active';



------------------
mfg
Patrick "Fr33z3m4n" Jaskulski

Antoine de Saint-Exupéry: Wenn Du ein Schiff bauen willst, so trommle nicht Männer zusammen, um Holz zu beschaffen, Aufgaben zu verteilen, sondern lehre die Männer die Sehnsucht nach dem endlosen weiten Meer.

Inaktiv
|
zuma
Thread-Ersteller


Wannabe poster




Beiträge: 23
# Antwort: 12 - 19.06.2012 um 17:58 Uhr
immernoch das gleiche problem.

habe dir eine PN geschrieben


Zuletzt editiert von zuma am 20.06.2012 um 08:56 Uhr (1x Editiert)
Inaktiv
|
Fr33z3m4n ClanSphere Team


Medal of Honor




Herkunft: Hamm
Beiträge: 11094
# Antwort: 13 - 07.07.2012 um 10:43 Uhr
Anbei die korrigierte Datei.
Dateianhänge:
php most_comments.php (6.21 KiB - 11 mal heruntergeladen )


------------------
mfg
Patrick "Fr33z3m4n" Jaskulski

Antoine de Saint-Exupéry: Wenn Du ein Schiff bauen willst, so trommle nicht Männer zusammen, um Holz zu beschaffen, Aufgaben zu verteilen, sondern lehre die Männer die Sehnsucht nach dem endlosen weiten Meer.

Inaktiv
|
Antworten: 13
Seite [1]


Sie müssen sich registrieren, um zu antworten.