$_GET in einen Link

Commu

Mitglied
Hallo Zusammen,

Für eine Abfrage an die Datenbank verwende ich Links <a href="index.php?sid=1&...usw...">

ich mal mal ein Beispiel :
Javascript:
<script type="text/javascript">
  var einstieg = "0";
</script>

Anzahl der Datensätze
<select name="limit" onchange="js_limit(einstieg,value)">
  <option value="alle">alle</option>
  <option value="20">20</option>
  <option value="50">50</option>
  <option value="100">100</option>
</select>

<script type="text/javascript">
  function js_limit(zahl,anzahl) {
    window.location = "index.php?sid=1&limit="+zahl+","+anzahl;
  }
</script>

Über das Dropdown möchte ich die Ausgabe der Datensätze begrenzen
die Variable "einstieg" wird durch den $_GET-Parameter entsprechen verändert -> funktioniert einwandfrei

in der oben gezeigten Form habe ich noch weitere Dropdown
HTML:
Sortierung
<select name="sort" onchange="js_order(value)">
  <option value="new">Neusten</option>
  <option value="a-z">Titel (A - Z)</option>
  <option value="z-a">Titel (Z - A)</option>
  <option value="jung">Alter absteigend</option>
  '<option value="alt">Alter aufsteigend</option>
</select>

function js_order(eigenschaft) {
  window.location = "index.php?sid=1&order="+eigenschaft;
}
die alle super funktionieren.

zu meinem Anliegen:
wenn ich einer der Variablen verändere, dann soll die anderen erhalten bleiben.
Code:
index.php?sid=1&order=a-z&limit=100,20
ich habe vor langer eit mal einen PHP Schnipzel mit genommen, irgendwie bekomme ich das nicht mehr richtig zusammen.

PHP:
if(isset($_GET) && count($_GET) > 0){
        $links = array();
        foreach($_GET as $key => $val){
            $links[] = "$key='{$val}'";
        }
        if(count( $links )>0){
            if ( count($links)  == 0) {
                $linkstring = "?".implode('&', $links);
            }
            $linkausgabe = "index.php{$linkstring}";
            echo $linkausgabe;
        }
    }

Warning: Undefined variable $linkstring in D:\scr\index.inc.php on line 166
index.phpArray ( [sid] => 1 [order] => alt )

Das sieht doch ein bisschen ander aus. kann mir eine Helfen?
 
Zuletzt bearbeitet von einem Moderator:
Lösung
Zuerst einmal solltest du dir dringend angewöhnen, deinen Quellcode ordentlich einzurücken, damit er lesbarer wird:
PHP:
if(isset($_GET) && count($_GET) > 0)
{
   $links = array();
  
   foreach($_GET as $key => $val)
     $links[] = "$key='{$val}'";
  
   if(count($links) > 0)
   {
      if (count($links) == 0) // Wieso == 0, wenn vorher > 0
         $linkstring = "?".implode('&', $links);

      $linkausgabe = "index.php{$linkstring}";
      
      echo $linkausgabe;
   }
}
Und dann solltest du dir mal die Kommentierte Zeile ansehen, ob die wirklich Sinn macht.
Zuerst einmal solltest du dir dringend angewöhnen, deinen Quellcode ordentlich einzurücken, damit er lesbarer wird:
PHP:
if(isset($_GET) && count($_GET) > 0)
{
   $links = array();
  
   foreach($_GET as $key => $val)
     $links[] = "$key='{$val}'";
  
   if(count($links) > 0)
   {
      if (count($links) == 0) // Wieso == 0, wenn vorher > 0
         $linkstring = "?".implode('&', $links);

      $linkausgabe = "index.php{$linkstring}";
      
      echo $linkausgabe;
   }
}
Und dann solltest du dir mal die Kommentierte Zeile ansehen, ob die wirklich Sinn macht.
 
Lösung
Zuerst einmal solltest du dir dringend angewöhnen, deinen Quellcode ordentlich einzurücken, damit er lesbarer wird:
PHP:
if(isset($_GET) && count($_GET) > 0)
{
   $links = array();
 
   foreach($_GET as $key => $val)
     $links[] = "$key='{$val}'";
 
   if(count($links) > 0)
   {
      if (count($links) == 0) // Wieso == 0, wenn vorher > 0
         $linkstring = "?".implode('&', $links);

      $linkausgabe = "index.php{$linkstring}";
     
      echo $linkausgabe;
   }
}
Und dann solltest du dir mal die Kommentierte Zeile ansehen, ob die wirklich Sinn macht.
Jupp, wird "nie" betreten....
 
Die ganze Mischung macht nicht viel Sinn. Das eine ist JS, das andere PHP. Und so wie ich das verstanden habe, willst du in JS beide Werte in einen Link packen, wenn einer davon verändert wird.

Ich würde entweder zwei auf der ganzen Seite gültigen Variablen definieren, so wie z.B. die einstieg. Wenn ein Wert sich ändert, wird der erst in die Variable geschrieben und dann die Funktion js_order aufgerufen, die die beiden Variablen dann nutzt. Oder du baust zwei Hidden Felder ein, die die beiden Werte beinhalten.
 
Vielen dank,

schmeiß ich 'if (count($links) == 0) ' raus, gehts.
die tabulatoren werden in leerzeich gewandelt ??????
ich werde mich Bessern
 
Die ganze Mischung macht nicht viel Sinn. Das eine ist JS, das andere PHP. Und so wie ich das verstanden habe, willst du in JS beide Werte in einen Link packen, wenn einer davon verändert wird.

Ich würde entweder zwei auf der ganzen Seite gültigen Variablen definieren, so wie z.B. die einstieg. Wenn ein Wert sich ändert, wird der erst in die Variable geschrieben und dann die Funktion js_order aufgerufen, die die beiden Variablen dann nutzt. Oder du baust zwei Hidden Felder ein, die die beiden Werte beinhalten.
Ich benutze PHP um die Daten aus einer DB auzulesen und Javascript für den direkten Dielog.
 

Neue Beiträge

Zurück