Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Выборка из БД некорректна
Yoda  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 79
Пользователь №: 30866
На форуме: 13 лет, 6 месяцев
Карма: 2




Здравствуйте
Скрипт должен выбирать одно из значений в БД, подходящих под параметры и выводить его на экран. Проблема возникает с ценой. Когда $money начинается на цифру, которая меньше цифры, с которой начинается цена, то ничего не происходит

Пример: вводим значение "1000", в БД цена "300". Он не выведет ничего
А если ввести "300", "400", "4000" - то все в порядке

Имеется форма
<input type="submit" value="Чем мне заняться?" name="button">
<input
type="text" name="money" maxlength=6 value="0" onfocus="this.value=''" onblur="if (this.value == '') {this.value = '0';}">


И её обработчик
$time = date("H:i:s");
$time_now = date("H:i");
$money = $_POST['money'];

echo "Сейчас " . $time_now . "<br>";
if ($money=="")
{
$money = "0";
}
echo "У вас есть " . $money . " рублей";

//Выбираем из бд данные, подходящие по всем параметрам
$result = mysql_query("SELECT * FROM Prices WHERE day_of_week = '$day_of_week' AND begin_time <= '$time' AND end_time > '$time' AND price <= '$money' ORDER BY rand() LIMIT 1");
while ($myrow = mysql_fetch_assoc($result))
{
$id_place = $myrow['id_place'];
$begin_time = $myrow['begin_time'];
$end_time = $myrow['end_time'];
$price = $myrow['price'];
$comment = $myrow['comment'];

$res1 = mysql_query("SELECT * FROM Places WHERE id_place = '$id_place'");
$mr1 = mysql_fetch_assoc($res1);
$name = $mr1['name'];
echo $name . ' ' . $comment . '<br>' . ' ' . $price . ' Рублей<br>';
}
?>


--------------------
Идеальной защиты не существует...
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
slobotsky.denis  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Водитель НЛО
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 67
Пользователь №: 40455
На форуме: 10 лет, 7 месяцев, 21 день
Карма: 7




Сортировка строк в mysql:
100
1000
200
23456789
300


--------------------
PHP: The Right Way
Бесплатное обучение Symfony2

Tox: 55BB67DE54B1CB14F8C37B4F3AED64E6A45922988D22F85EF75039751F26F05460664D978F5C
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4155
Пользователь №: 38635
На форуме: 11 лет, 5 месяцев, 23 дня
Карма: 223




Yoda
поле price в базе изменить на float
код заменить на
"...AND price <= '" .  (float)$money . " ORDER BY rand() ..."


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Michael  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6348
Пользователь №: 18498
На форуме: 15 лет, 10 месяцев, 23 дня
Карма: 269




1) Тип поля в БД сделать числовой
2) price <= '$money'
Кавычки убери
3) price <= '$money'
обрабатывать надо $money для безопасности приводя к числовому типу


--------------------
There never was a struggle in the soul of a good man that was not hard
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Yoda  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 79
Пользователь №: 30866
На форуме: 13 лет, 6 месяцев
Карма: 2




Изменение типа поля БД исправило ошибку, всем спасибо


--------------------
Идеальной защиты не существует...
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4155
Пользователь №: 38635
На форуме: 11 лет, 5 месяцев, 23 дня
Карма: 223




Yoda
Тебе несколько человек написали, что нужно приводить к типу переменную.

А если в $_POST['money'] будет записано слово "жопа", что с запросом произойдет?
Вот она, родиамя, и произойдет.


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 17423
Пользователь №: 6543
На форуме: 16 лет, 8 месяцев, 17 дней
Карма: 327

Трезвый :
14 лет, 5 месяцев, 26 дней


AllesKlar
Приведение чему тут поможет?


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
slobotsky.denis  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Водитель НЛО
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 67
Пользователь №: 40455
На форуме: 10 лет, 7 месяцев, 21 день
Карма: 7




twin

$money = $_POST['money'];
...

price <= '$money'

как минимум, безопастности добавит


--------------------
PHP: The Right Way
Бесплатное обучение Symfony2

Tox: 55BB67DE54B1CB14F8C37B4F3AED64E6A45922988D22F85EF75039751F26F05460664D978F5C
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 17423
Пользователь №: 6543
На форуме: 16 лет, 8 месяцев, 17 дней
Карма: 327

Трезвый :
14 лет, 5 месяцев, 26 дней


Не понял я. Это же вроде как деньги, к чему вы их хотите приводить? Я не зря подчеркнул. Есть валидация, преобразования наконец. Если я хочу заплатить 3,62? К чему вы тут собрались это "привести"?


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Yoda  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 79
Пользователь №: 30866
На форуме: 13 лет, 6 месяцев
Карма: 2




Цитата (AllesKlar @ 30.10.2014 - 14:47)
Yoda
Тебе несколько человек написали, что нужно приводить к типу переменную.

А если в  $_POST['money'] будет записано слово "жопа", что с запросом произойдет?
Вот она, родиамя, и произойдет.

Тогда переменая $money будет равна нулю


--------------------
Идеальной защиты не существует...
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 17423
Пользователь №: 6543
На форуме: 16 лет, 8 месяцев, 17 дней
Карма: 327

Трезвый :
14 лет, 5 месяцев, 26 дней


Цитата (Yoda @ 31.10.2014 - 13:29)
Цитата (AllesKlar @ 30.10.2014 - 14:47)
Yoda
Тебе несколько человек написали, что нужно приводить к типу переменную.

А если в   $_POST['money'] будет записано слово "жопа", что с запросом произойдет?
Вот она, родиамя, и произойдет.

Тогда переменая $money будет равна нулю

Это смотря какая жопа)))

Познай темную сторону, есть такая жопа, как SQL-инъекции. И уж тем более, когда собрался работать с деньгами.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
exotica  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Code noobing... :))
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 740
Пользователь №: 36599
На форуме: 12 лет, 4 месяца, 5 дней
Карма: 22

Не курю:
12 лет, 3 месяца, 22 дня


ну к (int) точно не надо подгонять, а вот хотябы регулярочка не помешала бы для коректности.

P/S а кстати для общего развития, функция is_numeric() разве не подходит для проверки чисел с плавающей точкой?
p/s интернет гавновый, не могу гуглить unsure.gif


--------------------
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса