Tabelle mit Formular sortieren und query string beibehalten?

Neue Weide

Grünschnabel
query string bei Formular beibehalten?

Hallo liebe Leute,

ich komm an einer Stelle nicht weiter. Ich habe da eine MySQL Datenbank die ich über PHP auslese und in einer Labelle ausgebe. Die Blätterfunktion habe ich jetzt schon wunderbar hinbekommen.

Aber im Moment hake ich an der Stelle wo ich in einem kleinen Formular mit Slect-Box und zwei Radiobuttons die Sortierreihenfolge nach verschiedenen Spalten aufwärts oder abwärts beinflussen kann. Das Problem ist wenn ich der select-box und den beiden Radiobuttons Namen und Values verpasse werden beim erneuten aufruf der Seite zwar die Parameter für die Sortierung an die URL gehängt, allerdings alle anderen gehen verloren.
Andererseits wenn ich den $QUERY_STRING direkt im form tag nach $PHP_SELF hänge hängt er mir trotzdem wieder nur die Parameter des Formulars an die URL.
Da es recht viele Parameter nach der URL gibt möchte ich auch nicht die Umständliche Variante wählen und lauter Hidden Input Fields für jeden einzelnen mit zu gebenden Parameter erstellen, was nebenbei auch bei der Pflege sollten es mar weniger oder mehr Parameter werden von nachteil wäre.

Mein jetziger Code für das Formular schaut so aus:

HTML:
<form name="" action="<? echo $PHP_SELF."?".$QUERY_STRING ?>" method="get">
  		<select name="sort">
  			<option>nach ...</option>
 			<option>----------------------------------</option>
  			<option>Stadtbezirk</option>
  			<option>Verkaufsart</option>
  			<option>Wohnlage</option>
  			<option>Vermietet</option>
  			<option value="bj">Baujahr</option>
  			<option>Fl&auml;che</option>
  		</select>
 		<input class="radiobutton" type="radio" name="dir" value="up" checked><span class="minitext">aufsteigend</span>
 		<input class="radiobutton" type="radio" name="dir" value="down"><span class="minitext">absteigend</span>
 		<input class="sortbutton" type="image" src="img/button-sortieren.gif" title="Sortieren Sie nach versch. Kriterien aufsteigen oder absteigend">
  		</form>
 
Zuletzt bearbeitet:
Der ganze Code bringt auch nicht mehr Infos. Es gaht ja nur um die Stelle wie ich einem Formular zu seinen Parametern schon bestehende an der URL angehängte Parameter mitgeben kann.

Du hast es so gewollt, hier der ganze Code der Seite:
(nicht erschrecken schaut noch etwas Chaotisch aus ist aber ja grad in der Entwicklungsphase und wird zu Ende hin noch sehr viel schlanker)

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/Strict.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
  <head>
  	<title>ivs M&uuml;nchen Immobilienvergleiche</title>
  	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  	<meta name="keywords" content="" />
  	<meta name="description" content="" />
  	<meta name="author" content="ivs M&uuml;nchen Immobilienvergleiche" />
  
  
... Stylesheeteinbindung
  
  <?php
  // number of lines per page
  $showmax = 20;
  // numbers shown at once in the index top and bottom page
  $anzahlp = 10;
  
  // Function for cutting the query string
  function subquery($delete, $querytemp) {
  	if(strpos($querytemp, $delete) === 0) {
  		$record = strstr($querytemp, "&");
  		$record = substr($record, 1);
  		return $record;
  	} else {
  		return $querytemp;
  	}
  }
  ?>
  
  </head>
  <body>
  
 <div id="head"><a href="index.php"><img src="img/logo.gif" alt="Logo: ivs M&uuml;nchen" /></a><h1 class="logoheadline">Inserats - Vergleichspreis - Sammlung für Immobilien</h1></div>
  <h4 class="hide">Service-Navigation</h4>
  <div id="navtop">
  	<ul>
 		<li><a href="#" title="Gerne erstellen wir Ihnen auch eine individuelle Verkehrswertermittlung">horell Immobilien e.K.</a></li>
  		<li><a href="#" title="Kontakt">Kontakt</a></li>
  		<li><a href="#" title="Impressum">Impressum</a></li>
  	</ul>
  </div>
  <h4 class="hide">Haupt-Navigation</h4>
  <div id="navmain">
  	<ul>
 		<li><a href="#" title="Erfahren Sie mehr &uuml;ber unsere Inserats - Vergleichspreis - Sammlung">Unser Service</a></li>
 		<li><a href="#" title="Hinweise und hilfreiche Tipps zum Umgang mit unserem Angebot">&nbsp;Hilfe</a></li>
 		<li><a href="immobilienvergleiche-suche.php" title="Detailsuche in unserer Inseratsdatenbank f&uuml;r Immobilien">&nbsp;Suche</a></li>
 		<li><a href="#" title="Ihre gespeicherten Inserate">&nbsp;Merkzettel</a></li>
  	</ul>
  </div>
  
  <?php
  ######################################################################################
 ##		 		Databaseconnection and Selection		 		 	######
  ######################################################################################
  include '../cgi-bin/db_connect.ivs.inc';
  include 'error.inc';
  
  ######################################################################################
  ######################################################################################
  // Hole Count of Rows in Database
  $query = "SELECT k.kauf_nr
  			FROM kaufpreissammlung k";
  
  // Connection
  if(!($connection = @mysql_connect($host, $user, $pwd)))
  	showerror();
  if(!mysql_select_db($dbname, $connection))
  	showerror();
  // query
  if(!($result = @mysql_query($query, $connection)))
  	showerror();
  // Number rows
  $rowsFound = @mysql_num_rows($result);
  // close connection
  @mysql_close($connection);
  ?>
  <div id="immobilien"><?php echo $rowsFound; ?> Immobilienangebote</div>
  
  
  <?php
  ######################################################################################
  ######################################################################################
  // Tableresult Query
  $query = "SELECT * FROM kaufpreissammlung k";
  
  if(@$immo == 1) $query .= " WHERE k.kat_app = 1";
  if(@$immo == 2) $query .= " WHERE k.kat_wo = 1";
  if(@$immo == 3) $query .= " WHERE k.kat_haeuser = 1";
  if(@$immo == 4) $query .= " WHERE k.kat_gar = 1";
  
 if(@$sort == 'bj' && @$dir == 'up') $query .= " ORDER BY k.baujahr;"; else if(@$sort == 'bj' && @$dir == 'down') $query .= " ORDER BY k.baujahr DESC;";
  //$query .= " ORDER BY k.strasse";
  
  // Connection
  if(!($connection = @mysql_connect($host, $user, $pwd)))
  	showerror();
  if(!mysql_select_db($dbname, $connection))
  	showerror();
  // query
  if(!($result = @mysql_query($query, $connection)))
  	showerror();
  // Number rows
  $rowsFound = @mysql_num_rows($result);
  
  ?>
  
  <div id="bigcontent">
  	<div id="resulthead">
 		<h1><span class="bluegreen">ivs</span> Wir haben <span class="bluegreen"><?php echo $rowsFound ?></span> Immobilien f&uuml;r Sie gefunden</h1>
  		<ul>
 		 <li><a class="searchlink" href="immobilienvergleiche-suche.php" title="Verfeinern Sie Ihre Suche">Suche ver&auml;ndern</a></li>
  		</ul>
  	</div>
  	<div id="resultpath">
 		<span class="smaltext">Ihre Suche: Wohnung; Stadtteil: Aubing; Stadtbezirk: Neu-Aubing; Verkaufsart: Erstverkauf; Wohnlage: Bestlage; Vermietet: nicht vermietet; Baujahr: 1975 - 1995; Fläche: 80m² - 120m²</span>
  	</div>
  
  	<div id="sort">
  	
 		<form name="" action="<? echo $PHP_SELF."?".$QUERY_STRING ?>" method="get">
  		<select name="sort">
  			<option>nach ...</option>
 			<option>----------------------------------</option>
  			<option>Stadtbezirk</option>
  			<option>Verkaufsart</option>
  			<option>Wohnlage</option>
  			<option>Vermietet</option>
  			<option value="bj">Baujahr</option>
  			<option>Fl&auml;che</option>
  		</select>
 		<input class="radiobutton" type="radio" name="dir" value="up" checked><span class="minitext">aufsteigend</span>
 		<input class="radiobutton" type="radio" name="dir" value="down"><span class="minitext">absteigend</span>
 		<input class="sortbutton" type="image" src="img/button-sortieren.gif" title="Sortieren Sie nach versch. Kriterien aufsteigen oder absteigend">
  		</form>
  	
  	</div>
  	<div id="resultindextop">
  <?php
  if(!isset($offset)) $offset = 0;
  $offset = intval($offset);
  $shownsteps = 4; #Anzahl der Seitenzahlen links und rechts von der aktuellen Seitenzahl.
  
  $shows = $offset+1;
  $showe = $offset+$showmax;
  if($showe > $rowsFound) $showe = $rowsFound;
  //if($shows == $showe) print "<p>zeige $shows ";
  //else print "zeige $shows bis $showe ";
  
  print "<p>";
  if($rowsFound > $showmax)
   {
  	  $begin = $offset-($shownsteps*$showmax);
  	  $end = $offset+(($shownsteps+1)*$showmax);
  	  $now = $begin;
  	  $i = ($begin/$showmax)+1;
 	 if($now-$showmax >= 0) { echo "<a href=\"".$PHP_SELF."?offset=0&".subquery('offset', $QUERY_STRING)."\">|&nbsp;<<</a>&nbsp;&nbsp;&nbsp;"; } else { echo '<span class="beige">|&nbsp;<<&nbsp;&nbsp;&nbsp;</span>'; }
 	 if($offset != 0) { echo "<a href=\"".$PHP_SELF."?offset=".($offset-$showmax)."&".subquery('offset', $QUERY_STRING)."\"><<</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Seite&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;&nbsp;"; } else { echo '<span class="beige"><<</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Seite&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'; }
  	  while($now < $end)
  	   {
  		if(($now >= 0) && ($now <= $rowsFound))
  		 {
  		  if($now == $offset) echo "<span class='active'>$i</span> ";
 		 else echo "<a href=\"".$PHP_SELF."?offset=$now&".subquery('offset', $QUERY_STRING)."\">$i</a> ";
  		 }
  		$now += $showmax;
  		$i++;
  	   }
  	  $temp = floor($rowsFound / $showmax)+1;
  	  $t = $offset+$showmax;
 	 if($t < $rowsFound) print "&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;von&nbsp;".$temp."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"".$PHP_SELF."?offset=$t&".subquery('offset', $QUERY_STRING)."\">>></a>&nbsp;&nbsp;&nbsp;"; else print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;von&nbsp;".$temp."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class='beige'>>></span>&nbsp;&nbsp;&nbsp";
 	 if($now+$showmax <= $rowsFound) print "<a href=\"".$PHP_SELF."?offset=".($temp*$showmax-$showmax)."&".subquery('offset', $QUERY_STRING)."\">>> |</a> "; else print "<span class='beige'>>> |</span> ";
  	  
  	  
  	 }
  	else print "&nbsp;";
  print "</p>";
  
  @mysql_data_seek($result, $offset);
  ?>
  	</div>
  	<br />
  	<form name="" action="immobilienvergleiche-ergebniss.html" method="get">
  	<div id="resulttable">
  		<h1>Stadtteil: Aubing / Stadtbezirk: Neu-Aubing</h1>
  		<table cellpadding="0" cellspacing="1" border="1">
  		<tr>
  			<td class="title" title="">Datum</td>
 			<td class="title" title="">Stra&szlig;e</td>
  			<td class="title" title="">Nr.</td>
  			<td class="title" title="">WL</td>
  			<td class="title" title="">Nutzung</td>
  			<td class="title" title="">Verk-Art</td>
  			<td class="title" title="">DS</td>
  			<td class="title" title="">EB</td>
  			<td class="title" title="">m&sup2;</td>
  			<td class="title" title="">BJ</td>
  			<td class="title" title="">RJ/UJ</td>
  			<td class="title" title="">V/N</td>
  			<td class="title" title="">Etage</td>
  			<td class="title" title="">Lift</td>
  			<td class="title" title="">B/L/T</td>
  			<td class="title" title="">B/ (m&sup2;)</td>
  			<td class="title" title="">HiRi</td>
  			<td class="title" title="">DT/ (m&sup2;)</td>
  			<td class="title" title="">Gal/ (m&sup2;)</td>
  			<td class="title" title="">Hob/ (m&sup2;)</td>
  			<td class="title" title="">G.Ant (m&sup2;)</td>
  			<td class="title" title="">G.Typ</td>
  			<td class="title" title="">Beb</td>
  			<td class="title" title="">Sonstiges</td>
  		</tr>
  		<?php 
 		for($i = 0; (($i < $showmax) && ($row = @mysql_fetch_array($result))); $i ++) {
  		?>
  		<tr>
 			<td title=""><div class="checkbox"><input type="checkbox" name="inserat" value=""></div><?php echo $row["datum"] ?></td>
 			<td title=""><?php echo $row["strasse"] ?></td>
 			<td title=""><?php echo $row["hausnummer"] ?></td>
 			<td title=""><?php echo $row["wohnlage"] ?></td>
 			<td title=""><?php echo $row["nutzung"] ?></td>
 			<td title=""><?php echo $row["verk_art"] ?></td>
 			<td title=""><?php echo $row["denkmalschutz"] ?></td>
 			<td title=""><?php echo $row["erbbaurecht"] ?></td>
 			<td title=""><?php echo $row["flaeche"] ?></td>
 			<td title=""><?php echo $row["baujahr"] ?></td>
 			<td title=""><?php echo $row["renovierung"] ?></td>
 			<td title=""><?php echo $row["vermietet"] ?></td>
 			<td title=""><?php echo $row["etage"] ?></td>
 			<td title=""><?php echo $row["lift"] ?></td>
 			<td title=""><?php echo $row["balkon"] ?></td>
 			<td title=""><?php echo $row["balkon_m"] ?></td>
 			<td title=""><?php echo $row["himmelsrichtung"] ?></td>
 			<td title=""><?php echo $row["dachterasse_m"] ?></td>
 			<td title=""><?php echo $row["galerie_m"] ?></td>
 			<td title=""><?php echo $row["hobby_m"] ?></td>
 			<td title=""><?php echo $row["garten_m"] ?></td>
 			<td title=""><?php echo $row["garagen_typ"] ?></td>
 			<td title=""><?php echo $row["gebaeudeart"] ?></td>
 			<td title=""><?php echo $row["sonstiges"] ?></td>
  		</tr>
  		<?php } ?>
  		</table>	
  	</div>
  	<div id="resultindexbottom">
  <?php
  print "<p>";
  if($rowsFound > $showmax)
   {
  	  $begin = $offset-($shownsteps*$showmax);
  	  $end = $offset+(($shownsteps+1)*$showmax);
  	  $now = $begin;
  	  $i = ($begin/$showmax)+1;
 	 if($now-$showmax >= 0) { echo "<a href=\"".$PHP_SELF."?offset=0&".subquery('offset', $QUERY_STRING)."\">|&nbsp;<<</a>&nbsp;&nbsp;&nbsp;"; } else { echo '<span class="beige">|&nbsp;<<&nbsp;&nbsp;&nbsp;</span>'; }
 	 if($offset != 0) { echo "<a href=\"".$PHP_SELF."?offset=".($offset-$showmax)."&".subquery('offset', $QUERY_STRING)."\"><<</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Seite&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;&nbsp;"; } else { echo '<span class="beige"><<</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Seite&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'; }
  	  while($now < $end)
  	   {
  		if(($now >= 0) && ($now <= $rowsFound))
  		 {
  		  if($now == $offset) echo "<span class='active'>$i</span> ";
 		 else echo "<a href=\"".$PHP_SELF."?offset=$now&".subquery('offset', $QUERY_STRING)."\">$i</a> ";
  		 }
  		$now += $showmax;
  		$i++;
  	   }
  	  $temp = floor($rowsFound / $showmax)+1;
  	  $t = $offset+$showmax;
 	 if($t < $rowsFound) print "&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;von&nbsp;".$temp."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"".$PHP_SELF."?offset=$t&".subquery('offset', $QUERY_STRING)."\">>></a>&nbsp;&nbsp;&nbsp;"; else print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;von&nbsp;".$temp."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class='beige'>>></span>&nbsp;&nbsp;&nbsp";
 	 if($now+$showmax <= $rowsFound) print "<a href=\"".$PHP_SELF."?offset=".($temp*$showmax-$showmax)."&".subquery('offset', $QUERY_STRING)."\">>> |</a> "; else print "<span class='beige'>>> |</span> ";
  	  
  	  
  	 }
  	else print "&nbsp;";
  print "</p>";
  ?>
  	</div>
  	<p class="resultparagraph">
 		Sie können einzelne Angebote auf den Merkzettel zwischenspeichern oder sich die Preise direkt anzeigen lassen. Zuvor können Sie, mit Hilfe der Checkboxen auf der linken Seite der Liste, Ihre Angebote markieren. Danach offseten Sie eine der unteren Aktionen.
  	</p>
  	<div id="resultbuttons">
 	<a href="#"><img src="img/button-angebote.gif" width="200" height="25" border="0" title="Angebote auf den Merkzettel legen" alt="Angebote auf den Merkzettel legen"></a><a href="#"><img src="img/button-preise.gif" width="260" height="25" border="0" title="Preise zu den Angeboten anzeigen lassen" alt="Preise zu den Angeboten anzeigen lassen"></a>
  	</div>
  	</form>
  
  	<br />
  </div>
  
  <div id="foot"></div>
  </body>
  </html>
 
Ja was is jetza los hier, es wird mir doch keiner Erzählen wollen noch nie in einer ähnlichen Lage gewesen zu sein? Oder ist mein Problem mit dem QueryString doch so A Typisch?
 
Zurück