<?
class CUser{
}
class CConnecttoDb{
private $oConnection = null;
public function __construct($sHost = 'localhost', $sLogin = '', $sPassword = '', $sDb ){
$this->oConnection = mysql_connect($sHost,$sLogin,$sPassword);
mysql_select_db($sDb,$this->oConnection);
}
public function addrecord(CUser $User){
$query="insert into $sDb (`number`, `name`, `login`, `password`, `email`, `birthday`) values (null, '".$name."', '".$login."', '".$pass."', '".$email."', '".$date."')";
}
public function updateRecord(CUser $User){
$page = $_GET["id"];
$query= "UPDATE $sDb SET `name` = '".$name."', `login` = '".$login."', `password` = '".$pass."', `email` = '".$email."', `birthday` = '".$date."' WHERE `number` ='$page'";
}
public function deleterecord(CUser $User){
$page = $_GET["id"];
mysql_query("DELETE FROM $sDb WHERE `number` =$page");
}
public function __destruct(){
mysql_close($this->oConnection);
}
}
?>
Спустя 52 минуты, 1 секунда (21.09.2010 - 12:47) Lenarfate написал(а):
а в чем проблема?
Спустя 3 минуты, 45 секунд (21.09.2010 - 12:51) XpertVision написал(а):
Я тут немного нахимичил и вот. Ругается на переменные в функции addrecord
вот сама страница
а вот класс :
вот сама страница
<html>
<head>
<title>Save Edit</title>
</head>
<body>
<h1>SAVE EDIT</h1>
<?
require_once $_SERVER['DOCUMENT_ROOT'].'/CConnecttoDb.php';
$connect = new CConnecttoDb();
$cusers = new CUser();
$cusers->peremnnye();
$connect->__construct();
$name = !empty($_POST['name']) ? $_POST['name'] : '';
$login = !empty($_POST['login']) ? $_POST['login'] : '';
$email = !empty($_POST['email']) ? $_POST['email'] : '';
$pass = !empty($_POST['pass']) ? $_POST['pass'] : '';
$pass1 = !empty($_POST['pass1']) ? $_POST['pass1'] : '';
$day = !empty($_POST['day']) ? $_POST['day'] : '';
$month = !empty($_POST['month']) ? $_POST['month'] : '';
$year = !empty($_POST['year']) ? $_POST['year'] : '';
$page = !empty($_POST['id']) ? $_POST['id'] :'';
if (!$name || !$login || !$email || !$pass || !$pass1 || !$day || !$month || !$year)
{
echo "You have not entered all the required details. Please go back and try again.";
exit;
}
$name = addslashes($name);
$login = addslashes($login);
$email = addslashes($email) ;
$pass = addslashes($pass);
$pass1 = addslashes($pass1);
$day = addslashes($day);
$month = addslashes($month) ;
$year = addslashes($year);
if ($pass!=$pass1)
{
echo "Password incorect.";
exit;
}
$date=$year.'-'.$month.'-'.$day;
$connect->updateRecord();
$connect->__destruct();
echo "USER EDIT SAVE";
?>
</body>
</html>
а вот класс :
<?
/*class CUser{
public function peremnnye (){
global $page;
global $sLogin;
global $sPassword;
$sLogin = 'root';
$sPassword = '12344321';
}
}*/
class CConnecttoDb{
private $oConnection = null;
public function __construct($sHost = 'localhost', $sLogin = 'root', $sPassword = '12344321', $sDb = 'users' ){
$this->oConnection = mysql_connect($sHost,$sLogin,$sPassword);
mysql_select_db($sDb,$this->oConnection);
}
public function addrecord(){
$query="insert into `users` (`number`, `name`, `login`, `password`, `email`, `birthday`) values (null, '".$name."', '".$login."', '".$pass."', '".$email."', '".$date."')";
}
public function updateRecord(){
$query= "UPDATE `users` SET `name` = '".$name."', `login` = '".$login."', `password` = '".$pass."', `email` = '".$email."', `birthday` = '".$date."' WHERE `number` ='$page'";
}
public function deleterecord(){
mysql_query("DELETE FROM `users` WHERE `number` =$page");
}
public function __destruct(){
mysql_close($this->oConnection);
}
}
?>
Спустя 1 час, 32 минуты, 46 секунд (21.09.2010 - 14:23) Lenarfate написал(а):
правильно ругается. они откуда в методе? ты их, получается, с потолка берешь)
Спустя 1 минута, 2 секунды (21.09.2010 - 14:24) Lenarfate написал(а):
передавай их аргументами
public function addrecord($name, $login, $pass, $email, $date){
$query="insert into `users` (`number`, `name`, `login`, `password`, `email`, `birthday`) values (null, '".$name."', '".$login."', '".$pass."', '".$email."', '".$date."')";
}
Спустя 9 минут, 40 секунд (21.09.2010 - 14:34) XpertVision написал(а):
Упс...маленький момент..я перепутал функцию. Ругалось не на addrecord, а на updateRecord(). 
Попробывал только что твой совет на addrecord(). К ошибкам про undefined variable добавилось 6 ошибок - Warning: Missing argument 1(о 1 до 6) for CConnecttoDb::addrecord() . ((

Попробывал только что твой совет на addrecord(). К ошибкам про undefined variable добавилось 6 ошибок - Warning: Missing argument 1(о 1 до 6) for CConnecttoDb::addrecord() . ((
Спустя 7 минут, 18 секунд (21.09.2010 - 14:41) SlavaFr написал(а):
@XpertVision перед тем как ООП программировать не мешало бы в начале в азах ратобратся. Например видеемость переменных и так далее.
Если ты зделаеш как тебе @Lenarfate подсказал, то ошибки не будет, но остается вопрос, что функции addrecord() и updateRecord() собственно делают? кроме как инициализации локальной переменной, я не вижу ни чего
Если ты зделаеш как тебе @Lenarfate подсказал, то ошибки не будет, но остается вопрос, что функции addrecord() и updateRecord() собственно делают? кроме как инициализации локальной переменной, я не вижу ни чего
Спустя 32 секунды (21.09.2010 - 14:42) Lenarfate написал(а):
ну ждет аргументы. ты их передавай туда) ты функцию создал, задал аргументы. а когда вызываешь функцию, передавай нужные переменные в качестве этих аргументов
Спустя 35 минут, 17 секунд (21.09.2010 - 15:17) Mizka написал(а):
1. конструктор и деструктор ненадо вызывать. они сами выполняются.
2. переменные которые ты в базу пытаешься засунуть у тебя пустые... сделай сеттер который будет принимать массив с ними к примеру или передавай переменные методу как аргументы.
2. переменные которые ты в базу пытаешься засунуть у тебя пустые... сделай сеттер который будет принимать массив с ними к примеру или передавай переменные методу как аргументы.
Спустя 1 час, 3 минуты, 32 секунды (21.09.2010 - 16:21) XpertVision написал(а):
Я баран. =) Спасибо все за помощь. Сидел два часа не знал почему не записывает, а оказалось забыл команду - mysql_query($query) or die(mysql_error());
Спустя 1 час, 50 минут, 53 секунды (21.09.2010 - 18:12) XpertVision написал(а):
Мда, проблемы не закончились. Теперь надо с помощью обьекта передать свойства. Но нормальной книги или примера найти не могу. Может еще есть люди которых я не достал и мне еще раз подскажут.)
<?
class CUser{
var $page;
var $name;
var $login;
var $pass;
var $email;
var $date;
public function objects ($number, $name, $login, $pass, $email, $date, $page){
$this->page = $_GET['id'];
$this->name = $_POST['name'];
$this->login = $_POST['login'];
$this->pass = $_POST['pass'];
$this->email = $_POST['email'];
$this->date = $_POST['date'];
}
}
class CConnecttoDb{
private $oConnection = null;
public function __construct($sHost = 'localhost', $sLogin = 'root', $sPassword = '12344321', $sDb = 'users' ){
$this->oConnection = mysql_connect($sHost,$sLogin,$sPassword);
mysql_select_db($sDb,$this->oConnection);
}
public function addrecord($name, $login, $pass, $email, $date){
$query="insert into `users` (`number`, `name`, `login`, `password`, `email`, `birthday`) values (null, '".$name."', '".$login."', '".$pass."', '".$email."', '".$date."')";
mysql_query($query) or die(mysql_error());
}
public function updateRecord($name, $login, $pass, $email, $date, $page){
$query= "UPDATE `users` SET `name` = '".$name."', `login` = '".$login."', `password` = '".$pass."', `email` = '".$email."', `birthday` = '".$date."' WHERE `number` ='$page'";
mysql_query($query) or die(mysql_error());
}
public function deleterecord($page){
mysql_query("DELETE FROM `users` WHERE `number` =$page");
}
/*public function __destruct(){
mysql_close();
}*/
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Delete Users</title>
</head>
<body>
<center><h1>USER DELETE</h1></center>
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/CConnecttoDb.php';
$connect = new CConnecttoDb();
$obj = new CUser();
$connect->deleterecord($obj);
?>
</body>
</html>
Спустя 15 минут, 22 секунды (21.09.2010 - 18:27) Dingo написал(а):
Цитата (XpertVision @ 21.09.2010 - 13:21) |
Я баран. =) |
ты баран уже в том что неправильно проектируешь классы.
Спустя 2 минуты, 44 секунды (21.09.2010 - 18:30) Lenarfate написал(а):
мой тебе совет, друг мой, забудь про ооп пока. рано еще тебе. да здесь это и не нужно
Спустя 1 минута, 58 секунд (21.09.2010 - 18:32) XpertVision написал(а):
Цитата (Lenarfate @ 21.09.2010 - 15:30) |
мой тебе совет, друг мой, забудь про ооп пока. рано еще тебе. да здесь это и не нужно |
В том то и дело что и без этого работает. Но учитель сказал надо и выбора нет. А так пример увижу и хоть разберусь что к чему. (уже не раз так было)
Спустя 9 минут, 2 секунды (21.09.2010 - 18:41) Lenarfate написал(а):
ну так твой учитель должен тогда тебе объяснить, как правильно работать с классами.

Спустя 1 минута, 31 секунда (21.09.2010 - 18:42) XpertVision написал(а):
Там страшная методика и в добавок дистанционное обучение. Мне фактически далли ссылку на php.su и сказали в каком разделе читать. Маловато этого для ООП.
Спустя 15 минут, 45 секунд (21.09.2010 - 18:58) Lenarfate написал(а):
Спустя 3 минуты, 20 секунд (21.09.2010 - 19:01) Dingo написал(а):
XpertVision если уже немного знаешь php то Метт Зандстра тебе в помощь, тут на форуме есть книжка в эл. варианте, хотя думаю лучше тебе сначала разобраться с основами.
Спустя 2 часа, 17 минут, 4 секунды (21.09.2010 - 21:18) XpertVision написал(а):
Спсибо за советы и ссылки. Попробую разобратся.)
Спустя 2 часа, 29 минут, 56 секунд (21.09.2010 - 23:48) Mizka написал(а):
XpertVision, действительно почитай о основах ооп.
свойства объекту можно передавать при его создании, собственно в конструкторе, а так же задавать дефолтные параметры в том же конструкторе... можно обойтись без твоего метода objects... хотя сеттеры тоже полезные
свойства объекту можно передавать при его создании, собственно в конструкторе, а так же задавать дефолтные параметры в том же конструкторе... можно обойтись без твоего метода objects... хотя сеттеры тоже полезные
Спустя 12 часов, 49 минут, 13 секунд (22.09.2010 - 12:37) XpertVision написал(а):
Практически решил задание. Остался лишь один момент. Есть класс
PHP страница на которую он подключается примает значения (которые я раньше присваивал этим переменным с помощью $_GET() и $_POST()), а теперь мне нужно что бы они сразу принимались в в переменные в класе. Как?) Пробывал по разному...ноль реакции. Если есть возможность то покажите готовый кусок кода, я по примеру лучше пойму чем по ссылке.) Буду благодарен.
class CUser{
var $page;
var $name;
var $login;
var $pass;
var $email;
var $date;
}
PHP страница на которую он подключается примает значения (которые я раньше присваивал этим переменным с помощью $_GET() и $_POST()), а теперь мне нужно что бы они сразу принимались в в переменные в класе. Как?) Пробывал по разному...ноль реакции. Если есть возможность то покажите готовый кусок кода, я по примеру лучше пойму чем по ссылке.) Буду благодарен.
Спустя 9 минут, 51 секунда (22.09.2010 - 12:47) Lenarfate написал(а):
удали этот класс)
Спустя 11 минут, 31 секунда (22.09.2010 - 12:59) XpertVision написал(а):
Я уже его переписал.) Сейчас немного его доделаю и выложу на обсуждение.) (как приятно будет услышать про себя "быдлокодер"))))
Спустя 14 минут, 29 секунд (22.09.2010 - 13:13) Dingo написал(а):
Цитата (XpertVision @ 22.09.2010 - 09:59) |
Я уже его переписал.) Сейчас немного его доделаю и выложу на обсуждение.) |
Лучше этого не делать.