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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: PHP, MySQL. Помогите составить условие (запрос в БД) [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): « 1 [2] 3 »   

> Без описания
vanya_sl
Отправлено: 15 Июля, 2013 - 12:25:36
Post Id



Частый гость


Покинул форум
Сообщений всего: 131
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




VenZell


Так понял, что это не ставит условие .. Правельно?
Тогда как поставить условие? Чтобы вычиталась сумма, если баланс больше или равен цене товара?
(Добавление)
Решил сам. Может кому понадобится:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. include("db_connect.php");
  5.  
  6. if(isset($_POST['submit']))
  7.  
  8. {
  9.         $name = $_POST['name'];
  10.         $text = $_POST['text'];
  11.                 $explain = $_POST['explain'];
  12.                 $language = $_POST['language'];
  13.                 $price = $_POST['price'];
  14.                
  15.                
  16.                 @session_start();
  17.                 $loginid=$_SESSION['clientid'];
  18.        
  19.                 $strSQL = "SELECT client_balance FROM client WHERE client_id = $loginid";
  20.         $rs = mysql_query($strSQL);
  21.         while($row = mysql_fetch_array($rs)) {
  22.            $balance = $row['client_balance'];
  23.           }
  24.                
  25.                 if ($balance>$price)
  26.                 {
  27.                 mysql_query("UPDATE client SET client_balance = client_balance - $price WHERE   client_id = $loginid ");
  28.         mysql_query("SET character_set_results='utf8'");
  29.         mysql_query("SET NAMES 'utf8'");
  30.                 mysql_query("INSERT INTO `order2`(`order2_text`, `order2_price`, `order2_exp`, `order2_name`, `order2_loginid`, `order2_lan`) VALUES('$text', '$price', '$explain', '$name', '$loginid', '$language')  ");
  31.                 echo "Текст отправлено!";
  32.                 }
  33.                 else {
  34.                 echo "Нет денег!";
  35.                 }
  36.                
  37.                 }
  38.  
  39. ?>
  40.  


Всем спасибо за помощь Улыбка

(Отредактировано автором: 15 Июля, 2013 - 12:34:39)

 
 Top
esterio
Отправлено: 15 Июля, 2013 - 12:45:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




vanya_sl пишет:
@session_start();

@ - ЗЛО. Запомните ето. И вообще зачем там подваления ошыбок
 
 Top
BesTime
Отправлено: 15 Июля, 2013 - 12:45:55
Post Id



Гость


Покинул форум
Сообщений всего: 82
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)

[+]


Фишка с OR тоже косяк
 
 Top
esterio
Отправлено: 15 Июля, 2013 - 12:46:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




vanya_sl пишет:
mysql_query("SET character_set_results='utf8'");
        mysql_query("SET NAMES 'utf8'");


Также зачем такое в цыкле. Нужно после подключения ставить кодировку
 
 Top
teddy
Отправлено: 15 Июля, 2013 - 12:52:39
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




esterio пишет:
@ - ЗЛО. Запомните ето. И вообще зачем там подваления ошыбок

Присоединяюсь...

+ дополнение от себя:
Особо в код не вчитывался и тему не читал, но посмотрев последний пост автора заметил ошибку и отсутствие фильтрации данных.

if ($balance>$price)
Если баланс больше цены, тогда покупаем я так понял. А что если баланс такой же, как и сама цена, но не больше? Купить то ничего не получится... поэтому ($balance>=$price)
 
 Top
soffrick
Отправлено: 15 Июля, 2013 - 12:55:31
Post Id



Посетитель


Покинул форум
Сообщений всего: 379
Дата рег-ции: Май 2012  
Откуда: Россия, Москва


Помог: 17 раз(а)




Цитата:
PHP:
скопировать код в буфер обмена
  1. $strSQL = "SELECT client_balance FROM client WHERE client_id = $loginid";
  2.         $rs = mysql_query($strSQL);
  3.         while($row = mysql_fetch_array($rs)) {
  4.            $balance = $row['client_balance'];
  5.           }

зачем цыкл?поясните и почему while а не do-while?
(Добавление)
esterio пишет:
vanya_sl пишет:
mysql_query("SET character_set_results='utf8'");
        mysql_query("SET NAMES 'utf8'");


Также зачем такое в цыкле. Нужно после подключения ставить кодировку

а где там цыкл?


-----
Правильный вопрос - уже половина правильного ответа!

p.s. индусы повсюду, будьте осторожны!
 
 Top
esterio
Отправлено: 15 Июля, 2013 - 12:58:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Спойлер (Отобразить)

soffrick пишет:
зачем цыкл?поясните и почему while а не do-while?

Вы прикаливаетесь? Или вы и правду используете do...while при разборе результата с БД? Если да, то больше не рекомендируйте другим такое
 
 Top
soffrick
Отправлено: 15 Июля, 2013 - 13:01:08
Post Id



Посетитель


Покинул форум
Сообщений всего: 379
Дата рег-ции: Май 2012  
Откуда: Россия, Москва


Помог: 17 раз(а)




Цитата:
Вы прикаливаетесь?

нет, Ваш код без цыкла, а у него он есть, вот и спрашивается зачем
(Добавление)
Цитата:
вы и правду используете do...while при разборе результата с БД? Если да, то больше не рекомендируйте другим такое

я всеголишь поинтересовался Улыбка


-----
Правильный вопрос - уже половина правильного ответа!

p.s. индусы повсюду, будьте осторожны!
 
 Top
teddy
Отправлено: 15 Июля, 2013 - 13:02:41
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




soffrick пишет:
код без цыкла

А тут цикл и не нужен, если выбираем 1 запись по конкретному условию.
 
 Top
esterio
Отправлено: 15 Июля, 2013 - 13:02:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Я об етом
soffrick пишет:
почему while а не do-while

http://forum.php.su/topic.php?fo...33&topic=793
Цитата:
Отсюда вытекает, что нельзя использовать циклы do { ... } while (); при выборке из базы.
Потому, что такой цикл выполняется как минимум один раз! Вне зависимости от того есть ли хоть какой-то результат.

(Добавление)
soffrick пишет:
нет, Ваш код без цыкла

Цыкл ен нужен. Там всегда будет один результат
 
 Top
VenZell
Отправлено: 15 Июля, 2013 - 13:39:27
Post Id


Частый гость


Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013  


Помог: 12 раз(а)




А я всего-то и намекал исправить:
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE client SET client_balance = client_balance - $price WHERE client_balance > $price OR  client_id = $loginid

На вот это:
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE client SET client_balance = client_balance - $price WHERE client_balance > $price AND client_id = $loginid

Чтобы у автора срабатывала проверка так, как он хотел...
 
 Top
vanya_sl
Отправлено: 15 Июля, 2013 - 13:52:38
Post Id



Частый гость


Покинул форум
Сообщений всего: 131
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




VenZell
Вы думаете я не пробовал AND? вчера так часов 3 провел с этим впустую ... перепробовал массу всего) от замены OR na AND ничего не менялось)
(Добавление)
teddy пишет:
soffrick пишет:
код без цыкла

А тут цикл и не нужен, если выбираем 1 запись по конкретному условию.

Буду благодарен, если представите код без цикла)
 
 Top
soffrick
Отправлено: 15 Июля, 2013 - 14:01:01
Post Id



Посетитель


Покинул форум
Сообщений всего: 379
Дата рег-ции: Май 2012  
Откуда: Россия, Москва


Помог: 17 раз(а)




Цитата:
если представите код без цикла)

ты что тоже между строк читаешь?


-----
Правильный вопрос - уже половина правильного ответа!

p.s. индусы повсюду, будьте осторожны!
 
 Top
vanya_sl
Отправлено: 15 Июля, 2013 - 14:07:05
Post Id



Частый гость


Покинул форум
Сообщений всего: 131
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




soffrick
к чему это? Не понял
лишь бы написать?
 
 Top
esterio
Отправлено: 15 Июля, 2013 - 14:08:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




vanya_sl
http://forum.php.su/topic.php?fo...82304#1373882304
под спойлер взгляните
 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB