Thema: Verbindung aufnehmen, Datensätze sortieren


Datensätze abfragen und sortieren

MySQL

In einem PHP-Programm können die Datensätze mit der Anweisung select ausgewählt und abgefragt werden.
Sortieren mit MySQL ORDER BY
MySQL stellt die unterschiedlichsten Möglichkeiten Datensätze innerhalb Datensatzsammlungen abzufragen. Auch wenn Sie die Datensätze nach dem Auslesen beliebig manipulieren können, beispielsweise mit diversen PHP Funktionen, so ist es ratsam sämtliche Operationen direkt in der MySQL Abfrage zu erledigen, bevor Sie die Daten auslesen. Dies beinhaltet die richtige Reihenfolge von selektierten MySQL Felder, richtige Tabellen, eventuelle Filtrierungen mit WHERE und natürlich die Sortierung der Daten.
Nachfolgend werden wir betrachten wir MySQL Daten mit der Klausel ORDER BY sortiert werden. Es ist immer besser und wesentlich schneller Ihre Daten mit MySQL zu sortieren, statt mit einer anschließenden Programmierung.
Sortieren mit MySQL - ORDER BY
Wenn Sie Daten sortieren wollen, so sollten Sie innerhalb Ihrer MySQL Abfrage vorgehen:
SELECT 'id', 'name' FROM 'lab_tblpersonen' ORDER BY 'name'
Im obigen Beispiel wird nach Name alphabetisch sortiert. Sie können auch die Reihenfolge der Sortierung angeben - ob aufsteigend oder absteigend. Falls Sie das nicht angeben, so sortiert MySQL automatisch aufsteigend:
SELECT 'id', 'name' FROM 'lab_tblpersonen' ORDER BY 'name' ASC
Obige MySQL Abfrage ist gleich der ersten, die wir gezeigt haben - alle Datensätze werden aufsteigend sortiert.
SELECT 'id', 'name' FROM 'lab_tblpersonen' ORDER BY 'name' DESC
Nun werden die Daten alphabetisch absteigend sortiert, so dass Z als erstes vorkommt und a am Ende.

Datensätze sortieren

<form  action="c53.php" method="post">
   <div class="form-group">
       <label  class="control-label" for="inputSort">Sortiere nach</label>
       <select data-role="select" name="sort" class="form-control" id="inputSort">
	       <option class="fg-cyan" value="name">Nachname</option>
	       <option class="fg-red" value="personalnummer">Personalnummer</option>
	       <option selected class="fg-green" value="gehalt">Gehalt</option>
	       <option class="fg-red" value="geburtstag">Geburtstag</option>
	    </select>
   </div> 
    <div class="form-group">
         <button type="submit" name="send" class="btn btn-primary">
		<span class="fa fa-send"></span> Send</button>
	 </div>
</form>
<?php
if(isset($_POST["send"])){
	/* Verbindung mit MyQSL aufnehmen */
	mysql_connect("localhost", "YourUsername", "YourPassword");
	$dblink =mysql_select_db("YourDB");    
	if(isset($_POST["send"])){
		// Sortiere nach dem Nachnamen
		If($_POST["sort"]=="name"){
			$sqlstr = "select * from lab_tblpersonen ORDER BY name " . "DESC";
			showDatatable($sqlstr);
		}
		// Sortiere nach der Personalnummer
		If($_POST["sort"]=="personalnummer"){
			$sqlstr = "select * from lab_tblpersonen ORDER BY personalnummer " . "DESC";
			showDatatable($sqlstr);
		}
		// Sortiere nach dem Gehalt
		If($_POST["sort"]=="gehalt"){
			$sqlstr = "select * from lab_tblpersonen ORDER BY gehalt " . "DESC";
			showDatatable($sqlstr);
		}
		// Sortiere nach dem Geburtstag
		If($_POST["sort"]=="geburtstag"){
			$sqlstr = "select * from lab_tblpersonen ORDER BY geburtstag " . "DESC";
			showDatatable($sqlstr);
		}		
	}
}
function showDatatable($sqlstr) {
	$res = mysql_query($sqlstr) or die ("keine Verbindung mit der Datenbank ".mysql_error());
	$num = mysql_num_rows($res); ?>
	<table class="table striped">
	<thead>
	<tr><th>Lfd. Nr.</th><th>Name</th>
	<th>Vorname</th><th>Personalnummer</th>
	<th>Gehalt</th><th>Zulage</th><th>Geburtstag</th></tr>
	</thead><tbody>

<?php	while ($dsatz = mysql_fetch_assoc($res)) { ?>
		<tr>
      <td><?php echo $dsatz["id"]; ?></td>
		<td><?php echo $dsatz["name"]; ?></td>
		<td><?php echo $dsatz["vorname"]; ?></td>
		<td><?php echo$dsatz["personalnummer"]; ?></td>
		<td><?php echo number_format($dsatz["gehalt"],2,",","."); ?></td>
		<td><?php echo number_format($dsatz["zulage"],2,",","."); ?></td>
		<td><?php echo $dsatz["geburtstag"]; ?></td>
		</tr>      
<?php	} ?>
	</tbody></table>
<?php	mysql_free_result($res);
}
?> 

Datensätze sortieren