[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка
Марианна
Всем здравствуйте, имеется страница, которая содержит код:

<?php
$db = mysql_connect("localhost","name","password");
mysql_select_db("product",$db);
$query = mysql_query("select brand,image from prod where type='телевизор' ");
echo '<table class="tb"><tr>';
$i = 0;
while($row = mysql_fetch_assoc($query))
{
$i++;
echo '<td valign="top" width="380px"><img src="', $row['image'],'" style="float:left;

padding-right:3px;">'
, $row['brand'],'</td>';
if($i == 2) {
echo '</tr><tr>';
$i = 0;
}
}

echo '</tr></table>';


Соответственно выводятся производители телевизоров и изображение. Как реализовать функцию для сортировки по производителю? Можно добавить функцию order by для колонки brand, но результат будет выдаваться сразу. Хотелось бы по нажатию ссылки это реализовать. Пробовала через get, но предыдущий результат несортированный тоже выдается.
Как можно оформить все правильно, чтобы при нажатии ссылки добавлялась конструкция order by? Либо ак-то через метод get?

Если что-то не так написала, прошу простить.
Игорь_Vasinsky
передавай правила сортировки в GET
хватай их из GET если они там есть и вставляй запрос.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Марианна
В этом то вся и проблема, как правильно передать этот параметр сортировки в уже имеющийся массив?
Игорь_Vasinsky
а как передают параметры а GET массив?
как они туда попадают в этот самый GET?
что такое GET?
что он содержит?
его можно визуально увидеть - где?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Valick
Цитата
как правильно передать этот параметр сортировки в уже имеющийся массив?

забудьте про массив, передав параметр сортировки вы должны формировать новый "массив", а точнее таблицу, что является результатом выборки из БД с учетом правил сортировки.
если вам нужно отсортировать по некоторым полям уже имеющийся результат, то лучше это делать на стороне клиента средствами JavaScript


_____________
Стимулятор ~yoomoney - 41001303250491
Игорь_Vasinsky
ну ты не предвидишь сам следующий вопрос???

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Guest
Окей, делаю ссылку
<a href="co22.php?opt=brand">Brand</a>

добавляю переменную

$name=$_GET["opt"];

изменяю код

$query = mysql_query("select brand,what,opisanie,image from binder where type='co2' order by $name");

Работает, но при нажатии ссылки, надо переменной name задать значение, а как потом это значение поменять при нажатии ссылки?
Игорь_Vasinsky
так же. передать в GET

другой вариант - это передавать флаги в GET - а хранить всё в сессии -от глаз юзеров

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Guest
Спасибо, получилось, еще вопрос: а если я не хочу, чтобы изначально была сортировка, а указать столбец, по которому надо изначально сортировать необходимо указать чтобы не выдовало ошибки, то как поступить? Каккое значение указать, чтобы открылась страница, но сортировка не происходила в моем случае?
Игорь_Vasinsky
назначить значение по умолчанию.
$sort_by = isset($_GET['sortby']) ? $_GET['sortby'] : 'ASC';


нужно быть внимательным - т.к. злые юзеры смогут пробовать свои значения в url - а они летят у вас прямо в БД

можно использовать флаги 1 и 0

http://site.com/index.php?type=name&q=Машина&sort=1



$sort = isset($_GET['sort']) ? $_GET['sort'] : null;

swith($sort){
case 1:
$sortby = 'DESC';
break;
case 0:
$sortby = 'ASC';
break;
//Значение по умолчанию - если не указана сортировака в урл или указано что-то левое - не 1 и не 0
default :
$sortby = 'ASC';
break;
}


теперь $sortby может принимать тока 2 значения ASC & DESC

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Guest
Выскакивает ошибка:
Parse error: syntax error, unexpected '{'

Ругается на swith($sort){
Игорь_Vasinsky
Цитата
swith

switch
:D

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Guest
$sort_by = isset($_GET['sortby']) ? $_GET['sortby'] : 'ASC';

$sort = isset($_GET['sort']) ? $_GET['sort'] : null;

switch($sort){
case 1:
$sortby = 'DESC';
break;
case 0:
$sortby = 'ASC';
break;
//Значение по умолчанию - если не указана сортировака в урл или указано что-то левое - не 1 и не 0
default :
$sortby = 'ASC';
break;
}

$query = mysql_query("select brand,what,opisanie,image from binder where type='co2' order by $sort_by");


<a href="co22.php?sort_by=1">ASC</a>


Так должен полностью код быть или я где-то ошиблась, потому что не сортирует?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.