Понедельник, 25 Ноября 2024, 18:21

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Система рефералов на PHP
dima9595Дата: Среда, 14 Августа 2013, 11:30 | Сообщение # 1
почти ветеран
Сейчас нет на сайте
Всем доброго времени суток!
Делаю систему рефералов на своём сайте, но почему-то она не работает.

Скрипт регистрации(Где и добавляем реферала):

Код
//Создаём в базе данных нового реферала и даём бонус пригласившему    
$login_ref = $_GET['login'];    
$sql_reg_ref = mysql_query("INSERT INTO ref (login_h, login_j) VALUES ('$login_ref', '$login')");    
if(isset($_GET['login'])){    
if($user_sa['login'] == $_GET['login']){    
$sql_ref_login = mysql_query("UPDATE users SET soul = soul+$engine_a[ref_soul] WHERE login = '$ref_login'");           
}    
else    
{    
$bad = 1;    
$error7 = "Извените, но данного реферала не существует!";    
}    
}    


Не даётся бонус к soul...




Сообщение отредактировал dima9595 - Среда, 21 Августа 2013, 11:40
CreatingOverДата: Среда, 14 Августа 2013, 11:50 | Сообщение # 2
ColdGamedev
Сейчас нет на сайте
Код
$sql_user_ref = mysql_query("UPDATE users SET soul = 'soul'+1 WHERE login='$login_ref'");     

Вместо этого попробуй так:
Код
$sql_user_ref = mysql_query("'soul'+1 WHERE login='$login_ref'");

Update и set вещи плохие - вся работа от них может полететь. На себе испытал. Не выйдет - тогда не знаю, извини.


Я снова с вами:з
Возвращение легенды. (нет)
dima9595Дата: Среда, 14 Августа 2013, 12:08 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
CreatingOver, если я не ошибаюсь, то это не выйдет. Так как "$sql_user_ref" отвечает за таблицу users, а то, что ты написал - не даёт sql запрос в таблицу users...

CreatingOverДата: Среда, 14 Августа 2013, 12:22 | Сообщение # 4
ColdGamedev
Сейчас нет на сайте
Цитата (dima9595)
CreatingOver, если я не ошибаюсь, то это не выйдет. Так как "$sql_user_ref" отвечает за таблицу users, а то, что ты написал - не даёт sql запрос в таблицу users...

В принципе возможно. Но запрос то он отправлять будет, только вот ты его не получишь... Попробуй у себя в старом коде порыться, там ошибка может будет.


Я снова с вами:з
Возвращение легенды. (нет)
dima9595Дата: Среда, 14 Августа 2013, 12:24 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
какой старый код?

VinchensooДата: Среда, 14 Августа 2013, 12:37 | Сообщение # 6
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Код
soul = 'soul'+1

меняем на
Код
'sou'l = 'soul'+1

Это вроде стандарт mysql, может в php и без кавычек можно.

Дай полный код и опиши, что ты хочешь сделать. Я не особо понимаю. Что такое user_sa.


lvovandДата: Среда, 14 Августа 2013, 13:12 | Сообщение # 7
старожил
Сейчас нет на сайте
там уж либо без кавычек, soul = soul+1, либо `soul` = `soul`+1

"Update и set вещи плохие" - это что еще за нонсенс?
mysql_query("'soul'+1 WHERE login='$login_ref'"); - что это вообще такое?


Разработка и продвижение сайтов. Дизайн
pelmenkaДата: Среда, 14 Августа 2013, 14:02 | Сообщение # 8
Драгоценный Тунеядец
Сейчас нет на сайте
Я тут не особо разбирался, но попробуй заменить
Код

$sql_user_ref = mysql_query("UPDATE users SET soul = 'soul'+1 WHERE login='$login_ref'");    

на это:
Код

$sql_user_ref = mysql_query("SELECT `souls` FROM `users` WHERE `login` = '$login_ref'");
$souls = mysql_fetch_row($sql_user_ref);
if($souls[0] == NULL) $souls[0] = 0;
$souls[0]++;
$sql_user_ref = mysql_query("UPDATE `users` SET `soul` = '$souls[0]' WHERE `login` = '$login_ref'");

P.S. Я не проверял на рабочесть.
P.P.S. Конечно, это говнокод и так писать не надо, но это лучше, чем ничего wink

Добавлено (14.08.2013, 14:02)
---------------------------------------------
А вообще весь этот код сводится к тому, что soul может быть NULL


Сталина в каждый дом!

Сообщение отредактировал pelmenka - Среда, 14 Августа 2013, 13:31
dima9595Дата: Пятница, 16 Августа 2013, 16:16 | Сообщение # 9
почти ветеран
Сейчас нет на сайте
lvovand,
Цитата (dima9595)
$sql_user_ref = mysql_query("UPDATE users SET soul = 'soul'+1 WHERE login='$login_ref'");


если пользователь зарегистрировался через реф. ссылку, то в профиле реферала($login_ref - это логин пригласившего), прибавляется +1 к soul.


lvovandДата: Пятница, 16 Августа 2013, 16:32 | Сообщение # 10
старожил
Сейчас нет на сайте
dima9595, речь не про $login_ref, теоретически то понятно откуда она, только следить чтобы непустая была

mysql_query("UPDATE users SET soul = 'soul'+1 WHERE login='$login_ref'"); - здесь одинарные кавычки у названия столбца не нужны

а про запрос
mysql_query("'soul'+1 WHERE login='$login_ref'"); - это не запрос а какой-то бред,
и про непонятки с update и set, с чего вдруг стандартные операторы mysql стали плохими.

у тебя было бы нормально, только либо
mysql_query("UPDATE users SET soul = soul+1 WHERE login='$login_ref'");
или
mysql_query("UPDATE `users` SET `soul` = `soul`+1 WHERE login='$login_ref'");


Разработка и продвижение сайтов. Дизайн

Сообщение отредактировал lvovand - Пятница, 16 Августа 2013, 19:11
dima9595Дата: Пятница, 16 Августа 2013, 17:23 | Сообщение # 11
почти ветеран
Сейчас нет на сайте
Пока ни чего не получается(

lvovandДата: Пятница, 16 Августа 2013, 19:16 | Сообщение # 12
старожил
Сейчас нет на сайте
ничего - понятие широкое слишком, выводи запросы последовательно по одному и выполняй, может у тебя с таблицей что не то, может где-то в переменных или в формировании запроса ошибка

Разработка и продвижение сайтов. Дизайн

Сообщение отредактировал lvovand - Пятница, 16 Августа 2013, 19:31
dima9595Дата: Пятница, 16 Августа 2013, 19:22 | Сообщение # 13
почти ветеран
Сейчас нет на сайте
Всем большое спасибо за помощь...буду искать проблеммы.

TopkoderДата: Вторник, 20 Августа 2013, 03:29 | Сообщение # 14
частый гость
Сейчас нет на сайте
Совет: сразу при первом переходе по реф ссылке загоняй логин в куки.

Добавлено (20.08.2013, 03:29)
---------------------------------------------
И в базу уже с куков записуй

dima9595Дата: Вторник, 20 Августа 2013, 19:50 | Сообщение # 15
почти ветеран
Сейчас нет на сайте
Topkoder, спс...попозже буду разбираться с куками.

pelmenkaДата: Вторник, 20 Августа 2013, 20:34 | Сообщение # 16
Драгоценный Тунеядец
Сейчас нет на сайте
dima9595, попробуй в soul поставить какое-нибудь значение руками

Сталина в каждый дом!
dima9595Дата: Среда, 21 Августа 2013, 11:39 | Сообщение # 17
почти ветеран
Сейчас нет на сайте
Прикол в чём...если закинуть этот-же скрипт в любое место(не в скрипт регистрации), то он будет работать(без переменных, а сразу, введя все данные вручную)...А если в скрипт регистрации, то нет.
И ещё...мне ни кто так и не помог с главным вопросом...почему не добавляются рефералы...

Добавлено (21.08.2013, 11:21)
---------------------------------------------
На счёт добавление рефералов в бд я уже разобрался. Осталось понять почему не прибавляется к soul...

Добавлено (21.08.2013, 11:39)
---------------------------------------------
изменил код добавления soul к пользователю:

Код
$sql_ref_login = mysql_query("UPDATE users SET soul = soul+$engine_a[ref_soul] WHERE login = '$ref_login'");


pelmenkaДата: Среда, 21 Августа 2013, 13:59 | Сообщение # 18
Драгоценный Тунеядец
Сейчас нет на сайте
dima9595, я так понимаю, что тебе нужно что-то вроде этого

Сталина в каждый дом!
dima9595Дата: Среда, 21 Августа 2013, 17:30 | Сообщение # 19
почти ветеран
Сейчас нет на сайте
pelmenka, чуть-чуть не то. soul - это игровая валюта(прошу прощения за позднее объяснение). Я хотел, если пользователь зарегался по реф ссылке, то пригласивший получит +1 к игровой валюте...

pelmenkaДата: Среда, 21 Августа 2013, 17:41 | Сообщение # 20
Драгоценный Тунеядец
Сейчас нет на сайте
так он и так +1 получает

Сталина в каждый дом!
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг