Привет! написал довольно скудный класс, осваивая ООП, но что-то идёт не так, хотя и работает: PHP: <?php class Inquest { public $up; function __Construct() { $this->up=$n; } public function add() { print"<form method='POST'>"; print"Вопрос:<input type=text size=45 maxsize=45 name='question'><br>"; print"Ответ:<textarea cols=33 rows=16 name='answer'>"; print"</textarea> <input type=submit value='Отправить'></form>"; } public function add_q($answer,$question) { $link=mysql_connect("localhost","root","1234"); mysqL_select_db("mybd",$link); $i=$this->up+1; $query="INSERT INTO quest VALUES($i,'$answer','$question')"; mysql_query($query,$link)or print mysql_error(); return true; } } $n= new Inquest(); $n->add(); if (isset($_POST['question'],$_POST['answer'])) { $m=$n->add_q($_POST['question'],$_POST['answer']); if ($m==true) {print "Ok!";} else {print "No";} } phpinfo(32); ?> Вот вроде всё работает, но при каждом обновлении в браузере, когда просматриваю, он добавляет ноую запись в БД, как этого избежать и можно ли всё это выполнять в одной функции, а не в двух как я сделал, и если возможно как это организуется? Спасибо.
Это не ООП, это дерьмо собачье. Мало того, что непонять откуда в конструкторе взята переменная $n, так ещё и метод add до неприличия дибилен и ничерта полезного не делает. Задача ООП в АБСТРАКЦИИ, а то, что вы делаете — это вообще нельзя назвать ООП.
ни шутя... ну почти ооп, ну дерьмо... ну да с конструктором я конечно не ошибся, но там просто она так была, PHP: <?php __construct($n) { $this->up=$n; } ?> вот... не все ж такие вумные как вы тут... +1 я и спросил как туда добавить add_q, чтобы всё вполне номрально работало...
Михаил То, что вы написали — это не ООП. На таких примерах ООП не учат, учтите. Дам абстрактный пример, который ничего не делает, но демонстрирует кое какие принципы: PHP: <?php class Inquest { protected $up; /** * Конструктор изменяет значение закрытого члена */ public function __construct($some_arg) { if(intval($some_arg) < -3) $this->up = (int) $some_arg; } /** * Добавление какого-либо контента */ public function Add($content) { // Проверка if(!$this->up) throw new Exception("Cannot add content"); if(($mysql = Allocate::GetActiveLink())) { $this->AddQuery($content); } } }; ?>
Спасибо Apple Сказал спасибо, просмотрел совет... суперглобально и классно абстрактно! Ещё раз спасибо.