2017-03-27 8 views
-2

PHPを使用してテーブルをソートする際に問題があります。私は、コードを損なうことなく、基準でテーブルをソートできるボタンを作成する方法を理解したいだけです。基準は、3つの列「Price」、「ArtistName」、および「AlbumName」を昇順および降順にソートすることです。私は意見を楽しみにしており、私は任意のヒントに感謝します。PHPを使用してSQLテーブルをソートする

<?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

で行きます。 sort()などを使用してPHPでソートすることができます。すべてのデータがある場合は、クライアントでソートすることができます。 – mkaatman

+0

あなたがソートしたいものに依存する「SELECT * FROMアルバムORDER BY価格DESC」「 – Mario

+0

はい、私はこれらの提案を知っていますが、エラーが発生してはならない適切な方法でそれらを実装したいと思います。 – Niksan555

答えて

0

があり、あなたは、クエリで並べ替えることができるすべてのオプション

<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

これはSQLを使用すると簡単です。例:情報による

並べ替え:降順で

SELECT * FROM Albums ORDER BY Info 

並べ替え:

SELECT * FROM Albums ORDER BY Info DESC 

テーブルを並べ替えるボタンを作るために、私はGET使用する、のような:

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

PHPコード:

$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

私に例を挙げてもらえますか、事前に感謝してください! – Niksan555

関連する問題