• Не правильно работает код php?

    @viktorross Автор вопроса
    AUser0, сейчас посмотрел, действительно подставляется id баннера а не пользователя, как исправить понятия не имею, и там(users) и там(banners) все по id идентифицируется..
  • Не правильно работает код php?

    @viktorross Автор вопроса
    AUser0, вот вызов функции addHit

    case 'banner':
    		require_once $config_abs_path."/classes/banners.php";
    		$id = get_numeric_only("id");
    		$banner=new banners();
    		$banner->addHit($id);
    	break;
  • Не правильно работает код php?

    @viktorross Автор вопроса
    AUser0, кстати, если вот сюда поставить соответствующий id в бд например 2, то в таблицу class_click запишется email из id 2, т.е все будет работать корректно

    require_once $config_abs_path."/classes/users.php";
    $email=users::getEmail($id='2');
  • Не правильно работает код php?

    @viktorross Автор вопроса
    AUser0, и все-таки вероятно нет авторизации в файле banners, также как и в файле users, авторизация идет при передаче в шаблон, получается у меня в классах идут запросы в базу, а для какого именно пользователя уже передается из других файлов перед выводом в шаблон, я нашел такой код

    class banners {
    
    // used in files which don't run the common() function from util.php but need auth information
    function checkAuth() {
    
    require_once $config_abs_path."/classes/auth.php");
    
    	global $is_admin, $logged_in, $crt_usr;
    	$auth=new auth();
    	$logged_in = $auth->loggedIn();
    	$is_admin = $auth->adminLoggedIn();
    	if(!$logged_in && !$is_admin)
    		$logged_in = $auth->checkCookieLogin();
    
    	// vars for user account navbar
    	if($logged_in) $crt_usr = $auth->crtUserId();
    
    }


    и весь код переложил в один класс banners

    function addHit($id=0) {
    		global $db,$config_abs_path;
    		if(!$id) $id=$this->id;
    		$res_del=$db->query('update '.TABLE_BANNERS.' set `clicks` = `clicks`+1 where `id`="'.$id.'"');
    
    		require_once $config_abs_path."/classes/users.php";
    		$email=users::getEmail($id);
    
    		$email=$db->query("insert into `class_click` set `email` = '$email'");
    
    		return 1;
    	}
    
    }


    результат тот же самый, первый email из базы записывает, не подскажете как в addHit подключить авторизацию через функцию checkAuth?

    если подключить ее, то должно все заработать, потому что в самом классе banners нет авторизации, так как он предназначен только для вывода баннеров, которым без разницы есть авторизация или нет
  • Не правильно работает код php?

    @viktorross Автор вопроса
    AUser0, вот тут присваивается внутри класса banners

    public function __construct($id=0)
    	{
    
    		global $db;
    		$this->path="../images/baners/";
    		if($id) {
    			$this->id=$id;
    			$this->array=array();
    			$this->array=$db->fetchAssoc('select * from '.TABLE_BANNERS.' where `id`='.$id);
    		}
    	}
    
    	function getId() {
    		return $this->id;
    	}


    может быть как раз внутри класса banners нужно авторизоваться перед подключением?

    require_once $config_abs_path."/classes/users.php";
        $email=users::getNEmail($id);
        return 1;


    хотя в самом /classes/users.php уже есть авторизация, вероятно она не работает когда вызов идет из другого файла, хотя фактически внутри класса banners идет только вызов, а обработка и запись уже внутри класса users.

    Хотя обычно у меня авторизация идет перед тем, как выводить данные в шаблон, вот так

    global $logged_in, $crt_usr;
    
    $usr = new users();
    $user = $usr->getUser($crt_usr);
    $smarty->assign("user",$user);
    
    ну или вот так
    
    $auth = new auth();
    $last_login=$auth->getLoginBefore($logged_in);
    $total_views = listings::getViewed($crt_usr);


    я пробовал сделать тоже самое в нужных файлах внутри классов, просто без вывода в шаблон, но не работает..
  • Не правильно работает код php?

    @viktorross Автор вопроса
    AUser0 , вы имеете ввиду там где id=0? А как можно дописать , как вообще это можно оформить по-другому?
  • Не правильно работает код php?

    @viktorross Автор вопроса
    VicTHOR, 2 запроса (addHit и getEmail) уже были для других целей, я их просто подключил к новому getNEmail
  • Не правильно работает код php?

    @viktorross Автор вопроса
    VicTHOR, вот эта функция получает email авторизованного пользователя

    class users {
    static function getEmail($id='') {
    
        global $db;
        if(!$id) return;
        $email=$db->fetchRow('select email from '.TABLE_USERS.' where id="'.$id.'"');
        return $email;
      }


    вот эти 2 функции при вызове должны записать email этого пользователя в другую таблицу

    class banners {
      function addHit($id=0) {
        global $db,$config_abs_path;
        if(!$id) $id=$this->id;
        $res_del=$db->query('update '.TABLE_BANNERS.' set `clicks` = `clicks`+1 where `id`="'.$id.'"');
    
        require_once $config_abs_path."/classes/users.php";
        $email=users::getNEmail($id);
        return 1;
      }
    }
    
    function getNEmail($id) {
    
        global $db;
        $email=users::getEmail($id);
        $db->query("insert into `class_click` set `email` = '$email'");
      }


    мне нужно каждый раз записывать email пользователя вызывавшего функцию addHit в таблицу, нужно чтобы смотреть кто и на что нажимает на сайте, суть в том что все это работает, но почему-то записывается не email того кто авторизовался, а просто email первого id в базе

    можно авторизоваться этой функцией, но как ни крутил это все, результат тот же
    global $is_admin, $logged_in, $crt_usr;
    	$auth=new auth();
    	$logged_in = $auth->loggedIn();
    	$is_admin = $auth->adminLoggedIn();
    	if(!$logged_in && !$is_admin)
    		$logged_in = $auth->checkCookieLogin();
    
    	// vars for user account navbar
    	if($logged_in) $crt_usr = $auth->crtUserId();
    
    }
  • Не правильно работает код php?

    @viktorross Автор вопроса
    VicTHOR, она получает email из бд, но не текущего пользователя, а просто первый по id в базе, и записывает уже это значение в другую таблицу, т.е получается это происходит без авторизации пользователя
  • Как сделать запись в 2 таблицы mysql?

    @viktorross Автор вопроса
    Дмитрий Тарасов, стоп, есть все равно проблема, он почему-то записывает не id пользователя, а просто email из первого id базы

    хотя он подключается к методу users, в котором уже запущена сессия
  • Как сделать запись в 2 таблицы mysql?

    @viktorross Автор вопроса
    Дмитрий Тарасов, все сделал вот так, спасибо большое за помощь)

    function addHit($id=0) {
    		global $db;
    		if(!$id) $id=$this->id;
    		$res_del=$db->query('update '.TABLE_BANNERS.' set `clicks` = `clicks`+1 where `id`="'.$id.'"');
    		require_once "users.php";
    		$email=users::getEmail($id);
    		//$email=escape($str);
    		//var_dump('INSERT INTO `class_click`(`email`) VALUES ('. $email .')');
    		$res_insert=$db->query("insert into `class_click` set `email` = '$email'");
    		return 1;
    	}
  • Как сделать запись в 2 таблицы mysql?

    @viktorross Автор вопроса
    Дмитрий Тарасов, так ничего не выводит, открывается как обычно страница, никаких ошибок или предупреждений
  • Как сделать запись в 2 таблицы mysql?

    @viktorross Автор вопроса
    Дмитрий Тарасов, сделал, ни ошибок ни предупреждений нет..
  • Как сделать запись в 2 таблицы mysql?

    @viktorross Автор вопроса
    Дмитрий Тарасов, исправил, теперь говорит ошибок и предупреждений нет, но и запись не появляется в бд

    function addHit($id=0) {
    		global $db;
    		if(!$id) $id=$this->id;
    		$res_del=$db->query('update '.TABLE_BANNERS.' set `clicks` = `clicks`+1 where `id`="'.$id.'"');
    		require_once "users.php";
    		$email=users::getEmail($id);
    		$res_insert=$db->query('INSERT INTO `class_click`(`email`) VALUES ('. $email .')');
    		return 1;
    	}


    может быть в $email передает пустое значение? потому что если вместо него вставить что любой текст запись создается в бд

    есть какие-нибудь варианты сначала преобразовать в текст а потом это записать в бд?
  • Как сделать запись в 2 таблицы mysql?

    @viktorross Автор вопроса
    Дмитрий Тарасов, там еще случайно папку не правильно написал, но все равно не работает

    вот ошибка

    [09-Nov-2019 22:59:22 Europe/Berlin] PHP Warning:  require_once(/classes/users.php): failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/test/classes/banners.php on line 50
    [09-Nov-2019 22:59:22 Europe/Berlin] PHP Fatal error:  require_once(): Failed opening required '/classes/users.php' (include_path='.:/Applications/XAMPP/xamppfiles/lib/php') in /Applications/XAMPP/xamppfiles/htdocs/test/classes/banners.php on line 50


    вот код

    function addHit($id=0) {
    
    		global $db;
    		if(!$id) $id=$this->id;
    		$res_del=$db->query('update '.TABLE_BANNERS.' set `clicks` = `clicks`+1 where `id`="'.$id.'"');
    		require_once "/classes/users.php";
    		$email=users::getEmail($id);
    		$res_insert=$db->query('INSERT INTO `class_click`(`email`) VALUES ('.$email.')');
    		return 1;
    	}
  • Как сделать запись в 2 таблицы mysql?

    @viktorross Автор вопроса
    Дмитрий Тарасов вот так кстати еще пробовал сейчас

    function addHit($id=0) {
    
    		global $db;
    		if(!$id) $id=$this->id;
    		$res_del=$db->query('update '.TABLE_BANNERS.' set `clicks` = `clicks`+1 where `id`="'.$id.'"');
    		global $config_abs_path;
    		require_once $config_abs_path."/class/users.php";
    		$email = users::getEmail();
    		$res_insert = $db->query('INSERT INTO `class_click`(`email`) VALUES ('. $email .')');
    		return 1;
    	}


    ошибки не показывает но и записи новой нет
  • Как сделать запись в 2 таблицы mysql?

    @viktorross Автор вопроса
    Дмитрий Тарасов Вы знаете как это сделать чтобы работало? у меня все что я делал выходило с ошибками, либо без ошибок, но записи в таблице не появлялось
  • 3000 записей в htaccess, можно ли?

    @viktorross Автор вопроса
    xmoonlight , а как это сделать?
  • Как вывести цикл в smarty?

    @viktorross Автор вопроса
    Сергей Кирьянов, он у меня почему-то не работает
  • Как в smarty удалить все кроме цифр?

    @viktorross Автор вопроса
    SerJook спасибо огромное)