Tabelle Sortieren

Fruitgum

Erfahrenes Mitglied
Hallo,

ich habe eine Tabelle deren Inhalt ich gerne durch Drücken der Spaltenbezeichnung Sortieren kann.

PHP:
<div class="box2">
<?
$id=$_GET['id'];
$bildo=$_GET['datei'];
$sql2="SELECT * FROM $tbl_name WHERE id='$id'";
$result2=mysql_query($sql2);
$rows=mysql_fetch_array($result2);

?>
<table cellspacing="0">
  <caption></caption>
  	<br>
    <br>
    <tr>
	<th scope="col" class="name">Inhalt</th>
	</tr>
	<tr>
     <td class="alt2"><a href=""><? { echo $rows['titel'];} ?></a><p align="left"><br>
	 <? echo $rows['eintrag']; ?>
	 <p><br>
     </td>
	 </tr>
    </table>	 
  </div>

<div class="box3">

  <table cellspacing="0">
  <caption></caption>
  <tr>
     <th width="26%" class="name" scope="col">Datum</div></th>
	 <th width="31%" class="name" scope="col">Titel</th>
	 <th width="43%" class="name" scope="col">Ort</th>
  </tr>
  </table>
<?php
$sql="SELECT * FROM $tbl_name ORDER BY id DESC LIMIT 7"; 
$result=mysql_query($sql);
while($rows=mysql_fetch_array($result)){  
?>
  <table cellspacing="0">

  <tr>
     <td width="26%" class="alt2"><a href="konzerte_view.php?id=<? echo $rows['id']; ?>"><? echo $rows['email']; ?></a></td>
	 <td width="31%" align="right" class="alt"><? echo $rows['titel']; ?></td>
	 <td width="43%" align="right" class="alt"><? echo $rows['ort']; ?></td>
	 </tr>	 	 
    </table>
<?php
}
mysql_close();
?>

Wie kann ich das machen ohne die PHP mehrmals anzulegen?



LG
 
Hi,

hier ein ganz simples Beispiel:

Zuerst die Überschriften verlinken:
HTML:
<th width="31%" class="name" scope="col"><a href="?sortieren=titel">Titel</a></th>


Und dann folgendes in PHP machen:
PHP:
if( !isset( $_GET['sortieren'] ) )
{
    $sort = 'id'; // Wenn kein Sortieren-Link angeklickt wurde, wird nach ID sortiert.
}
else
{
    $sort = htmlspecialchars( $_GET['sortieren'] );
}
$sql = 'SELECT * FROM $tbl_name ORDER BY ' .$sort. ' DESC LIMIT 7';


Hoffe du kannst etwas damit anfangen.
 
Huhu,

Ich habe es jetzt so gemacht, und es geht auch super.

PHP:
  <table cellspacing="0">
  <caption></caption>
  <tr>
     <th width="26%" class="name" scope="col"><a href="?sortieren=email">Datum</div></th>
	 <th width="31%" class="name" scope="col"><a href="?sortieren=titel">Titel</th>
	 <th width="43%" class="name" scope="col"><a href="?sortieren=name">Ort</th>
  </tr>
  </table>
<?php
if( !isset( $_GET['sortieren'] ) ) 
{ 
    $sort = 'id'; 
} 
else 
{ 
    $sort = htmlspecialchars( $_GET['sortieren'] ); 
} 
$sql = "SELECT * FROM $tbl_name ORDER BY $sort DESC LIMIT 7"; 
$result=mysql_query($sql);
echo mysql_error();
while($rows=mysql_fetch_array($result)){  
?>
  <table cellspacing="0">

  <tr>
     <td width="26%" class="alt2"><a href="konzerte_view.php?id=<? echo $rows['id']; ?>"><? echo $rows['email']; ?></a></td>
	 <td width="31%" align="right" class="alt"><a href="konzerte_view.php?id=<? echo $rows['id']; ?>"><? echo $rows['titel']; ?></td>
	 <td width="43%" align="right" class="alt"><a href="konzerte_view.php?id=<? echo $rows['id']; ?>"><? echo $rows['name']; ?></td>
	 </tr>	 	 
    </table>
<?php
}
mysql_close();
?>

Jetzt habe ich noch folgende Probleme:

1. Wenn ich jetzt mir etwas sortieren lasse, so wird alles sortiert aber es wird nicht mehr der letzte Eintrag ausgegeben.

2. Wenn ich jetzt sortiert habe und mir dann ein Eintrag ausgeben lasse ist die sortierung wieder so als wäre nicht sortiert.

Ich denke zu 1. muss ich mirt den letzten Eintrag irgendwie mitgeben lassen ohne Selcet auf DESC LIMT 1 zu setzen.



Ich möchte nicht das du mir jetzt einen Code schreibst, vielleicht nur ansatzweise. am besten wäre es wenn ich erfahre mit welchen PHP-Befehlen ich das lösen könnte und einen kleinen ansatz. Ich will es ja verstehen! :D


Grüße
 
Zurück