не получается создать класс

EugeneZ

Новичок
не получается создать класс

Уже пару дней изучаю ООП. Написал класс dropdownlist. Суть класса, брать значения из базы данных и помещать их в dropdownlist. Опыта очень мало, и разобраться не получается. Помогите пожалуйста.

<?php
// Klass dlja droplistov
class droplist
{
var $droplist;
var $select_name;
var $query;
var $option_val;
var $option_name;
// funktisja construktora
function droplist($droplist,$select_name,$query,$option_val,$option_name)
{
// Assign values to member variables
$this->droplist = '';
$this->select_name = $select_name;
$this->query = $query;
$this->option_val = $option_val;
$this->option_name = $option_name;
}
//funktsija dropist
function builder()
{
$this->droplist .= <<<EOD
<SELECT NAME='$this->select_name'>
EOD;
$mysqli = new mysqli("localhost","Eugene20","awsqde321","hermes");
$mysqli->query("SET NAMES cp1251");
$query = ("$this->query")or die ("Couldn’t execute query.");
$result = $mysqli->query($query);
while ($row = mysqli_fetch_assoc($result)) {
extract($row);
$this->droplist .= <<<EOD
<option value='$this->option_val'>$this->option_name</option>
EOD;
}
$this->droplist .= <<<EOD
</select>
EOD;
}
//class configuration
function display()
{
$droplist = $this->droplist;
// Call the builder() method
$this->builder();
return $droplist;
}
}
// Instantiate the page class
$webPage = new droplist('customerid','SELECT Customerid,Customer FROM Customers','Customerid','Customer');
// Add something to the body of the page
// Display the page
echo $webPage->display();
?>


при запуске скрипта, получаю следующее.

Warning: Missing argument 5 for droplist::droplist(), called in C:\xampp\htdocs\php\oop1.php on line 50 and defined in C:\xampp\htdocs\php\oop1.php on line 11

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\php\oop1.php on line 30
 

dimagolov

Новичок
EugeneZ, во-первых не нужно уже конструктор объявлять идентично имени класса, есть слово __construct
ну и посчитай, где у тебя Missing argument 5, посмотри почему $result у тебя boolean (т.е. FALSE) а не mysqli_result
 

Santiago

Новичок
Лучше изучать классы все же стоит на 5й версии пхп, чем на 4й.
Или не на пхп ;)
 

Alexandre

PHPПенсионер
это синтаксис 4й версии пхп - а пхп - у тебя какой верcии?
да, верно не объявлен конструктор...
для 4-ки: function droplist(){...}
для 5-ки public function __constr(){...}
 

EugeneZ

Новичок
Я делал скрипт по книжке, которая была издана в 2003 году, поэтому спасибо ребята за поправку.
Ну все же я его запустил в этом виде, но новая проблема появилась. <option value='$this->option_val'>$this->option_name </option>
там у меня вместо имен клиентов, выдает Customer. тоесть, он не из запроса ставит туда имя, а из переменной.
Если кто сталкивался с такой проблемой, хелп =)
 

Dl

Новичок
+
тоесть, он не из запроса ставит туда имя, а из переменной.
которая является именем поля, значение которого надо взять из результата запроса.
 
Сверху