Линк внутри кода PHP ( типо якорь )

gamburg

Новичок
Линк внутри кода PHP ( типо якорь )

Здравствуйте форумчане,

Как сделать на кнопку - линк внутри php страницы, что бы задействовать необходимую функцию помещёную в if.
Например: при старте страницы идёт выборка из базы с сортировкой по ID, ставим на эту же страницу кнопку с линком на какой-то PHP якорь внутри кода PHP страницы который запустит функцию в IF - выборка из базы с сортировкой по PRICE

Извиняюсь за каламбур - учусь
 

iceman

говнокодер
gamburg
методом GET

PHP:
<?php

switch($_GET['order']) {
  case "price":
    $orderBy = ' price ';
  break;
  default:
    $orderBy = ' id ';
  break;
}

$sql = "select... order by $orderBy ";

var_dump($sql);
 

gamburg

Новичок
Автор оригинала: iceman
gamburg
методом GET

PHP:
<?php

switch($_GET['order']) {
  case "price":
    $orderBy = ' price ';
  break;
  default:
    $orderBy = ' id ';
  break;
}

$sql = "select... order by $orderBy ";

var_dump($sql);
Спасибо, я видимо не так задал вопрос:

Запрос к базе есть и сортировка по PRICE тоже есть и всё находиться в

PHP:
if(???????) {
$sql = "select... order by price ";
}
Интересует : как назвать IF (где ??????) и какой линк поставить на кнопку, который запустит содержимое этого IF
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
тебе привели пример, надо было пойти и почитать про оператор switch-case, нет, тебе уперся IF.\

if(!empty($_GET['order']) && $_GET['order'] == 'price'){
$orderBy = ' price ';
} else {
$orderBy = ' id ';
}
$sql = "select... order by $orderBy ";


а линк будет <a href='/index.php?order=price'>трололо</a>

вроде так
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Вурдалак
каждый пишет так, как ему удобней, мне удобней так. И это никому тут ничего не должно
 

Вурдалак

Продвинутый новичок
c0dex
Тут дело не в удобстве, а правильности. Будет Notice. Скажи, тогда зачем ты вообще писал так, а не сразу
PHP:
if( $_GET['order'] == 'price' ){
	$orderBy = ' price ';
} else {
	$orderBy = ' id ';
}
?
Результат-то один.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Не будет Notice. Правильность - это ты так сказал. Я думаю иначе. Переменная в гете должна быть не просто isset() а еще и !empty, а в нашем случае !empty - это то же самое установленное значение price.

-~{}~ 28.06.10 23:47:

PS: предложенный тобой вариант - как раз нотис и вызовет
 

Dovg

Продвинутый новичок
>Будет Notice.
Вурдалак
Сам бы проверил, прежде чем утверждать.

//php -r 'error_reporting(E_ALL); var_dump(empty($var));'
 

Вурдалак

Продвинутый новичок
Автор оригинала: c0dex
Не будет Notice.
— да, извини, мне почему-то казалось, что должно.

Автор оригинала: c0dex
PS: предложенный тобой вариант - как раз нотис и вызовет
— вышеприведённый код я не предлагал.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ну тогда ладно, раз не предлагал))
 

gamburg

Новичок
Автор оригинала: c0dex
тебе привели пример, надо было пойти и почитать про оператор switch-case, нет, тебе уперся IF.\

if(!empty($_GET['order']) && $_GET['order'] == 'price'){
$orderBy = ' price ';
} else {
$orderBy = ' id ';
}
$sql = "select... order by $orderBy ";


а линк будет <a href='/index.php?order=price'>трололо</a>

вроде так
Огромное спасибо за ответ - всё работает, но при переходе на вторую страницу идёт сброс сортировки
при повторном включении перенаправляет на первую страницу и сортирует первую страницу,
вот пример запроса по которому работает с сортировкой по ордеру и постраничный вывод:
PHP:
$firm_id    = @$HTTP_GET_VARS['firm_id'];
$id_firm    = @$HTTP_GET_VARS['id_firm'];
$id_foto    = @$HTTP_GET_VARS['id_foto'];
$iTotalRecords = checkQuery("SELECT id FROM wares WHERE wares.id_subtype='$id_subtype'");
$page = @$HTTP_GET_VARS['page']; if(!$page) $page = 0;
$iTotalPages = intval($iTotalRecords / $DEF['PICT_PER_PAGE']) + ($iTotalRecords % $DEF['PICT_PER_PAGE'] ? 1 : 0);
           if((@$_GET["firm_id"])) {
$query = "SELECT wares.id, wares.id_subtype, wares.title, wares.prev1, wares.price, wares.sprice, wares.made, subtypes.title, wares.firm_id " .
         "FROM wares, subtypes " .
         "WHERE  wares.id_type='$id_type' && wares.firm_id='$firm_id' && wares.id_subtype='$id_subtype' && wares.id_subtype=subtypes.id && wares.isonfirst='1' " .
         "ORDER BY wares.ord";      	                    
}

          if($id_subtype) {
$query = "SELECT wares.id, wares.id_subtype, wares.title, wares.prev1, wares.price, wares.sprice, wares.made, subtypes.title " .
         "FROM wares, subtypes " .
         "WHERE  wares.id_type='$id_type' && wares.id_subtype='$id_subtype' && wares.id_subtype=subtypes.id && wares.isonfirst='1' " .
         "ORDER BY wares.ord, wares.id DESC LIMIT " . ($page * $DEF['PICT_PER_PAGE']) . ", " . $DEF['PICT_PER_PAGE'];
}
Вставил за этим запросом Ваш код:

PHP:
if(!empty($_GET['order']) && $_GET['order'] == 'price'){
$orderBy = ' price '; 
} else {
$orderBy = ' id '; 
}
$query = "SELECT wares.id, wares.id_subtype, wares.title, wares.prev1, wares.price, wares.sprice, wares.made, subtypes.title " .
         "FROM wares, subtypes " .
         "WHERE  wares.id_type='$id_type' && wares.id_subtype='$id_subtype' && wares.id_subtype=subtypes.id && wares.isonfirst='1' " .
         "ORDER BY $orderBy  DESC LIMIT " . ($page * $DEF['PICT_PER_PAGE']) . ", " . $DEF['PICT_PER_PAGE'];
Кнопку сделал так
PHP:
	echo " <a href=?lang=$lang&order=price&p=$p&id_type=$id_type&id_subtype=$id_subtype>Сортировка по цене</a>\n";
Стал глючить постраничный переход - выводит некоректно данные из базы
Как сохранить сортировку по price при постраничном переходе?
Помогите ребята осталась малость
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
gamburg
Для начала я бы советовал выкинуть нахрен тот мануал, или книгу, по которой ты учишь php. Массивы вида $HTTP_GET_VARS['firm_id']; давно отошли в мир иной. Собачки - @ это зло, потому что с ними отладка превращается потом в анальный секас. НУ и собственно ответ на твой вопрос. Надо совместить постраничный вывод и сортировку, то есть в запрос с пагинацией добавить сортировку, а в ссылки постраничного вывода, текущий $_GET['price']. и все)
 

gamburg

Новичок
Автор оригинала: c0dex
gamburg
Для начала я бы советовал выкинуть нахрен тот мануал, или книгу, по которой ты учишь php. Массивы вида $HTTP_GET_VARS['firm_id']; давно отошли в мир иной. Собачки - @ это зло, потому что с ними отладка превращается потом в анальный секас. НУ и собственно ответ на твой вопрос. Надо совместить постраничный вывод и сортировку, то есть в запрос с пагинацией добавить сортировку, а в ссылки постраничного вывода, текущий $_GET['price']. и все)
Спасибо за ответ, мне этот сайт достался по наследству, на новой работе, сказали учить PHP и добавить сортировку по цене, поэтому просто разобраться что куда - уже проблема.

Плиииз - можно хоть маленький примерчик про пагинацию в моём случае. Как я понял вставить сортировку нужно в
PHP:
$iTotalPages = intval($iTotalRecords / $DEF['PICT_PER_PAGE']) + ($iTotalRecords % $DEF['PICT_PER_PAGE'] ? 1 : 0);
И ещё большая прозьба посоветовать кого читать про PHP - интересуют современный методы в программирование на PHP
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Читать не посоветую никого, потому как последняя книга была большая красная, а до этого кучи других, даже не помню авторов. Думаю народ тут на форуме с этим больше тебе поможет.

В твоем случае тебе надо в пагинацию дописать условие, что если:
$order='';
if(!empty($_GET['order']) && $_GET['order'] == 'price'){
$order = '&order=price';
}
Далее в ссылки пагинации дописать этот ордер, в самый конец. То есть в виде:
<a href='index.php?page=2<?=$order?>'>2</a>

А в запросе, где ты выбераешь данные дописать кусок кода, что тебе дали выше, для SQL запроса.
 

gamburg

Новичок
Автор оригинала: c0dex
Читать не посоветую никого, потому как последняя книга была большая красная, а до этого кучи других, даже не помню авторов. Думаю народ тут на форуме с этим больше тебе поможет.

В твоем случае тебе надо в пагинацию дописать условие, что если:
$order='';
if(!empty($_GET['order']) && $_GET['order'] == 'price'){
$order = '&order=price';
}
Далее в ссылки пагинации дописать этот ордер, в самый конец. То есть в виде:
<a href='index.php?page=2<?=$order?>'>2</a>

А в запросе, где ты выбераешь данные дописать кусок кода, что тебе дали выше, для SQL запроса.
Спасибо большое - но задание немного изминилось

Шеф хочет чтобы дизайн сортировки был такой же как и в сортировке по БРЭНДУ:
Вот рабочий по БРЭНДУ:
PHP:
       echo "  <table width=\"500\" align=\"center\" border=\"0\">\n";
        echo "  <tr>\n";
        echo "    <td class=gray align=right>" .$LNG['WARES_VIBOR']. "</td>\n";
        echo "    <td class=gray><select name=name onChange=location.href=this.options[selectedIndex].value >\n";      
        echo "    <option value='0' selected>" .$LNG['WARES_VIBOR2']. "</option>";
        $query = "select firm.id, firm.name from firm, wares where wares.id_type=$id_type && wares.id_subtype=$id_subtype && firm.id=wares.firm_id && wares.isonfirst='1' group by firm.name";  
 
        if($name = mysql_query($query))  
        {  
          while(list($id, $firm_id)=mysql_fetch_array($name))   
        {   
          echo "<option value=\"index.php?lang=$lang&p=$p&id_type=$id_type&id_subtype=$id_subtype&firm_id=$id\" >" . $firm_id . "</option>";  
          }  
        } else puterror("error");
        echo "    </select></td>\n";
        echo "  </table>";
Я только немного стал разбираться в Вашем коде, а мне новое задание
и ещё сказал чтоб сортировка была и по мин цене и по мах цене
Помогите пожаааалуста
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Советую нанять нормального программиста или сделать сайт у людей, которые нормально разбираются в этом всем. Сэкономите массу времени и нервов.

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

gamburg

Новичок
1. Спасибо за добрые слова. Эти решения принимаю не я.

2. Так не дают нормально разобраться
 
Сверху