Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: ORDER BY CASE не работает
Форумы портала PHP.SU » » Работа с СУБД » ORDER BY CASE не работает

Страниц (1): [1]
 

1. Kirill_Kostenko - 13 Октября, 2015 - 14:09:42 - перейти к сообщению
Есть запрос в базу. Почему то не работает ORDER BY

$question_name = $db->prepare("SELECT * FROM question_name WHERE id_question=:id_question ORDER BY `id_position`, CASE WHEN id_language=:id_language THEN 1 ELSE 0 END");
$question_name->bindValue(":id_language", $LANGUAGE, PDO::PARAM_INT);
2. DeepVarvar - 13 Октября, 2015 - 14:20:01 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. ... ORDER BY id_position ASC, FIELD(id_language, :id_language) ASC
3. Kirill_Kostenko - 13 Октября, 2015 - 14:40:25 - перейти к сообщению
Ничего не меняется. Все пункты на том де месте(( Огорчение
(Добавление)
DeepVarvar пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. ... ORDER BY id_position ASC, FIELD(id_language, :id_language) ASC


Ничего не меняется. Все пункты на том де месте((
4. DeepVarvar - 13 Октября, 2015 - 15:13:24 - перейти к сообщению
Убери аск во второй половине.
5. Kirill_Kostenko - 13 Октября, 2015 - 15:16:54 - перейти к сообщению
DeepVarvar пишет:
Убери аск во второй половине.


Все равно не работает Нахмурился

Сейчас код выглядит так:

CODE (SQL):
скопировать код в буфер обмена
  1. $question_name = $db->prepare("SELECT * FROM question_name WHERE id_question=:id_question ORDER BY id_position DESC, FIELD(id_language, :id_language)");
  2.                         $question_name->bindValue(":id_language", $LANGUAGE, PDO::PARAM_INT);

(Добавление)
DeepVarvar пишет:
Убери аск во второй половине.


Запись в массив такая:

CODE (SQL):
скопировать код в буфер обмена
  1. foreach($questions AS $q) {
  2.                                
  3.                                 $question_name->bindValue(":id_question", $q['id_question'], PDO::PARAM_INT);
  4.                                 $question_name->execute();
  5.                                 $qn = $question_name->fetch();}
6. DeepVarvar - 13 Октября, 2015 - 15:28:58 - перейти к сообщению
Ну правильно. Так то оно работает. Но у тебя структура данных не подходит к такому финту.
Мне щас некогда тестить.
7. Дос - 28 Января, 2016 - 12:38:46 - перейти к сообщению
--
-- Структура таблицы `stud`
--

CREATE TABLE IF NOT EXISTS `stud` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`famli` text NOT NULL,
`imia` text NOT NULL,
`oche` text NOT NULL,
`dr` date NOT NULL,
`inn` int(23) NOT NULL,
`mesroj` text NOT NULL,
`mesjit` text NOT NULL,
`gtoup` text NOT NULL,
`spec` text NOT NULL,
`kval` varchar(255) NOT NULL,
`datapost` date NOT NULL,
`prikaznom` int(23) NOT NULL,
`tele` text NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;






<?php
include ("blocks/bd.php");
if (isset($_POST['famli'])) {$famli = $_POST['famli']; }
if (isset($_POST['imia'])) {$imia = $_POST['imia']; }
if (isset($_POST['oche'])) {$oche = $_POST['oche']; }
if (isset($_POST['dr'])) {$dr = $_POST['dr']; }
if (isset($_POST['inn'])) {$inn = $_POST['inn']; }
if (isset($_POST['mesroj'])) {$mesroj = $_POST['mesroj']; }
if (isset($_POST['kols'])) {$kols = $_POST['kols']; }

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title><?php echo $myrow['title'] ?></title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<table width="1500" border="0" align="center" cellpadding="0" cellspacing="0" class="main_border">
<!--подключаем шапку сайта-->
<? include("blocks/header.php"); ?>

<tr>
<td><table width="1500" border="0" cellspacing="0" cellpadding="0">
<tr>

<!--Левый блок -->
<? include("blocks/lefttd.php"); ?>

<td valign="top" bgcolor="#FFFFFF">

<br>


<select name=$kols size=1 class=select>
<option value=<?=$myrow['famli']?> >Фамилия</option>
<option value=<?=$myrow['imia']?> >Имя</option>
<option value=<?=$myrow['oche']?> >очество</option>
<option value=<?=$myrow['dr']?> >дата рождения</option>
<option value=<?=$myrow['inn']?> >ИНН</option>
</select>
<input type=submit name=go value=OK class=ok>


<?php

$result = mysql_query("SELECT * FROM stud ORDER BY ".$_POST['kols']."",$db);
$myrow = mysql_fetch_array($result);


do {

printf (" <table align='center' class='lesson'>
<tbody>
<tr>
<td><p>%s</p></td>
<td><p class='lessons'>%s</p></td>
<td><p>%s</p></td>
<td><p>%s</p></td>
<td><p>%s</p> </td>
<td><p>%s</p> </td>
<td><p>%s</p> </td>
<td><p>%s</p> </td>
<td><p>%s</p> </td>
<td><p>%s</p> </td>
<td><p>%s</p> </td>
<td><p>%s</p> </td>
<td><p>%s</p> </td>
</tr>

</tbody>
</table>",$myrow["famli"],$myrow["imia"],$myrow["oche"],$myrow["dr"],$myrow["inn"],$myrow["mesroj"],$myrow["mesjit"],$myrow["gtoup"],$myrow["spec"],$myrow["kval"],$myrow["datapost"],$myrow["prikaznom"],$myrow["tele"]);
}
while ($myrow = mysql_fetch_array($result));
?>






</td>
</tr>
</table></td>
</tr>
<!--нижни элемент-->
<?php include("blocks/footer.php"); ?>

</table>

</body>
</html>

помогите сортировку сделать?
8. SAD - 28 Января, 2016 - 13:04:11 - перейти к сообщению
Дос, зачем Вы написали свою проблему в чужой теме?

 

Powered by ExBB FM 1.0 RC1