[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP+OOП+MySQL
XpertVision
Помогите написать класс. Есть база users, таблица users, домен localhost и пользователь root с паролем 12344321. Нужно еследать клас так что бы одна функция в нем подключала базу, а остальные три (одна добавляла запись, втроая редактировала, третья удаляла.) есть небольшой фундамент.


<?
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(). user posted image

Попробывал только что твой совет на 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() собственно делают? кроме как инициализации локальной переменной, я не вижу ни чего


Спустя 32 секунды (21.09.2010 - 14:42) Lenarfate написал(а):
ну ждет аргументы. ты их передавай туда) ты функцию создал, задал аргументы. а когда вызываешь функцию, передавай нужные переменные в качестве этих аргументов

Спустя 35 минут, 17 секунд (21.09.2010 - 15:17) Mizka написал(а):
1. конструктор и деструктор ненадо вызывать. они сами выполняются.
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 написал(а):
ну так твой учитель должен тогда тебе объяснить, как правильно работать с классами. wink.gif

Спустя 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... хотя сеттеры тоже полезные

Спустя 12 часов, 49 минут, 13 секунд (22.09.2010 - 12:37) XpertVision написал(а):
Практически решил задание. Остался лишь один момент. Есть класс


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)
Я уже его переписал.) Сейчас немного его доделаю и выложу на обсуждение.)

Лучше этого не делать.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.