PHP-Web-Stat Support Forum
https://www.php-web-statistik.de/cgi-bin/yabb/YaBB.pl
Board (Deutsch) >> Vorschläge & Codeschnipsel >> Reihenfolge der URL-Parameter für Anzeige ändern
https://www.php-web-statistik.de/cgi-bin/yabb/YaBB.pl?num=1271927636

Beitrag begonnen von hr3 am 22.04.10 um 11:13:56

Titel: Reihenfolge der URL-Parameter für Anzeige ändern
Beitrag von hr3 am 22.04.10 um 11:13:56
Ich verwende ein Gallerie-Programm, bei dem die Parameter von unterschiedlichen Stellen in unterschiedlichen Reihenfolgen und Kombinationen angegeben werden. Die gewünsche, weil übersichtlichste Anzeigefolge wäre
   Programm?Verzeichnis&Bild&Modus&usw.

Dafür gibt es diverse Lösungsansätze. Ich habe eine Variante gewählt, die so nah wie möglich am Standard bleibt (wenig Modifikationen an wenigen Stellen, keine Änderung an der Speicherlogik). Dafür werden die Daten soweit erforderlich jeweils vor Anzeige mit den aktuellen Einstellung neu aufbereitet. So beteht die Möglichkeit zum Probieren.

Die Steuerung erfolgt über Anweisungszeilen in der der Tabelle Dynamische URLs.


Code (]// die folgenden 4 Anweisungen können in beliebiger Folge und Anzahl angebeben werden und wirken bis zur nächsten Anweisung bzw. bis zum Ende.
// folgende Parameter in Anzeigen nach vorne verschieben
// folgende Parameter in Anzeigen nach hinten verschieben
// folgende Parameter nicht Anzeigen
// folgende Parameter in Uebergabe-Reihenfolge anzeigen
0
#p1
// folgende Parameter in Anzeigen nach vorne verschieben
a1
a2
// folgende Parameter in Uebergabe-Reihenfolge anzeigen
1
// folgende Parameter in Anzeigen nach hinten verschieben
e1
// folgende Parameter nicht Anzeigen
n1
n2
// folgende Parameter in Anzeigen nach vorne verschieben
a3
a4
// folgende Parameter in Uebergabe-Reihenfolge anzeigen
2
// folgende Parameter in Anzeigen nach hinten verschieben
e2
e3
// folgende Parameter in Uebergabe-Reihenfolge anzeigen
3[/code):

Ein passender Testdatensatz kann mit diesen Parametern erzeugt werden ?p1=1&e2=2&a2=3&n1=4&e1=5&a1=6

Den Parameter p1 für die Speicherung aktivien und für die Anzeige dann deaktivieren um zu zeigen, dass auch ursprünglich gespeicherte Werte, die nicht mehr in der Tabelle stehen, angezeigt werden.

Die n*-Parameter bewirken eine Speicherung, ohne im Moment angezeigt zu werden.


Modifikationen ausschließlich in func/func_pattern_matching.php

[code]...
fclose ( $pattern_file );
unset  ( $pattern_file );
// nur einmal aufbereiten (am besten in admin.php und in config.php schreiben)
unset($tmp_url_parameter);
$iv=-9999;
$ih=10000;
$in=1;

foreach ($url_parameter as $value1) {
if     ($value1=="// folgende Parameter in Anzeigen nach vorne verschieben" ) {$kz="v";}
elseif ($value1=="// folgende Parameter in Anzeigen nach hinten verschieben") {$kz="h";}
elseif ($value1=="// folgende Parameter nicht Anzeigen"                     ) {$kz="n";}
elseif ($value1=="// folgende Parameter in Uebergabe-Reihenfolge anzeigen"  ) {$kz=" ";}
elseif ($kz=="v") {$tmp_url_parameter[$iv++]    =$value1;}
elseif ($kz=="h") {$tmp_url_parameter[$ih++]    =$value1;}
elseif ($kz=="n") {$tmp_url_parameter["n".$in++]=$value1;}
}

#if ((isset($_GET["echo"]))&&(isset($tmp_url_parameter))) {
# ksort($tmp_url_parameter);
# echo "<p><font color='red'>tmp_url_parameter: ";
# print_r($tmp_url_parameter);
# echo "<br>";
# }
//------------------------------------------------------------------------------
function pattern_matching_reverse ( $meta , $value ) // only for site_name_reverse
{
  //------------------------------------------------------------------
// wenn Reihenfolge-Steuerungsdaten vorhanden und mehr als ein Parameter
if ((isset($GLOBALS["tmp_url_parameter"]))&&(strpos($value,"&"))) {
parse_str (substr($value,strpos($value,"?")+1) , $tmp_parameter);
unset($tmp_parameter1);
$kz=0;
$i=1;

foreach ($tmp_parameter as $key=>$value1) {
  $x=array_keys($GLOBALS["tmp_url_parameter"],$key);
  if ($x[0]) {$kz=1; if (substr($x[0],0,1)!="n") {$tmp_parameter1[$x[0]=$key."=".$value1;}}
  else {$tmp_parameter1[$i++]=$key."=".$value1;}
  }

if ($kz) {
#if (isset($_GET["echo"])) {echo $value."<br>";}
  ksort($tmp_parameter1);
  $value=substr($value,0,strpos($value,"?")+1).implode("&",$tmp_parameter1);
#if (isset($_GET["echo"])) {echo $value."<hr>";}
  } 
}
  if ( array_key_exists ( $value , $GLOBALS [ "global_site_names_reverse" ] ) )
   { return $GLOBALS [ "global_site_names_reverse" ] [ $value ]; }
...


Die gelb markierten Zeilen einfügen. Zum Test kann # vor den deaktivierten Zeilen entfernt und last_hits.php?echo aufgerufen werden.

PHP-Web-Stat Support Forum » Powered by YaBB 2.5.2!
YaBB Forum Software © 2000-2012. Alle Rechte vorbehalten.