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
Ein passender Testdatensatz kann mit diesen Parametern erzeugt werden
?p1=1&e2=2&a2=3&n1=4&e1=5&a1=6Den 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.