Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Forum » MountainGrafix » Agentur für visuelle Kommunikation in Reutte. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

Samstag, 17. September 2011, 03:45

Neue Sortierfunktion

Hallo,

mit dieser Funktion kann ich filtern das nur Einträge mit bestimmten PageRank angezeigt werden:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if(isset($_GET['pr'])) {
switch($_GET['pr']) {
case "0":
$pr '0';
break;
case "1":
$pr '1';
break;
case '2':
$pr '2';
break;
case '3':
$pr '3';
break;
case '4':
$pr '4';
break;
}
}


Nun möchte ich die angezeigten Einträge noch zusätzlich sortieren z.B. nach klicks, Bewertung usw. :

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
if(isset($_GET['sort'])) {
    switch($_GET['sort']) {
    case "1":
        $sort 'avg_points ASC';
        break;
    case "2":
        $sort 'name ASC';
        break;
    case '3':
        $sort 'clicks DESC';
        break;   
} 
}


Einzeln funktioniert es nur leider nicht beides zusammen.
Ich kann leider entweder die Seiten nur nach PageRank filtern oder nur nach klicks, Bewertung , usw. sortieren.

Kann man es irgendwie kombinieren damit beides zusammen funktioniert ???
Habe über Google und Co leider keine Lösung gefunden gefunden.

Grüße
Joe
easyLink 2.3.0 - Erotik-Verzeichnis

2

Samstag, 17. September 2011, 07:56

Wie sieht denn die Datenbank-Abfrage dazu aus?
if ($ahnung == NULL) { read FAQ; use SEARCH; use GOOGLE; } else { use brain; make post; }

3

Samstag, 17. September 2011, 12:11

Das ist die aus in der show_cat.php :

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// ****** GET LINKS ******
// ***********************
$result $db->query("
SELECT 
l.link_id, l.name, l.url, l.backlink_url, l.description, l.link_type, l.image, l.date_entry, l.clicks, l.pagerank, l.land, 
SUM(v.points) /( COUNT(v.link_id)+0.0000001) AS avg_points, 
COUNT(v.link_id) AS votes 
FROM " TABLE_PREFIX "links AS l 
LEFT JOIN " TABLE_PREFIX "votes AS v ON (l.link_id = v.link_id) 
WHERE l.parent_cat_id = " $this_cat['cat_id'] . " 
AND (l.link_type = 1 OR l.link_type = 2 OR l.link_type = 3 OR l.link_type = 4)
    ".$pr."
AND activated = 1 
AND deactivated = 0 
GROUP BY l.link_id 
ORDER BY l.link_type DESC, " $sort " 
LIMIT " $start ", " $core->options['pagelink']
);

while ($row $db->fetch_array($result)) {
get_link_template($row);
}


Habe doch mal, mit deiner und Marcels Hilfe, eine "Sortierfunktion für Besucher" erstellt die ich jetzt erweitern möchte.
In dem Verzeichnis das ich gerade erstelle soll man die Möglichkeit haben sich z.B. nur Einträge/Seiten mit PR 4 anzeigen zu lassen und dann noch zusätzlich sortieren können nach Klicks, Bewertung , usw.

Wie gesagt beides funktioniert aber nicht zusammen, das eine hebt das andere auf.

Habe gehofft das man die 2x switch irgendwie miteinander verknüpfen kann.

easyLink 2.3.0 - Erotik-Verzeichnis

4

Samstag, 17. September 2011, 13:54

Und das funktioniert so? ich kann es mir zumindest nicht vorstellen, denn wenn wir beispielsweise mal den Wert für PR 5 setzen, dann würde die Abfrage ja so aussehen:

MySQL-Abfrage(n)

1
AND (l.link_type = 1 OR l.link_type = 2 OR l.link_type = 3 OR l.link_type = 4) 5

Da kann jedenfalls schon einmal nicht klappen, denn es muss ja die Spalte einbezogen werden in der der PR gespeichert ist...also so ähnlich:

MySQL-Abfrage(n)

1
AND (l.link_type = 1 OR l.link_type = 2 OR l.link_type = 3 OR l.link_type = 4) AND SPALTE_FUER_PR = 5
if ($ahnung == NULL) { read FAQ; use SEARCH; use GOOGLE; } else { use brain; make post; }

5

Samstag, 17. September 2011, 14:20

Die wird ja übergeben:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
...
if(isset($_GET['pr'])) {
switch($_GET['pr']) {
case "0":
$pr 'AND pagerank = 0';
break;
case "1":
$pr 'AND pagerank = 1';
break;
case "2":
$pr 'AND pagerank = 2';
break;

}
};
...


Nach

MySQL-Abfrage(n)

1
2
AND (l.link_type = 1 OR l.link_type = 2 OR l.link_type = 3 OR l.link_type = 4)
".$pr."


kommt je nach dem was ich per Link auswähle dann z.B.

MySQL-Abfrage(n)

1
AND pagerank = 1
easyLink 2.3.0 - Erotik-Verzeichnis

6

Sonntag, 18. September 2011, 09:01

Ok...wir müssen hier aber zunächst 2 Dinge trennen, denn auf der einen Seite führen wir eine Filterung durch und auf der anderen Seite eine Sortierung und von daher sollte die Query vom Ansatz her schon einmal richtig sein. Wo genau liegt denn das Problem? Sprich...wo verhält sich das Script nicht wie erwartet bzw. gewünscht?
if ($ahnung == NULL) { read FAQ; use SEARCH; use GOOGLE; } else { use brain; make post; }

7

Sonntag, 18. September 2011, 12:55

Die Filterung und die Sortierung funktionieren nicht gleichzeitig.

Also wenn ich z.B. nur Links mit PR 2 sehen will funktioniert es wunderbar.
Möchte ich aber die gefilterten Links jetzt nach Klicks sortieren, dann wird die Filterung wieder aufgehoben.
Es werden wieder alle Links sortiert.
easyLink 2.3.0 - Erotik-Verzeichnis

8

Sonntag, 18. September 2011, 18:13

Habe zwar das Problem gefunden aber nicht die Lösung.

Wenn ich die URL aufrufe ohne ModRewrite und die Parameter per Hand ändere funktioniert es einwandfrei, nur mit ModRewrite nicht.
Z.B.: http://meine-domain.de/show_cat.php?catID=16&page=1&sort=1&pr=2

Da ich die ModRewrite Funktion nutze sehen die Sortierlinks bisher bei mir so aus :

Quellcode

1
2
3
4
5
6
7
...
$CategoryLink = Rewrite::getLinkCategory($sub_cats[$subcat_active]['cat_id'], 1, $_GET['sort']);

$CategorySortLinkBewertung = Rewrite::getLinkCategory($this_cat['cat_id'], 1, 1);
$CategorySortLinkAlphabet = Rewrite::getLinkCategory($this_cat['cat_id'], 1, 2);
....
usw ...

Ich muss die bisherigen Sortierlinks anpassen und noch welche für die Pagerank-Filterung erstellen, nur wie?
Wie kriege ich das $_GET['pr']) noch da mit rein damit die Links richtig funktionieren?
Oder gibt es eine andere Möglichkeit?
easyLink 2.3.0 - Erotik-Verzeichnis

9

Montag, 19. September 2011, 09:49

Im Prinzip haben Sie die Lösung doch schon selbst erkannt, denn in diesem Fall wird er notwendig sein die Methode Rewrite::getLinkCategory() so zu erweitern, dass die neuen Parameter ebenfalls von dieser Methode berücksichtigt werden. Im 2. Schritt wird man auch dann sicherlich noch die Blätterfunktion entsprechend anpassen müssen, denn auch die kennt ja die neuen Parameter bisher nicht.
if ($ahnung == NULL) { read FAQ; use SEARCH; use GOOGLE; } else { use brain; make post; }

10

Freitag, 14. Oktober 2011, 12:34

Die wird ja übergeben:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
...
if(isset($_GET['pr'])) {
switch($_GET['pr']) {
case "0":
$pr 'AND pagerank = 0';
break;
case "1":
$pr 'AND pagerank = 1';
break;
case "2":
$pr 'AND pagerank = 2';
break;

}
};
...


Nach

MySQL-Abfrage(n)

1
2
AND (l.link_type = 1 OR l.link_type = 2 OR l.link_type = 3 OR l.link_type = 4)
".$pr."


kommt je nach dem was ich per Link auswähle dann z.B.

MySQL-Abfrage(n)

1
AND pagerank = 1

Es funktioniert soweit alles nur die Blätterfunktion zeigt immer eine (leere) Seite mehr. Wenn ich in beiden Querys z.B. 'AND pagerank = 1' eingebe funktioniert die Blätterfunktion auch einwandfrei.

Wie kann ich an beide beiden Querys gleichzeitig den gleichen Parameter (z.B. 'AND pagerank = 1') übergeben?

Mit switch und case? Aber wie?

Grüße
Joe
easyLink 2.3.0 - Erotik-Verzeichnis

11

Sonntag, 16. Oktober 2011, 17:51

Im Prinzip haben Sie die Lösung doch schon selbst erkannt, denn in diesem Fall wird er notwendig sein die Methode Rewrite::getLinkCategory() so zu erweitern, dass die neuen Parameter ebenfalls von dieser Methode berücksichtigt werden. Im 2. Schritt wird man auch dann sicherlich noch die Blätterfunktion entsprechend anpassen müssen, denn auch die kennt ja die neuen Parameter bisher nicht.

Das mit den neuen Parameter habe ich soweit im Griff.

Eigentlich soll es eine Filter und Sortierfunktion werden, es funktioniert auch soweit alles. Damit ich es besser erklären kann was mein Problem ist lasse ich die Sortierfunktion mal weg.

Es geht also nur um die Filterfunktion. Der User soll die Möglichkeit haben gezielt auszuwählen welche Links er sehen möchte.
Zum Beispiel nur Links mit Pagerank 4.

Übergabe:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
...
// ****** Link - Filter *****
// ******************************
if (isset($_GET['sort']) && $_GET['sort'] != '') {
   switch ($_GET['sort']) {
   case '0'$pr '';
      break;
case '1'$pr 'AND pagerank = 0'; 
      break;
case '2'$pr 'AND pagerank = 1'; 
      break;
case '3'$pr 'AND pagerank = 2'; 
      break;
case '4'$pr 'AND pagerank = 3'; 
      break;
...


In der Blätterfunktion:

PHP-Quelltext

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
...
// ****** CREATE PAGE NAVIGATION
if (!isset($page)) {
$page 1;

} else {
$page intval($page);

if ($page 1) {
$page 1;
}
}

$start = ($page 1) * $core->options['pagelink'];
$count $db->query_fetch("
SELECT count(*) as links 
FROM " TABLE_PREFIX "links 
WHERE parent_cat_id = " $this_cat['cat_id'] . " 
AND (link_type = 1 OR link_type = 2 OR link_type = 4)
    " $pr "
AND activated = 1 
AND deactivated = 0
");

if ($count['links'] > $core->options['pagelink']) {
$pages $count['links'] / $core->options['pagelink'];

if ($pages != floor($pages)) {
$pages floor($pages) + 1;
}

for ($page_id 1$page_id <= $pages$page_id++) {
$CategoryPageLink Rewrite::getLinkCategory($this_cat['cat_id'],$page_id,$_GET['sort']);
$tpl->load('show_cat_pagelink','show_cat_pagelink_bit');
}
}
...

Im ACP sind z.B. 2 Links pro Seite eingestellt!

Es funktioniert soweit alles nur die Blätterfunktion zeigt immer eine (leere) Seite mehr.
Bei nur einem Link z.B.: 1|2| statt nichts.

Wenn ich aber direkt in beiden Querys z.B. 'AND pagerank = 2' eingebe funktioniert die Blätterfunktion wieder einwandfrei.

Was soll ich noch an der Blätterfunktion ändern?


Grüße
Joe
easyLink 2.3.0 - Erotik-Verzeichnis

12

Sonntag, 16. Oktober 2011, 17:57

Hallo...

es tut mir Leid, aber das geht schon extrem weit in den Bereich PHP Grundlagen und dafür ist dieses Forum einfach nicht da. Das ganze ist leider nicht "mal eben" mit ein paar Zeilen zu erklären und daher sprengt die Beantwortung dieser Frage schlichtweg den Rahmen.

Auf Wunsch können wir diese Änderung für sie im Auftrag umsetzen. Ich denke, dass wir hier sicherlich mit 30 Minuten hinkommen sollten. Bei Interesse schreiben Sie bitte einfach ein Mail an service@mountaingrafix.eu
if ($ahnung == NULL) { read FAQ; use SEARCH; use GOOGLE; } else { use brain; make post; }

13

Sonntag, 16. Oktober 2011, 18:11

Kommt darauf an was diese 30 Minuten kosten würden.
E-Mail ist unterwegs.

Grüße
Joe
easyLink 2.3.0 - Erotik-Verzeichnis