Sortier- oder Sucheeregbniss auch nach blättern

Hi,

ich bin relativ neu im programmieren mit php und habe ein problem:
Ich habe mit hilfe von php eine ausgabe einer mysql-datenbank programmiert mit suhc, sortier und blätter funktion, wenn man die such bzw. sortier funktion verwendet dann macht er das für die erste Seite richtig, wenn ich jedoch dann eine Seite weiter gehe verwirft er diese funktionen.

Bitte, kann mir jemand hierbei helfen!
Hier ist der Quelltext:
PHP:
<?
echo "<form action='$_SERVER[PHP_SELF]' method='post'>";
?>
<table>
	<tr>
		<td>Suche nach:</td> 
		<td><input type="Text" name="suchanfrage" size="24" maxlength="60"></td>
	
	
		<td>Suchkriterium:</td>
		<td>
			<select name='suchkrit'>
        			<option value='titel'>Titel</option>
        			<option value='typ'>Typ</option>
				<option value='typ2'>Typ2</option>
				<option value='format'>Format</option>
				<option value='anz'>Anzahl</option>
        			<option value='genre'>Genre</option>
				<option value='ref'>Referenzen</option>
				<option value='art'>Art</option>
				<option value='verliehen'>Verliehen</option>
	       			<option value='sonst'>Bemerkungen</option>
			</select>
		</td>
	
		
		<td></td>
		<td><input type="Submit" name="suche" value="Suche"></td>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
		<td>Sortieren nach:</td>
		<td>
			<select name='sort'>
        			<option value='titel'>Titel</option>
        			<option value='typ'>Typ</option>
        			<option value='typ2'>Typ</option>
				<option value='format'>Format</option>
				<option value='anz'>Anzahl</option>
        			<option value='genre'>Genre</option>
				<option value='ref desc'>Referenzen</option>
				<option value='art'>Art</option>
				<option value='verliehen'>Verliehen</option>
			</select>
		</td>		
	        <td><input type="Submit" name="sortbutt" value="Sortieren"></td>
	</tr>
</table>

<?php

require_once('verb.inc.php');

if(isset($_GET['m']))
{
	$m = $_GET['m'];
	$n = $m + 20;
}
else 
{
	if(isset($_GET['m2']))
	{
		$m2 = $_GET['m2'];
		$n = $m2 - 20;
	}
	else
	{
		$n = 0;
	}
}

echo "<table>";

echo "<tr>";
echo "<td colspan='2'></td>";
echo "<td colspan='2'></td>";
echo "<td colspan='2'></td>";
echo "<td colspan='2'><a href='anzeigen.php?m2=$n'><center><img src='left.gif' alt= 'zurück' border='0'></center></a></td>";
echo "<td colspan='2'></td>";
echo "<td colspan='2'></td>";
echo "<td colspan='2'><a href='anzeigen.php?m=$n'><center><img src='right.gif' alt= 'weiter' border='0'></center></a></td>";
echo "</tr>";

if(isset($_POST['suche'])) //wenn Formular abgeschickt
{

 $sort=$_POST["sort"];


 $suche=($_POST['suchanfrage']);
 
 echo"<th bgcolor='#a7a4a7'colspan='2'>Titel</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Typ</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Typ2</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Format</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Anzahl</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Genre</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Referenzen</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Art</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Verliehen</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Bemerkungen</th>";

 //SQL-Abfragen

 $suchkrit=$_POST["suchkrit"];

 $sql="SELECT * FROM sammlung where $suchkrit like '%$suche%' ORDER BY $sort LIMIT $n, 20";
 $result=mysql_query($sql) or die ("SQL-Abfrage fehlgeschlagen");
}
else
{
	if(isset($_POST['sort'])) //wenn Formular abgeschickt
	{
		$sort=$_POST["sort"];
	}
	else 
	{
		$sort = titel;	
	}

 echo"<th bgcolor='#a7a4a7'colspan='2'>Titel</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Typ</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Typ2</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Format</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Anzahl</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Genre</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Referenzen</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Art</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Verliehen</th>";
 echo"<th bgcolor='#a7a4a7'colspan='2'>Bemerkungen</th>";

 //SQL-Abfragen
 $sql="SELECT * FROM sammlung ORDER BY $sort LIMIT $n, 20";
 $result=mysql_query($sql) or die ("SQL-Abfrage fehlgeschlagen");
}


 //Ergebnis auswerten
 while($line=mysql_fetch_row($result)) //solange DS vorhanden
 {
    echo "<tr>";
    echo "<td bgcolor='#C6C3C6' colspan='2'>".$line[1]."</td>";
    echo "<td bgcolor='#C6C3C6' colspan='2'>".$line[2]."</td>";
    echo "<td bgcolor='#C6C3C6' colspan='2'>".$line[3]."</td>";
    echo "<td bgcolor='#C6C3C6' colspan='2'>".$line[4]."</td>";
    echo "<td bgcolor='#C6C3C6' colspan='2'>".$line[5]."</td>";
    echo "<td bgcolor='#C6C3C6' colspan='2'>".$line[6]."</td>";
    echo "<td bgcolor='#C6C3C6' colspan='2'>".$line[7]."</td>";
    echo "<td bgcolor='#C6C3C6' colspan='2'>".$line[8]."</td>";
    if($line[9] == 'Ja')
    {	
     	echo "<td bgcolor='#C6C3C6' colspan='2'><center><img src='icon_yes1.gif' alt='Ja' border='0'></center></td>";
    }
    else
    {
	echo "<td bgcolor='#C6C3C6' colspan='2'><center><img src='icon_no.gif' alt='Nein' border='0'></center></td>";
    }			 	
    echo "<td bgcolor='#e7e7e7' colspan='2'>".$line[10]."</td>";
    echo "</tr>";	    
 }

    
echo "</table>";
echo "</form>";
?>

mfg
~ Jango
 
1. Möglichkeit du könntest den Query ja mittels sessions bearabeiten also
Code:
SELECT * FROM test WHERE $_SESSION['where'] ORDER BY $_SESSION['order']
dabei müsstest du halt $_SESSION['order'] und $_SESSION['where'] immer bearbeiten.

2. Möglichkeit du könntest das Suchergebniss in einer extra Tabelle in der DB speichern und Spalten vergen wie Suchid und Zeit. Diese Daten könntest du ja dann für eine bestimmte Zeit in der DB lassen und dann wieder löschen.
 
3. Möglichkeit: du bearbeitest deine <option> tags und programmierst ein es so, dass das Suchkriterium anstatt <option> ein <option selected> bekommt. Damit wird der eintrag wieder automatisch gewählt.
 
@ezias
bei mir gibt er ja gleich von anfang an den aktuellen inhalt der tabelle aus das heisst das er sich die daten aus der tabelle "sammlung" holt, da müsste dann der tabellename doch über eine variable vergeben werden, doch wo füge ich die variable ein ohne das er sie beim weiter klicken zurücksetzt, da ja dort sich die seite selbst wieder aufruft.

@Radhad

ich nehme dann doch nur das suchkriterium aber die suchanfrage nich, kannst du mir das bitte genauer erklären was du meinst

mfg
~Jango
 
Übergebe die Parameter einfach per GET (sortierung etc).
PHP:
echo '<form method="post" action="'.$_SERVER["PHP_SELF"].'?sort='.$_POST["sort"].'">';
anschliessend kannst du überprüfen, ob $_GET["sort"] oder $_POST["sort"] den gewünschten Parameter liefert, und diesen verarbeiten!
 
Ups, mein Ansatz war da falsch. Mach es so wie hubeR83 vorschlägt, die Variable immer mit übergeben. Vielleicht vorher prüfen, ob sie vorhanden. Wenn ja $sort = $_POST["sort"] else $sort = 0; oder so...
 
Ich hab das bei der sortierung jetzt mit get und post gemacht, doch sortiert der erst nachdem man ein zweites mal auf den sortier button klickt und beim seitenwechsel übernimmt der auch nicht die sortierung
 
1. überprüfe nicht nut $_GET["sort"] auf Inhalt, sondern auch $_POST["sort"] da dein Formular mit POST abgeschickt wird. Wenn $_POST["sort"] vorhanden, dann benutze dieses, wenn nicht, check ob $_GET["sort"] vorhanden!

2. musst du natürlich diesen Parameter auch in den "Seiten-Links" übergeben! Ich weiss nicht wie du die Navigation durch die Seiten machst, aber vom Prinzip her so
HTML:
<a href="?sort=$sort">Seite 2</a>

und $sort solltest du aus $_GET["sort"] oder $_POST["sort"] (je nachdem) gefüllt haben, oder einfach auf 0 setzen!
 
Zurück