Приветсвую коллег! В этом году закончил универ на программиста, однако нам не преподавали IT-технологии. Решил занятсья этим самостоятельно. В данный момент работаю над улучшением существующей базы данных. Юзаю PhpMyAdmin. Там вроде все просто. Сама база состоит из нескольких столбцов и выводиться на сайт с удаленным хостингом. Собственно сейчас сижу и разбираюсь в коде, задача стоит в принципе простая - для каждого столбца сделать баттон, при нажатии в первый раз на который в шла бы сортировка по возрастанию, а при нажатии второй раз - по убыванию, в третий опять во возрастанию... и т.д. Приведу часть кода с sql запросом: PHP: [color=darkblue]<?php $sql="SELECT teachers.id as t_id,famil,teachers.name as tname,otch, birthday,schools.name as schl, category.name as cname, subject.name as sname,kursinfo.kursplan,kursinfo.kursdate,kursinfo.skill, rayons.name FROM rayons, teachers left join schools on teachers.school=schools.id, (kursinfo left join subject on kursinfo.subject=subject.id) left join category on kursinfo.category=category.id where ((teachers.id=kursinfo.tid) and (rayons.id=teachers.rayon))"; if ($_SESSION['rayon']<>1) { if (isset($_SESSION['rayon'])) $sql.=" and teachers.rayon=".$_SESSION['rayon']; } if ($_POST['famil']!=""){ $sql.= " and (famil like '".$_POST['famil']."%')"; //echo $sql; } if ($_POST['name']!=""){ $sql.= " and (teachers.name like '".$_POST['name']."%')"; // echo $sql; } if ($_POST['otch']!=""){ $sql.= " and (otch like '".$_POST['otch']."%')"; //echo $sql; } if ($_POST['kursname']!=""){ $sql.= " and (kursinfo.kurs like '%".$_POST['kursname']."%')"; //echo $sql; } if ($_POST['category']!=""){ $sql.= " and (kursinfo.category=".$_POST['category'].")"; } if ($_POST['subject']!=""){ $sql.= " and (kursinfo.subject=".$_POST['subject'].")"; } if ($_POST['skill']!=""){ $sql.= " and (kursinfo.skill=".$_POST['skill'].")"; } if ($_POST['rayon']!=""){ $sql.= " and (teachers.rayon=".$_POST['rayon'].")"; } if ($_POST['kursplan']!=""){ $kursplandate =explode('.',$_POST['kursplan']); $_POST['kursplan']=$kursplandate[2].'-'.$kursplandate[1].'-'.$kursplandate[0]; $sql.= " and (kursinfo.kursplan='".$_POST['kursplan']."')"; } if ($_POST['kursdate']!=""){ $sql.= " and (kursinfo.kursdate=".$_POST['kursdate'].")"; } if ($_POST['school']!=""){ $sql.= " and (teachers.school=".$_POST['school'].")"; } //echo $sql; ?> <tbody> <?php $result = mysqli_query($_SESSION['link'],$sql); $rows_count=mysqli_num_rows($result); $odd=""; if ($page_size<$rows_count){ $i=1; while($i<=(($_SESSION['pagenumber']-1)*$page_size)){ $teacher=mysqli_fetch_assoc($result); $i++; } } $users=1; $tid_tmp=-1; while (($users<=$page_size)&&($teacher=mysqli_fetch_assoc($result))){ if ($teacher['t_id']!=$tid_tmp){ $tid_tmp=$teacher['t_id']; $date =explode('-',$teacher['birthday']); $kursdate=explode('-',$teacher['kursplan']); echo '<tr class="'.$odd.' user_row">'; echo '<td class="browse_column "> <input type="checkbox" name="selection_t[]" onclick="activateRow(this)" value="'.$teacher['t_id'].'"/> </td> <td class="browse_column title sort_on"> <a href="edit.php?tid='.$teacher['t_id'].'" >'. $teacher['famil'].' '.$teacher['tname'].' '.$teacher['otch'].'</a> </td> <td class="browse_column datecolumn "> '.$teacher['name'].' </td> <td class="browse_column "> '.$date[2].'.'.$date[1].'.'.$date[0].' </td> <td class="browse_column datecolumn "> '.$teacher['sname'].' </td> <td class="browse_column datecolumn "> '.$teacher['schl'].' </td> <td class="browse_column datecolumn "> '.$kursdate[2].'.'.$kursdate[1].'.'.$kursdate[0].' </td> </tr>'; if ($odd==""){$odd='odd';} else {$odd="";} $users++; } } ?>[/color] У кого есть какие нибудь мысли по данному вопросу? Спасибо! :roll:
В посте описан опыт автора, что он юзает, чем занимается и дан код. В чем проблема-то? моя мысль по этому поводу: 49
Хотелось бы услышать дельное предложение. Каким алгоритмом пользоваться при решении данного вопроса. Код программы мной уже переделанный лежит перед вами. Может юзать баттон? Тогда как задать переменную, отвечающую за подсчет кликов по нему? Может быть каким то другим образом... Через сессию другую...
RelictX, для начала 1) На танке читаем очень внимательно, и понимаем, что одним пхп с таким подходом как вы описали не обойтись. Хотя, конечно, обойтись... если... а баттонами нужно еще js... не варит... пятницо 2) Если не понимаем - покупаем книжку (умную), прорешиваем, по крайней мере, половину, и понимаем, что вопросов не осталось. 3) Реализуем свою задачу, и с дельными вопросами возвращаемся, в конечном итоге, превращая свое здесь пребывание в крайне прогрессивный процесс получения навыков. А за Вас тут никто ничего писать не будет... ну, бесплатно не будет
ну, мы попробуем, да? PHP: <?php $array = array('ASC','DESC'); $sql = 'SELECT * FROM `table` ORDER BY `field` '; if(isset($_GET['op']) || !empty($_GET['op'])){ if($_GET['op']=='DESC') rsort($array); } $sql .= $array[0].' LIMIT 3'; $res=mysql_query($sql); ?> <form action="<?=$_SERVER['PHP_SELF']?>?cmd=select&op=<?=$array[1]?>" method="post"> <input type="submit" name="sort" value="sort <?=$array[1]?>" /> </form> какую-то фигню написал… На утро перечитаю — удалю
Luge, не думаю, что смысл затевать такую капусту с возможностью сортировать только по одному полю. Как я понял - несколько полей. В качестве заголовков в форме - батоны. Думаю отсортировать выборку-то не проблема А вообще, где автор??? Ф студию. Пока я пьяный
SQL запрос не зря такой длинный. Столбцов несколько. Тоесть, получается запрос для каждого баттона будет примерно таким: PHP: $sql="SELECT teachers.id as t_id,famil,teachers.name as tname,otch, birthday,schools.name as schl, category.name as cname, subject.name as sname,kursinfo.kursplan,kursinfo.kursdate,kursinfo.skill, rayons.name FROM rayons, teachers left join schools on teachers.school=schools.id, (kursinfo left join subject on kursinfo.subject=subject.id) left join category on kursinfo.category=category.id where ((teachers.id=kursinfo.tid) and (rayons.id=teachers.rayon)) order by FIELD ASC, DESC"; У меня вроде получилось осуществить это при помощи UPDATE'а значений в специально созданной таблице в phpmyAdmin. Однако, есть загвоздка. Куда не нажми теперь на страничке, везде выполняется действие этого баттона. Тоесть если создам такой же запрос для другого столбца, будет выполняться сначала один, потом другой запрос, а не по нажатию батона определенного столбца... Млин сам чуть не запутался когда писал млин)))
Читать то, я читаю... И многую литературу, форумы и т.д. Однако, логика программирования присутствует. Так что, дельный совет мне не помешает. А чтобы кто то за меня все писал, мне не надо. Спасибо за активность)
сделать единожды запрос и показ данных. при нажатии кнопок сортировать html таблицу жаваскриптом (без всяких php и запросов к бд).
ну есть бесплатные js библиотечки для работы по сортировке таблиц. если найду свою (когда-то сделанную) то могу и ей кинуть (если надо).
Установил js скрипт sorttable.js... Вроде бы все нормально, да сортирует неправильно. В чем может бють причина?
RelictX Слушай разбирись в коде зачем что нужно там и что там написано после чего и зачем и что что означает, если ты закончил универ на программиста, то это я думаю не трудно сделать, что же вам там преподавали интересно если не IT - биофизику компьютера?
В коде php и sql я разобрался. Теперь идет речь о js. Начинаю снова подумывать сделать сортировку на php, без js, потому что никто не может толдково объяснить.
Мне нравится сортировка в PhpMyAdmin... Как ее осуществить, склонировать? Может кто нибудь знает про это?
тебе ж написал Luge ('ASC','DESC') ты пришел за помощью или за тем, чобы на шару всё тебе написали и чтобы всё работало и блестело - это две разных вещи второе тут редко бывает