|
|
|
|
|
для: confirm
(29.03.2013 в 16:34)
| | Перечитаю дома на свежую голову, сейчас не получается. Извините. Если не против, то напишу позже. | |
|
|
|
|
|
|
|
для: home-studia
(29.03.2013 в 16:05)
| | Я вам написал заменить в коде моего примера, а не выполнять свой. А в в моем примере на экран выводится не ресурс, а строка. Ну вы же думайте, что творите, ну разве же так можно.
Если вы напишите так:
<?
$q = "SELECT * FROM tbl WHERE id IN('.implode(',', range($n1, $n2)).') OREDER BY info DESC";
echo $q;
| То браузер отобразит не пустую строку, а это:
SELECT * FROM tbl WHERE id IN('.implode(',', range(2, 7)).') OREDER BY info DESC
| Как вы думаете, является ли такая строка корректной и понятной для MySQL?
Вы взяли и честно скопировали то, что я написал, я в писал строку обрамленную в одинарные кавычки, а вы пишите ее в двойных кавычках, и моя вставка у вас оказалась в одинарных. Этот ляп видно даже в вашем коде - разве подсветка его не показывает, что строка имеет ошибку? Наверное же должно быть так:
<?
$q = mysql_query("SELECT * FROM tbl WHERE id IN(".implode(',', range($n1, $n2)).") OREDER BY info DESC");
| если использовать двойные кавычки, как вы думаете?
И вообще - не просто копируйте код вам предлагаемый, всегда анализируйте его, иначе проку от этого не будет. Вот вы пишите:
Когда-то вы помогли мне вот таким кодом:
где ссылаетесь на код:
<?
//формируем строку параметров для запроса
$id = implode(",", array_map("intval", $_POST['set']));
//запрос
$q = mysql_query("SELECT * FROM table_name WHERE id IN(".$id.")");
|
И далее продолжаете:
Если правильно понимаю, то "['set']" это наши <option value=""> переданные через POST. Но как связать этот код с этой формой:
Но ведь данный код к текущей вашей задаче никак не подходит, вам в ней не приходит массив значений, вам приходят два крайних значения, и значит надо еще сформировать этот список. И это можно сделать построив такой массив с помощью функции range(), и только потом уже implode(). Ну разве же можно ранее вам показанный код клеить как универсальный куда непопадя? | |
|
|
|
|
|
|
|
для: confirm
(29.03.2013 в 16:00)
| | На код:
<?
$n1 = isset($_POST['vibor1']) ? (int)$_POST['vibor1'] : null;
$n2 = isset($_POST['vibor2']) ? (int)$_POST['vibor2'] : null;
if($n1 && $n2 && $n1 < $n2) { //соблюдены ли условия
//формируем строку запроса
$q = mysql_query("SELECT * FROM tbl WHERE id IN('.implode(',', range($n1, $n2)).') OREDER BY info DESC");
echo $q;
} else {
//error out
}
?>
|
браузер показал пустую страницу | |
|
|
|
|
|
|
|
для: home-studia
(29.03.2013 в 15:52)
| | Вот для того, чтобы понять, что же получится в результате кода, который есть в строке запроса, я и написал не сразу запрос, а строку его. Замените в моем примере строку мою на вашу - "SELECT * FROM tbl WHERE id IN('.implode(',', range($n1, $n2)).') OREDER BY info DESC". И выполните мой пример. Что вы увидите при этом в браузере? | |
|
|
|
|
|
|
|
для: confirm
(29.03.2013 в 15:14)
| | Получается весь код должен быть таким?
<?
$n1 = isset($_POST['vibor1']) ? (int)$_POST['vibor1'] : null;
$n2 = isset($_POST['vibor2']) ? (int)$_POST['vibor2'] : null;
if($n1 && $n2 && $n1 < $n2) { //соблюдены ли условия
//формируем строку запроса
$q = mysql_query("SELECT * FROM tbl WHERE id IN('.implode(',', range($n1, $n2)).') OREDER BY info DESC");
if($q) {
if(mysql_num_rows($q)) {
while($row = mysql_fetch_assoc($q)) {
//вывод таблицы
}
}
}
} else {
//error out
}
?>
|
| |
|
|
|
|
|
|
|
для: home-studia
(29.03.2013 в 14:52)
| | Я же написал в примере комментарии, из которых следует, что $q это переменная содержащая строку запроса, а не сам запрос к базе. А далее эта строка выводится на экран, чтобы результат примера увидеть.
А сам запрос в этом случае будет выглядеть так: $q = mysql_query($q). Вот после этого переменная $q будет содержать не строку, а ресурс, результат запроса к базе. Можете и сразу запрос делать, так как у вас во второй строке. | |
|
|
|
|
|
|
|
для: confirm
(29.03.2013 в 13:47)
| | Вероятнее всего я ошибаюсь, но разве строчка:
$q = 'SELECT * FROM tbl WHERE id IN('.implode(',', range($n1, $n2)).') OREDER BY info DESC';
|
не должна быть такой:
$q = mysql_query("SELECT * FROM tbl WHERE id IN('.implode(',', range($n1, $n2)).') OREDER BY info DESC");
|
? | |
|
|
|
|
|
|
|
для: confirm
(29.03.2013 в 13:47)
| | Спасибо, confirm. Как и всегда вы даете самый лучший ответ, коротко и по теме. Приеду домой почитаю информацию по вашим ссылкам и опробую код. Человеческое вас спасибо :-)
P.S. от "vibor " коробит, написал на скорую руку в финальном варианте, когда разберусь приведу все к гармонии :-) надеюсь, что разберусь. | |
|
|
|
|
|
|
|
для: home-studia
(29.03.2013 в 13:09)
| | intval(), array_map() - описание этих функций все объясняет.
У вас то задача для небольшого набора двух переменных, а значит можно:
<?
$n1 = isset($_POST['vibor1']) ? (int)$_POST['vibor1'] : null;
$n2 = isset($_POST['vibor2']) ? (int)$_POST['vibor2'] : null;
if($n1 && $n2 && $n1 < $n2) { //соблюдены ли условия
//формируем строку запроса
$q = 'SELECT * FROM tbl WHERE id IN('.implode(',', range($n1, $n2)).') OREDER BY info DESC';
echo $q;
} else {
//error out
}
|
Вас не коробит от именования переменных как vibor и подобных? ) Выбор по английски, это choice. | |
|
|
|
|
|
|
|
для: confirm
(29.03.2013 в 11:30)
| | confirm очень рад вас видеть! :-) Спасибо за ответ.
Когда-то вы помогли мне вот таким кодом:
<?
//формируем строку параметров для запроса
$id = implode(",", array_map("intval", $_POST['set']));
//запрос
$q = mysql_query("SELECT * FROM table_name WHERE id IN(".$id.")");
if($q) {
if(mysql_num_rows($q)) {
while($row = mysql_fetch_assoc($q)) {
//вывод таблицы
}
}
}
|
Не могу понять что за "intval". Серфинг по информации "array_map" дал понять. что "intval" это некая функция, но откуда она берется? Если правильно понимаю, то "['set']" это наши <option value=""> переданные через POST. Но как связать этот код с этой формой:
<html>
<head>
<title>Выбрать</title>
</head>
<body>
<form action="select.php" method="post">
<select name="vibor1">
<option value="1">Name 1<option>
<option value="2">Name 2<option>
<option value="3">Name 3<option>
<option value="4">Name 4<option>
<option value="5">Name 5<option>
<option value="6">Name 6<option>
<option value="7">Name 7<option>
</select>
<select name="vibor2">
<option value="1">Name 1<option>
<option value="2">Name 2<option>
<option value="3">Name 3<option>
<option value="4">Name 4<option>
<option value="5">Name 5<option>
<option value="6">Name 6<option>
<option value="7">Name 7<option>
</select>
<p>
<input type="submit" value="Отправить">
</p>
</body>
</html>
|
| |
|
|
|
|