Марианна
17.06.2013 - 13:10
Всем здравствуйте, имеется страница, которая содержит код:
<?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
17.06.2013 - 13:16
передавай правила сортировки в 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
Марианна
17.06.2013 - 13:35
В этом то вся и проблема, как правильно передать этот параметр сортировки в уже имеющийся массив?
Игорь_Vasinsky
17.06.2013 - 13:41
а как передают параметры а 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
17.06.2013 - 13:47
Цитата |
как правильно передать этот параметр сортировки в уже имеющийся массив? |
забудьте про массив, передав параметр сортировки вы должны формировать новый "массив", а точнее таблицу, что является результатом выборки из БД с учетом правил сортировки.
если вам нужно отсортировать по некоторым полям уже имеющийся результат, то лучше это делать на стороне клиента средствами JavaScript
_____________
Стимулятор ~yoomoney - 41001303250491
Игорь_Vasinsky
17.06.2013 - 13:49
ну ты не предвидишь сам следующий вопрос???
_____________
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
Окей, делаю ссылку
<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
17.06.2013 - 15:34
так же. передать в 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
17.06.2013 - 15:51
назначить значение по умолчанию.
$sort_by = isset($_GET['sortby']) ? $_GET['sortby'] : 'ASC';
нужно быть внимательным - т.к. злые юзеры смогут пробовать свои значения в url - а они летят у вас прямо в БД
можно использовать флаги 1 и 0
http:
$sort = isset($_GET['sort']) ? $_GET['sort'] : null;
swith($sort){
case 1:
$sortby = 'DESC';
break;
case 0:
$sortby = 'ASC';
break;
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
Выскакивает ошибка:
Parse error: syntax error, unexpected '{'
Ругается на swith($sort){
Игорь_Vasinsky
17.06.2013 - 17:50
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
$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>
Так должен полностью код быть или я где-то ошиблась, потому что не сортирует?
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.