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.SU

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


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

> Без описания
jonmodem
Отправлено: 26 Апреля, 2013 - 22:46:56
Post Id



Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Июнь 2011  
Откуда: Москва


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




Вот что сделал, но к сожалению не работает:
PHP:
скопировать код в буфер обмена
  1.         include("dbLogin.php");
  2.  
  3.         $queryBalance = "SELECT $fieldBalanse FROM $tableUsers WHERE id = $userID";
  4.         $requestBalance = mysql_query($queryBalance, $link);
  5.         $resultBalance = mysql_fetch_array($requestBalance);
  6.        
  7.         $queryPayDay = "SELECT $fieldPayDay FROM $tableUsers WHERE id = $userID";
  8.         $requestPayDay = mysql_query($queryPayDay, $link);
  9.         $resultPayDay = mysql_fetch_array($requestPayDay);
  10.        
  11.         if ( $resultBalance[$fieldBalanse] >= 0 ) {
  12.                 $payTake = "UPDATE $tableUsers SET $fieldBalance = $resultBalance[$fieldBalanse] + 20 WHERE id = $userID";
  13.                 $payAsk = mysql_query($payTake, $link);
  14.                 $payAns = mysql_fetch_array($payAsk);
  15.                 echo mysql_error();
  16.         } else {
  17.                 echo "<span>Недостаточно денег</span>";
  18.         }

Вот что пишут: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= 20 + 20 WHERE id = 1' at line 1

Не знаю как исправить.

Раньше было так:
PHP:
скопировать код в буфер обмена
  1.         $userPayDay = time();
  2.         $tableUsers = "lbrtrz_users";
  3.         $fieldPayDay = "user_payday";
  4.         $fieldBalance = "user_balance";
  5.         $user_id = get_current_user_id();
  6.  
  7.         $paydayTake = "SELECT $fieldPayDay FROM $tableUsers WHERE id=$user_id";
  8.         $paydayAsk = mysql_query($paydayTake, $link);
  9.         $paydayAns = mysql_fetch_array($paydayAsk);
  10.         echo mysql_error();
  11.  
  12.         $balansTake = "SELECT $fieldBalance FROM $tableUsers WHERE id=$user_id";
  13.         $balanceAsk = mysql_query($balansTake, $link);
  14.         $balanceAns = mysql_fetch_array($balanceAsk);
  15.         echo mysql_error();
  16.        
  17.         if ( $balanceAns[$fieldBalance] >= 20 ) {
  18.                 $payTake = "UPDATE $tableUsers SET $fieldBalance=$balanceAns[$fieldBalance]-20 WHERE id=$user_id";
  19.                 $payAsk = mysql_query($payTake, $link);
  20.                 $payAns = mysql_fetch_array($payAsk);
  21.                 echo mysql_error();
  22.         } else {
  23.                 echo "<span>Недостаточно денег</span>";
  24.         }
 
 Top
EuGen Администратор
Отправлено: 26 Апреля, 2013 - 22:49:52
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
jonmodem
Отправлено: 26 Апреля, 2013 - 23:03:45
Post Id



Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Июнь 2011  
Откуда: Москва


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




EuGen пишет:
http://phpfaq.ru/debug


Для меня MySQL это совсем новая галактика, для меня это самый трудный и непреодолимый момент в работе, и Я не особо понимаю что делать.
 
 Top
caballero
Отправлено: 26 Апреля, 2013 - 23:06:34
Post Id


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


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




Цитата:
Вот что пишут: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= 20 + 20 WHERE id = 1' at line 1

Не знаю как исправить.

ну сначала прочитать что пишут.

и на фига присваивать имена таблиц и полей переменным а потом эти переменные лепить в SQL? Чтобы говнокод стал нечитаемым даже для его автора?

(Отредактировано автором: 26 Апреля, 2013 - 23:07:17)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
jonmodem
Отправлено: 26 Апреля, 2013 - 23:09:39
Post Id



Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Июнь 2011  
Откуда: Москва


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




caballero пишет:
Цитата:
Вот что пишут: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= 20 + 20 WHERE id = 1' at line 1

Не знаю как исправить.

ну сначала прочитать что пишут.

и на фига присваивать имена таблиц и полей переменным а потом эти переменные лепить в SQL? Чтобы говнокод стал нечитаемым даже для его автора?


так проще составлять систему взаимодействующих файлов
 
 Top
caballero
Отправлено: 26 Апреля, 2013 - 23:10:15
Post Id


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


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




Цитата:
Я не особо понимаю что делать.

ну например это (слово debug для тебя то же галактика):

echo $balansTake;

получишь собраный запрос и увидишь ошибку, или как минимум можешь его показать здесь
(Добавление)
Цитата:
так проще составлять систему взаимодействующих файлов

чем проще и шо сие такое за умняк "система взаимодействующих файлов" ?

это типа - футбол - это система взаимодействующих молодых людей.

(Отредактировано автором: 26 Апреля, 2013 - 23:13:29)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
jonmodem
Отправлено: 26 Апреля, 2013 - 23:25:08
Post Id



Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Июнь 2011  
Откуда: Москва


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




Я в разных файлах создаю разные запросы и отображаю их в разных местах сайта, этот скрипт производит вычитание из текущего баланса пользователя стоимость услуги
 
 Top
caballero
Отправлено: 26 Апреля, 2013 - 23:39:27
Post Id


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


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




Цитата:
Я в разных файлах создаю разные запросы и отображаю их в разных местах сайта, этот скрипт производит вычитание из текущего баланса пользователя стоимость услуги

и как их этого следует что имя таблицы юзеров надо засунуть в переменную чтобы потом вместо прочитать SQL запрос выискивать по всему коду где имя таблицы присваивается переменной.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
jonmodem
Отправлено: 26 Апреля, 2013 - 23:43:56
Post Id



Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Июнь 2011  
Откуда: Москва


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




caballero пишет:
Цитата:
Я в разных файлах создаю разные запросы и отображаю их в разных местах сайта, этот скрипт производит вычитание из текущего баланса пользователя стоимость услуги

и как их этого следует что имя таблицы юзеров надо засунуть в переменную чтобы потом вместо прочитать SQL запрос выискивать по всему коду где имя таблицы присваивается переменной.


В таблице пользователей записаны все строки, как баланса, так ID, логин, фамилия, имя, дата последнего платежа. Нужно лишь вычитать из текущего баланса стоимость услуги и обновлять значения в строке баланса и по такому же алгоритму обновить дату последнего платежа. Все это происходит при нажатии на кнопку «Оплатить» и форма направляется на этот скрипт и далее происходит редирект на страницу профиля.

(Отредактировано автором: 26 Апреля, 2013 - 23:48:56)

 
 Top
caballero
Отправлено: 27 Апреля, 2013 - 00:05:15
Post Id


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


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




Цитата:
В таблице пользователей записаны все строки, как баланса, так ID, логин, фамилия, имя, дата последнего платежа. Нужно лишь вычитать из текущего баланса стоимость услуги и обновлять значения в строке баланса и по такому же алгоритму обновить дату последнего платежа. Все это происходит при нажатии на кнопку «Оплатить» и форма направляется на этот скрипт и далее происходит редирект на страницу профиля.

еще раз - как из этого вытекает необходимость выносить имя таблицы и имена полей в переменные вместо записать ее в запросе чтобы нормальный человек (в том числе люди на этом форуме к которым ты обращаешся за помощью ) могли нормально прочитать твой код? я уже не говорю о потенциальных ошибках в запросе не только изза логики а изза того что такая переменная где то окажется непроинициализированной.
ты вообще понимаешь значение слова "переменная" и для чего они служат в программах?


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
jonmodem
Отправлено: 27 Апреля, 2013 - 10:24:39
Post Id



Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Июнь 2011  
Откуда: Москва


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




caballero пишет:
Цитата:
В таблице пользователей записаны все строки, как баланса, так ID, логин, фамилия, имя, дата последнего платежа. Нужно лишь вычитать из текущего баланса стоимость услуги и обновлять значения в строке баланса и по такому же алгоритму обновить дату последнего платежа. Все это происходит при нажатии на кнопку «Оплатить» и форма направляется на этот скрипт и далее происходит редирект на страницу профиля.

еще раз - как из этого вытекает необходимость выносить имя таблицы и имена полей в переменные вместо записать ее в запросе чтобы нормальный человек (в том числе люди на этом форуме к которым ты обращаешся за помощью ) могли нормально прочитать твой код? я уже не говорю о потенциальных ошибках в запросе не только изза логики а изза того что такая переменная где то окажется непроинициализированной.
ты вообще понимаешь значение слова "переменная" и для чего они служат в программах?


dbLogin.php
PHP:
скопировать код в буфер обмена
  1. $tableUsers = "lbrtrz_users";
  2.  
  3. $fieldBalanse = "user_balance";
  4. $fieldPayDay = "user_payday";
  5. $fieldMessages = "user_messages";
  6. $fieldRegistered = "user_registered";
  7.  
  8. $userID = get_current_user_id();
  9. $userPayDay = time();
  10.  
  11. $link = mysql_connect($dbHost, $dbUser, $dbPassw0rd);
  12.  
  13. mysql_select_db($dbName, $link);


PHP:
скопировать код в буфер обмена
  1.         ini_set('display_errors',1);
  2.         error_reporting(E_ALL);
  3.        
  4.         include("dbLogin.php");
  5.  
  6.         $queryBalance = "SELECT $fieldBalanse FROM $tableUsers WHERE id = $userID";
  7.         $requestBalance = mysql_query($queryBalance, $link);
  8.         $resultBalance = mysql_fetch_array($requestBalance);
  9.  
  10.         $queryPayDay = "SELECT $fieldPayDay FROM $tableUsers WHERE id = $userID";
  11.         $requestPayDay = mysql_query($queryPayDay, $link);
  12.         $resultPayDay = mysql_fetch_array($requestPayDay);
  13.  
  14.         if ( $resultBalance[$fieldBalanse] >= 0 ) {
  15.                 $payTake = "UPDATE $tableUsers SET $fieldBalance = $resultBalance[$fieldBalanse] + 20 WHERE id = $userID";
  16.                 $payAsk = mysql_query($payTake, $link);
  17.                 $payAns = mysql_fetch_array($payAsk);
  18.                 echo mysql_error();
  19.         } else {
  20.                 echo "<span>Недостаточно денег</span>";
  21.         }
 
 Top
esterio
Отправлено: 27 Апреля, 2013 - 10:32:41
Post Id



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


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


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




Вы так и не поняли суть вопроса више. Что дает Вам то что вы держите названия полей в переменных?
Если у Вас есть место где может поменятся структура таблиці значит плохо спроектировали. Если Вы просто храните как конфиг - то используете переменные не по их прямому назначению. И да спробуйте испольнить етот код


PHP:
скопировать код в буфер обмена
  1. ini_set('display_errors',1);
  2.  
  3. include("dbLogin.php");
  4.  
  5.  
  6. function getBalance()
  7. {
  8.         $queryBalance = "SELECT $fieldBalanse FROM $tableUsers WHERE id = $userID";
  9.         $requestBalance = mysql_query($queryBalance, $link);
  10.         $resultBalance = mysql_fetch_array($requestBalance);
  11.  
  12.         $queryPayDay = "SELECT $fieldPayDay FROM $tableUsers WHERE id = $userID";
  13.         $requestPayDay = mysql_query($queryPayDay, $link);
  14.         $resultPayDay = mysql_fetch_array($requestPayDay);
  15.  
  16.         if ( $resultBalance[$fieldBalanse] >= 0 ) {
  17.                         $payTake = "UPDATE $tableUsers SET $fieldBalance = $resultBalance[$fieldBalanse] + 20 WHERE id = $userID";
  18.                         $payAsk = mysql_query($payTake, $link);
  19.                         $payAns = mysql_fetch_array($payAsk);
  20.                         echo mysql_error();
  21.         } else {
  22.                         echo "<span>Недостаточно денег</span>";
  23.         }
  24. }
  25.  
  26.  
  27. getBalance();
 
 Top
caballero
Отправлено: 27 Апреля, 2013 - 10:38:06
Post Id


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


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




я тебе написал чтобы ты исправил свою писанину (если не можешь привести весомый аргумент почему имена таблиц и полей в переменных) прежде чем кто то начнет в этом рыться и водить пальцем по всему твоему коду. А ты с тупым упрямством гнешь свое. То ли ты не понимаешь что тебе пишут то ли вообще ничего не понимаешь. Вывод SQL запроса на экран хоть осилил?
(Добавление)
Цитата:
И да спробуйте испольнить етот код

думаю написание функций и область видимости переменных для него тоже неведомая галактика.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
jonmodem
Отправлено: 27 Апреля, 2013 - 13:24:13
Post Id



Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Июнь 2011  
Откуда: Москва


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




caballero пишет:
я тебе написал чтобы ты исправил свою писанину (если не можешь привести весомый аргумент почему имена таблиц и полей в переменных) прежде чем кто то начнет в этом рыться и водить пальцем по всему твоему коду. А ты с тупым упрямством гнешь свое. То ли ты не понимаешь что тебе пишут то ли вообще ничего не понимаешь. Вывод SQL запроса на экран хоть осилил?
(Добавление)
Цитата:
И да спробуйте испольнить етот код

думаю написание функций и область видимости переменных для него тоже неведомая галактика.


Имена таблиц в переменных сделаны для упрощения установки этого дополнения к CMS. Чтобы пользователь изменял только один файл вместо всех. Я в тупике и не знаю что мне делать. Рассчитываю на вашу помощь

(Отредактировано автором: 27 Апреля, 2013 - 13:27:46)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB