Перешел к изучению ООП на php и поставил себе задачу написать класс, который регистрировал бы пользователя в бд. Собственно, мне нужно передать значения суперглобального массива POST в свойства класса, чтобы класс мог оперировать ими в своем методе, как я понимаю. Буду благодарен за дельные советы и поправки (только "разжуйте", если можно) Код (PHP): <?php $dbc = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL."); $logg = $_POST['logg']; $pass = $_POST['pass']; class registration { public $log = $_POST['logg']; protected $sql_create_table = 'CREATE TABLE USERS (Login char(30) NOT NULL, Password char(30) NOT NULL);' ; protected $sql_insert = 'INSERT INTO USERS VALUE "$logg", "$pass"'; public function __construct() { if($dbc) { if(!mysql_query($sql_create_table)) { mysql_query($sql_create_table); mysql_query($sql_insert); } else{ mysql_query($sql_insert); } } } } $user = new registration; ?>
Нравятся мне такие вопросы. При чём здесь $_POST и ООП? Работа с суперглобальными переменными из метода класса не меняется. Вообще, методы класса - это, по сути, самые обычные функции, со скрытым параметром $this
Лучше всего привыкать к ООП на примере уже существующих классов. Например, использовать объектный интерфейс MySQLi, вместо функций mysql_.
Появилось немного свободного времени - решил доделать код, но наткнулся на проблему, которую не знаю как решить из-за слабых знаний. Ниже представленный код вызывает ошибку Код (Text): <?php $host = '**************'; $user = '*********************'; $pswd = '********'; $dbc = mysql_connect($host, $user, $pswd) or die("i can't connected to mysql"); class registration { protected $sql_create_table = 'CREATE TABLE USERS (Login char(30) NOT NULL, Password char(30) NOT NULL);' ; protected $sql_insert = 'INSERT INTO USERS VALUE "$logg", "$pass"'; public function __construct($logg, $pass) { $logg = $_POST['logg']; $pass = $_POST['pass']; if($dbc) { if(!mysql_query($sql_create_table)) { mysql_query($sql_create_table); mysql_query($sql_insert); } else{ mysql_query($sql_insert); } } } } $user = new registration; ?>
Что? Уфф, что-то странно творится: неделю назад там была другая ошибка, а сейчас я не проверив нечего выдал то, что было тогда. Интересно... Добавлено спустя 11 минут 20 секунд: на этот код выдает ошибку, в чем проблема? Код (Text): <?php $host = '31.170.165.121'; $user = 'u815731020_admin'; $pswd = 'ddtzet210797'; $dbc = mysql_connect($host, $user, $pswd) or die("i can't connected to mysql"); class registration { protected $sql_create_table = 'CREATE TABLE USERS (Login char(30) NOT NULL, Password char(30) NOT NULL);' ; protected $sql_insert = 'INSERT INTO USERS VALUE "$logg", "$pass"'; public function __construct($logg, $pass) { $logg = $_POST['logg']; $pass = $_POST['pass']; if($dbc) { if(!mysql_query($sql_create_table)) { mysql_query($sql_create_table); mysql_query($sql_insert); } else{ mysql_query($sql_insert); } } } } $user = new registration; ?> Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on '31.170.165.121' (111 "Connection refused") in /home/u815731020/public_html/newEmptyPHP.php on line 6 акк на хостингере.ком.юа, вроде все правильно вписано :/
Проверяйте адрес сервера, проверяйте порты, пароли. Напишите на хостинг, если всё правильно, но не соединяет. Доступ к базе по IP - это требование хостера? этот IP физически другого компьютера? Если другого, у mysql должна быть настройка, разрешающая удалённый доступ
Со многими. Если честно, ip мне не разу не предлагали указывать для соединения. Чаще всего localhost, иногда что-то типа bbb.mysql. Ganzal, вы не согласны, что проблема ТС в установке соединения? Я вижу, что mysql-сервер его посылает подальше, предполагаемые варианты - данные для соединения неверно указаны, mysql неверно настроена.
Ну ок, буду знать. Но в любом случае, я дал правильный, и, как мне кажется, единственно возможный совет ТС - проверить данные соединения, и если всё 100% правильно, писать хостеру
ты только что выложил логин и пароль Добавлено спустя 16 секунд: и даже IP Добавлено спустя 2 минуты 33 секунды: пингуется Добавлено спустя 1 минуту 6 секунд: пингуется) Добавлено спустя 9 минут 12 секунд: а базу выбираешь в которую запись делаешь? Добавлено спустя 12 минут:
Еще возможен факт что mysql на хосте уже не работает, по этому только mysqli Попробуй разными подключиться, получится ли?
чушь какая. а что ему тогда сообщает что попытка подключения завершилась сообщением "Connection refused" от сервера? святый духъ?
Ну хотя да. Что-то я не туда посмотрел =) Что-то тут с доступами владельцем файлами походу. Нет? И разве канает так делать? Код (PHP): $dbc = mysql_connect($host, $user, $pswd) or die("i can't connected to mysql"); class registration { public function __construct($logg, $pass) { if($dbc) { Как класс видит $dbc переменную? Что-то тут накосили по жесткой. Блин попробуй без классов и всего подключиться к базе. Чтобы переменные были в одной области-видимости.
Так конечно не канает, но у ТС выполнение до коструктора просто не доходит. А так, в конструкторе надо global $dbc; прописывать
нет. идет подключение к серверу с некоторой аккредитацией на что сервер принимает решение отказать в подключении. скорее всего в настройках сервера не разрешено подключение с внешнего интерфейса и/или конкретного ип. ибо если бы не было гранта для пары юзер-хост ошибка выглядела иначе.