Перейти к содержимому

Фото
- - - - -

Вопрос по PHP ООП


  • Вы не можете создать новую тему
  • Please log in to reply
12 ответов в этой теме

#1 motorov

motorov
  • Пользователь
  • 109 сообщений
  • Откуда:с Луны

Отправлено 01 Март 2011 - 00:50

Есть функция в классе.

public function select($a,$b,$c)
{

$result = Array();
$q = mysql_query("select ".$a." from .".$this->prefix."_$b. $c", $this->link );

if ($q != '')
while ($row = mysql_fetch_assoc($q))
{
array_push($result,$row);
}
unset($a);
unset($<img src='https://forum.ee/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />;
unset($c);
unset($q);

return $result;

И передаётся сюда

$res = $db->select('*','foodbase','where .price_eu. limit 20');


Вопрос как изменить функцию select чтобы

вместо limit 20 можно было бы писать 20

Спасибо.

P.S.

Вариант c ошибкой


public function select($a,$b,$c,$d)
{

$result = Array();
$q = mysql_query("select ".$a." from .".$this->prefix."_$b. $c Limit $d", $this->link );

if ($q != '')
while ($row = mysql_fetch_assoc($q))
{
array_push($result,$row);
}
unset($a);
unset($<img src='https://forum.ee/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />;
unset($c);
unset($q);
unset ($d);

return $result;

Сообщение изменено: motorov (01 Март 2011 - 00:54 )

  • 0
hérisson dans le brouillard

#2 еть.

еть.
  • Постоялец
  • 2 655 сообщений

Отправлено 01 Март 2011 - 02:45

попробуй
...
$q = mysql_query("select {$a} from {$this->prefix}_{$b} {$c} LIMIT {$d}", $this->link );
...

$res = $db->select('*','foodbase','where price_eu > 0', 20);

а вообще - стиль и написание жесть.

Сообщение изменено: еть. (01 Март 2011 - 02:47 )

  • 0

– Совсем худо, – заключил хозяин, – что-то, воля ваша, недоброе таится в мужчинах, избегающих вина, игр, общества прелестных женщин, застольной беседы. Такие люди или тяжко больны, или втайне ненавидят окружающих.


#3 motorov

motorov
  • Пользователь
  • 109 сообщений
  • Откуда:с Луны

Отправлено 01 Март 2011 - 07:53

еть. ты себе противоречишь в коде

$q = mysql_query("select {$a} from {$this->prefix}_{$b} {$c} [b] LIMIT {$d}", $this->link );

$res = $db->select('*','foodbase','where price_eu > 0', 20);

Может быть так?

$res = $db->select('*','foodbase','where price_eu > 0', '20');

Сообщение изменено: motorov (01 Март 2011 - 07:56 )

  • 0
hérisson dans le brouillard

#4 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 01 Март 2011 - 09:56

Это не ООП :)
  • 0

#5 Tum

Tum
  • Пользователь
  • 540 сообщений

Отправлено 01 Март 2011 - 17:11

Все плохо.
Перепиши заново. Называй переменные нормальными именами. Если тебе уж так хочется использовать unset (непонятно только зачем), передавай ему агрументы, а не аргумент http://php.net/manua...ction.unset.php
Тему тоже можно было нормально назвать.
По теме: дебаж свой запрос и смотри что получилось.
  • 0

#6 motorov

motorov
  • Пользователь
  • 109 сообщений
  • Откуда:с Луны

Отправлено 01 Март 2011 - 21:47

Все плохо.
Перепиши заново. Называй переменные нормальными именами. Если тебе уж так хочется использовать unset (непонятно только зачем), передавай ему агрументы, а не аргумент http://php.net/manua...ction.unset.php
Тему тоже можно было нормально назвать.
По теме: дебаж свой запрос и смотри что получилось.

Зачем? если они используются только для этой функции и никакой глобальности не несут...
  • 0
hérisson dans le brouillard

#7 Tum

Tum
  • Пользователь
  • 540 сообщений

Отправлено 02 Март 2011 - 00:47

Не быть тебе хорошим программером если ты не можешь логично прокомментировать пост. На какую его часть ты ответил?

Сообщение изменено: Tum (02 Март 2011 - 00:47 )

  • 0

#8 motorov

motorov
  • Пользователь
  • 109 сообщений
  • Откуда:с Луны

Отправлено 02 Март 2011 - 02:05

Немного переделал

$q = mysql_query("select {$a} from {$this->prefix}_{$b} {$c} LIMIT {$d},{$e}", $this->link );

$res = $db->select('*','foodbase','where .price_eu.', '0','10');

  • 0
hérisson dans le brouillard

#9 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 02 Март 2011 - 10:24

Немного переделал

$q = mysql_query("select {$a} from {$this->prefix}_{$b} {$c} LIMIT {$d},{$e}", $this->link );

$res = $db->select('*','foodbase','where .price_eu.', '0','10');

Переделай уж так :)
$res = $db->select('SELECT * FROM #foodbase where price_eu ??? LIMIT 0, 10');

  • 0

#10 motorov

motorov
  • Пользователь
  • 109 сообщений
  • Откуда:с Луны

Отправлено 02 Март 2011 - 22:13

Сет так будет неудобно на слово Limit ^_^
  • 0
hérisson dans le brouillard

#11 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 02 Март 2011 - 23:55

Сет так будет неудобно на слово Limit ^_^

Лимит не так часто нужен :) а если надо будет чуть изменить запрос (усложнить), то придётся делать новый метод. Намного больше пользы будет, если ты вернёшь объект - обёртку для результата запроса чтобы получилось в итоге

$result = $database->execute( "SELECT * FROM tablename WHERE a=?", 3 ); // a = 3

while ( $row = $result->fetchAssoc() )
{
}

либо более "продвинуто"

foreach ( $result as $row )
{
}

  • 0

#12 еть.

еть.
  • Постоялец
  • 2 655 сообщений

Отправлено 03 Март 2011 - 00:12

еть. ты себе противоречишь в коде

$q = mysql_query("select {$a} from {$this->prefix}_{$b} {$c} [b] LIMIT {$d}", $this->link );

$res = $db->select('*','foodbase','where price_eu > 0', 20);

Может быть так?

$res = $db->select('*','foodbase','where price_eu > 0', '20');

это где это я себе противоречу в коде? о_О
  • 0

– Совсем худо, – заключил хозяин, – что-то, воля ваша, недоброе таится в мужчинах, избегающих вина, игр, общества прелестных женщин, застольной беседы. Такие люди или тяжко больны, или втайне ненавидят окружающих.


#13 alx4ever

alx4ever
  • Пользователь
  • 169 сообщений
  • Откуда:Tallinn, Estonia

Отправлено 07 Март 2011 - 20:32

мда)) ну и код) жеесть
clas DB {
public static function getAll($sql,$offset,$limit) {...}

public static function row($sql) {...}
}
// затем

DB::getAll('SELECT * FROM '.DB_PREFIX.'tablename',0,20);
вот так вот надо
  • 0

Аjaxel CMS, Фреймворк тоже.