Сортировка MYSQL TABLES с использованием переполнения стека

У меня есть таблица, которая сортирует имя по порядку ASC, но когда я нажимаю кнопку, она не работает.
Я попытался сделать то же самое с 2 кнопками и проверил некоторые доступные коды, но это не работает вообще. Любая помощь?

PHP-код:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myfeeds";

$conn = mysql_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connection failed");
}

$db = mysql_select_db("myfeeds", $conn);
if (!$db) {
die("Can't select database");
}

if (isset($_POST['asc'])) {
$result = mysql_query("SELECT * FROM websites ORDER BY name ASC");
} else {
$result = mysql_query("SELECT * FROM websites ORDER BY name DESC");

}

if (!$result) {
die("Failed to show queries from table");
}$num = mysql_numrows($result);
mysql_close();
?>

Вот кнопка:

SORT BY:
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<button type="submit" id="asc" name="asc">ASC</button>
</form>

Таблица:

                    <table cellpadding="0">
<tr>
<th>ID</th>
<th>Name</th>
<th>URL</th>
<th>Description</th>
<th>Logo</th>
</tr>

<?php
$i = 0;

while ($i < $num) {
$f5 = mysql_result($result, $i, "id");
$f1 = mysql_result($result, $i, "name");
$f2 = mysql_result($result, $i, "url");
$f3 = mysql_result($result, $i, "description");
$f4 = mysql_result($result, $i, "image");
?>
<tr>
<td><?php echo $f5; ?></td>
<td><?php echo $f1; ?></td>
<td><?php echo $f2; ?></td>
<td><?php echo $f3; ?></td>
<td><?php echo "<img src='$f4'>"; ?></td>
</tr>
<?php
$i++;
}
?>
</table>

0

Решение

попробуйте это .. работает 100% =)

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myfeeds";

$conn = mysql_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connection failed");
}

$db = mysql_select_db("myfeeds", $conn);
if (!$db) {
die("Can't select database");
}

if (isset($_GET['asc']))
$result = mysql_query("SELECT * FROM websites ORDER BY name ASC");
else
$result = mysql_query("SELECT * FROM websites ORDER BY name DESC");if (!$result)
die("Failed to show queries from table");

if (mysql_num_rows($result) > 0) {
// output data of each row
while($row = mysql_fetch_assoc($result)) {
echo "name: " . $row["name"]. "<br>";
}
} else {
echo "0 results";
}

$num = mysql_numrows($result);
mysql_close();

?>

<form method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<button type="submit" id="asc" name="asc" value="asc">ASC</button>
<button type="submit" id="asc" name="desc" value="desc">DESC</button>
</form>

лучше использовать PDO вот так ..

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myfeeds";try
{
$conn = new PDO("mysql:host=".$servername.";dbname=".$dbname, $username, $password);
$conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e)
{
die($e->getMessage());
}try
{
if (isset($_GET['asc']))
$result = $conn->prepare("SELECT * FROM websites ORDER BY name ASC");
else
$result = $conn->prepare("SELECT * FROM websites ORDER BY name DESC");

$result->execute();

if($result->rowCount())
{
while($r = $result->fetch(PDO::FETCH_OBJ))
{
echo 'Name:' . $r->name . '<br/>';
}
}
else echo 'no record found!';

}
catch (PDOException $e)
{
die($e->getMessage());
}

?>

Просмотр данных из базы данных с помощью MySQL

<table cellpadding="0">
<tr>
<th>ID</th>
<th>Name</th>
<th>URL</th>
<th>Description</th>
<th>Logo</th>
</tr>

<?php

while ($row = mysql_fetch_assoc($result)) {
?>
<tr>
<td><?php echo $row["id"]; ?></td>
<td><?php echo $row["name"]; ?></td>
<td><?php echo $row["url"]; ?></td>
<td><?php echo $row["description"]; ?></td>
<td><?php echo "<img src='".$row["image"]."'>"; ?></td>
</tr>
<?php

}
?>
</table>
1

Другие решения

Согласно руководство, четвертый параметр mysql_connect должна быть новая ссылка соединения, а не имя базы данных.

new_link

Если второй звонок сделан mysql_connect() с теми же аргументами новая ссылка не будет установлена, но вместо этого будет возвращен идентификатор ссылки уже открытой ссылки. > The new_link параметр изменяет это поведение и делает mysql_connect() всегда открывать новую ссылку, даже если mysql_connect() был вызван ранее с теми же параметрами. В безопасном режиме SQL этот параметр игнорируется.

Я предлагаю использовать mysqli_* вместо этого, поскольку mysql устарела.

И, конечно же, не забудьте выбрать строки после запроса.

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myfeeds";

$conn = mysqli_connect($servername, $username, $password, $dbname);

$order = isset($_POST['asc']) ? 'ASC' : 'DESC';
$sql = "SELECT * FROM websites ORDER BY name $order";
$query = mysqli_query($conn, $sql);

$num = $query->num_rows;
if($num > 0) {
while($row = mysqli_fetch_assoc($query)) {
echo $row['name'] . '<br/>';
}
}
2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector