Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Пишу реферальную систему для phpbb. Помогите советом (https://forum.antichat.xyz/showthread.php?t=74500)

NApoleonchik 21.06.2008 18:33

Пишу реферальную систему для phpbb. Помогите советом
 
Пишу реферальную систему для ПхпБб.

Пишу на пхп + мускул

Принцип заключаеться в чем. Когда зарегеный пользователь приводит по уник ссылке нового пользователя он получает + 1 поинт. ссылка выглядит примерно так

сайт.ру/индекс.пхп?123

Создал доп таблицу в мускуле :


CREATE TABLE `phpbb_points` (
`user_id` int(11) NOT NULL,
`username` text NOT NULL,
`userpoints` int(11) NOT NULL,
`ip` text NOT NULL,
`time` time NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;


PHP код:

<?
include("config.php");

$id mysql_escape_string($_SERVER['QUERY_STRING']);

if (!
is_numeric($id) || strlen($id) == 0) echo"Error!";
else {
        
$login=mysql_fetch_array(mysql_query("SELECT user_id, username FROM phpbb_users WHERE id='".$id."'"));

        if (!empty(
$login['user'])) {

                
$ip=GetEnv("REMOTE_ADDR");
                
$now=time();

     
$res=mysql_fetch_array(mysql_query("SELECT `user_id` FROM php_points where ip='".$ip."' AND time>$now-86400"));
     
$col=mysql_fetch_array(mysql_query("SELECT count(*) as count FROM php_points where id='".$id."' AND time>$now-86400"));

     if (
$col['count']<=50) {
                        if (empty(
$res['user_id'])) {
    
                        
mysql_query("INSERT INTO php_points values ('".$login['user_id']."','$ip','$now')");
                        
mysql_query("UPDATE php_points set points=points+1 where id='".$login['user_id']."'");


            
                        }
                }
        
        }
       
mysql_close($link);

        
$host=GetEnv("HTTP_HOST");
        
Header("Location: http://$host/");

}
?>

Где-то ошибка. Не заполняеться база. Помогите кто может. Буду ооочень благодарен :confused:

scrat 21.06.2008 18:41

а где у тебя в скрипте mysql_connect/mysql_select_db?

NApoleonchik 21.06.2008 18:45

Файл конфиг пхп
PHP код:

<?php


// phpBB 2.x auto-generated config file
// Do not change anything in this file!

$dbms 'mysql';

$dbhost 'localhost';
$dbname 'db';
$dbuser 'user';
$dbpasswd 'pass';

$table_prefix 'phpbb_';

define('PHPBB_INSTALLED'true);

?>

а насчет селект ДБ, подскажите если не трудно куда прописать и как примерно должен выглядеть скрипт

scrat 21.06.2008 18:56

PHP код:

mysql_connect($dbhost,$dbuser,$dbpasswd);
mysql_select_db($dbname); 

и во всех операциях с таблицей перед именем таблицы ставь $table_prefix

NApoleonchik 21.06.2008 19:01

спасибо =) +1

NApoleonchik 21.06.2008 19:23

всеравно что-то нетак, попробуйте ктонить у кого есть пхпББ пожалуйста. Сделал так

PHP код:

<?
include("config.php");


mysql_connect($dbhost,$dbuser,$dbpasswd
mysql_select_db($dbname);  


$id mysql_escape_string($_SERVER['QUERY_STRING']);

if (!
is_numeric($id) || strlen($id) == 0) echo"Error!";
else {
        
$login=mysql_fetch_array(mysql_query("SELECT user_id, username FROM phpbb_users WHERE id='".$id."'"));

        if (!empty(
$login['user'])) {

                
$ip=GetEnv("REMOTE_ADDR");
                
$now=time();

     
$res=mysql_fetch_array(mysql_query("SELECT `user_id` FROM phpbb_points where ip='".$ip."' AND time>$now-86400"));
     
$col=mysql_fetch_array(mysql_query("SELECT count(*) as count FROM php_points where id='".$id."' AND time>$now-86400"));

     if (
$col['count']<=50) {
                        if (empty(
$res['user_id'])) {
    
                        
mysql_query("INSERT INTO php_points values ('".$login['user_id']."','$ip','$now')");
                        
mysql_query("UPDATE php_points set points=points+1 where id='".$login['user_id']."'");


            
                        }
                }
        
        }
       
mysql_close($link);

        
$host=GetEnv("HTTP_HOST");
        
Header("Location: http://$host/");

}
?>

Помогите сделать пожалуйста :( :confused:

NApoleonchik 21.06.2008 19:38

up! Может кто знает есть ли где готовый скрипт или получиться дописать этот - буду очень благодарен

scrat 22.06.2008 00:46

PHP код:

mysql_connect($dbhost,$dbuser,$dbpasswd

- скобку забыл

Solker 22.06.2008 02:48

В первом сообщении ты сказал что создал таблицу под именем "phpbb_points".
Но в самом скрипте при выборке или вставке в таблицу используешь альтернативное название "php_points".

Вероятно тебе надо определится с названием и закрыть скобку в 4-ой строчке.

mysql_close($link); Я полагаю, это не просто так в конце стоит.
Замени 4 и 5 строчку, на
PHP код:

$link mysql_connect($dbhost,$dbuser,$dbpasswd); 
$link mysql_select_db($dbname); 

и для красоты:
PHP код:

== 0) echo"Error!"

Поставь пробел после echo.

GreenBear 22.06.2008 02:53

ставь хотя бы or print mysql_error() после mysql_query(), раз пхпббешный класс для работы с бд не юзаешь. может там где ошибка - смотри.

NApoleonchik 22.06.2008 15:29

:mad:

NApoleonchik 22.06.2008 15:35

Всем спасибо но еще не все, следовал вашим советом, ставил пхп-редактор в нем пробовал - не то. Все равно база не заполняется.

Структура таблиці `phpbb_points`
--

Цитата:

CREATE TABLE `phpbb_points` (
`user_id` int(11) NOT NULL,
`username` text NOT NULL,
`userpoints` int(11) NOT NULL,
`ip` text NOT NULL,
`time` time NOT NULL,
KEY `user_id` (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
вот проапгрейдженый код:

PHP код:

<html>

<head>
  <title></title>
</head>

<body>

<?
include("config.php");

$link mysql_connect($dbhost,$dbuser,$dbpasswd);
$link mysql_select_db($dbname);

$id mysql_escape_string($_SERVER['QUERY_STRING']);

if (!
is_numeric($id) || strlen($id) == 0)  echo "Error!";
else {
        
$login=mysql_fetch_array(mysql_query("SELECT user_id, username FROM phpbb_users WHERE user_id='".$id."'"));

        if (!empty(
$login['username'])) {

                
$ip=GetEnv("REMOTE_ADDR");
                
$now=time();

     
$res=mysql_fetch_array(mysql_query("SELECT `user_id` FROM phpbb_points where ip='".$ip."' AND time>$now-86400"));
     
$col=mysql_fetch_array(mysql_query("SELECT count(*) as count FROM phpbb_points where user_id='".$id."' AND time>$now-86400"));

     if (
$col['count']<=50) {
                        if (empty(
$res['user_id'])) {

                        
mysql_query("INSERT INTO phpbb_points values ('".$login['user_id']."','$ip','$now')");
                        
mysql_query("UPDATE phpbb_points set userpoints=userpoints+1 where user_id='".$login['user_id']."'");



                        }
     }

        }

mysql_close($link);

        
$host=GetEnv("HTTP_HOST");
        
Header("Location: http://$host/");

}
?>

</body>

</html>


попробуйте пожалуйста ктонить у себя поставить - может разберетесь, я уже 3-тий день с ним имею половую жизнь :confused: :rolleyes:

scrat 22.06.2008 16:10

попробуй все свои mysql_query заменить на следующее:
PHP код:

if(!mysql_query( ... )) echo mysql_error(); 


Solker 22.06.2008 16:24

И за компанию
PHP код:

error_reporting(E_ALL); 

в начало.

И собственно ошибки в студию.

NApoleonchik 24.06.2008 17:02

народ извините сейчас времени нету. Практика все-таки.... Если кто может пожалуйста потестируйте скрипт как подсказали господа solker и scrat

NApoleonchik 25.06.2008 19:50

АП! кто может еще подсказать?


Время: 22:48