2017-03-27 2 views
-2

Ich habe Probleme mit dem Sortieren einer Tabelle mit PHP. Ich möchte nur herausfinden, wie man Schaltflächen erstellt, anhand derer ich eine Tabelle nach Kriterien sortieren kann, ohne den Code zu beschädigen. Die Kriterien sind, die drei Spalten "Price", "ArtistName" und "AlbumName" in aufsteigender und absteigender Reihenfolge zu sortieren. Ich freue mich auf Meinungen und werde für Tipps dankbar sein.SQL-Tabelle mit PHP sortieren

<?php 
$con = mysqli_connect("", "", "", ""); 
if (!$con) { 
die("Error: " . mysqli_connect_error()); 
} 
$mysqlget = "SELECT * FROM Albums"; 
$mysqldata = mysqli_query($con, $mysqlget) or die ("Error: " . mysql_error($con)); 

echo "<table class='table_albums'>"; 
echo "<tr><th>Album</th><th>Description</th><th>Artist</th><th>Price</th><th colspan='2'>Additional Options</th></tr>"; 

while ($row = mysqli_fetch_array($mysqldata, MYSQLI_ASSOC)) { 

echo "<tr><td>"; 
echo "<img class='album_artwork' src='"; 
echo $row['AlbumImage']; 
echo "'></td><td><p class='info_album_artist'>"; 
echo $row['Info']; 
echo "<p></td><td>"; 
echo "<img class='artist_artwork' src='"; 
echo $row['ArtistImage']; 
echo "'></td><td><p class='info_album_artist'>&pound;"; 
echo $row['Price']; 
echo "<p></td><td>"; 
echo "<a href='"; 
echo $row['MoreInfo']; 
echo "' class='more_info'>More Info</a></td><td>"; 
echo $row['Buy']; 
echo "</td></tr>"; 

} 

echo "</table>"; 
?> 
+4

Sie in der Abfrage sortieren. Sie können mit sort() usw. nach PHP sortieren. Sie können auf dem Client sortieren, wenn Sie alle Daten haben. – mkaatman

+0

hängt davon ab, was Sie sortieren wollen mit '" SELECT * FROM Alben ORDER BY Preis DESC "' – Mario

+0

Ja, ich kenne diese Vorschläge, aber ich möchte sie in der entsprechenden Weise implementieren, in der ein Fehler nicht auftreten sollte. – Niksan555

Antwort

0

Dort gehen Sie mit allen Optionen

<form method="post" action=""> 
<select name="sort" onchange="this.form.submit()"> 
    <option>Order by ...</option> 
    <option value="price_desc">Price descending</option> 
    <option value="price_asc">Price ascending</option> 
    <option value="artist_name_desc">Artist Name descending</option> 
    <option value="artist_name_asc">Artist Name ascending</option> 
    <option value="album_name_desc">Album Name descending</option> 
    <option value="album_name_asc">Album Name ascending</option> 
</select> 
</form> 

<?php 

$sort = $_POST['sort']; 

if ($sort == 'price_desc') 
{ 
    $mysqlget = "SELECT * FROM Albums ORDER BY Price DESC"; 
} 
else if ($sort == 'price_asc') 
{ 
    $mysqlget = "SELECT * FROM Albums ORDER BY Price ASC"; 
} 
else if ($sort == 'artist_name_desc') 
{ 
    $mysqlget = "SELECT * FROM Albums ORDER BY ArtistName DESC"; 
} 
else if ($sort == 'artist_name_asc') 
{ 
    $mysqlget = "SELECT * FROM Albums ORDER BY ArtistName ASC"; 
} 
else if ($sort == 'album_name_desc') 
{ 
    $mysqlget = "SELECT * FROM Albums ORDER BY AlbumName DESC"; 
} 
else if ($sort == 'album_name_asc') 
{ 
    $mysqlget = "SELECT * FROM Albums ORDER BY AlbumName ASC"; 
} 
else 
{ 
    $mysqlget = "SELECT * FROM Albums"; 
} 

$mysqldata = mysqli_query($con, $mysqlget) or die ("Error: " . mysql_error($con)); 

echo "<table class='table_albums'>"; 
echo "<tr><th>Album</th><th>Description</th><th>Artist</th><th>Price</th><th colspan='2'>Additional Options</th></tr>"; 

while ($row = mysqli_fetch_array($mysqldata, MYSQLI_ASSOC)) { 

echo "<tr><td>"; 
echo "<img class='album_artwork' src='"; 
echo $row['AlbumImage']; 
echo "'></td><td><p class='info_album_artist'>"; 
echo $row['Info']; 
echo "<p></td><td>"; 
echo "<img class='artist_artwork' src='"; 
echo $row['ArtistImage']; 
echo "'></td><td><p class='info_album_artist'>&pound;"; 
echo $row['Price']; 
echo "<p></td><td>"; 
echo "<a href='"; 
echo $row['MoreInfo']; 
echo "' class='more_info'>More Info</a></td><td>"; 
echo $row['Buy']; 
echo "</td></tr>"; 

} 

echo "</table>"; 

?> 
0

Das ist einfach mit SQL. Beispiel:

Sortierung Info:

SELECT * FROM Albums ORDER BY Info 

Sortieren in absteigender Reihenfolge:

SELECT * FROM Albums ORDER BY Info DESC 

Um Anstecker, der die Tabelle sortiert werden, würde ich GET, wie:

<a href="?orderby=Info">Info</a> 

PHP-Code:

$mysqlget = 'SElECT * FROM Albums'; 

if (isset($_GET['orderby'])) { 
    switch ($_GET['orderby']) { 
     case 'Info': 
      $mysqlget .= ' ORDER BY Info'; 
      break; 
     case 'Artist': 
      $mysqlget .= ' ORDER BY Artist'; 
      break; 
     // ... 
    } 
} 

$mysqldata = mysqli_query($con, $mysqlget) or die ("Error: " . mysql_error($con)); 
+0

Können Sie mir bitte ein Beispiel geben, danke im Voraus! – Niksan555