[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: какприсвоить одной переменной имена нескольких
zsm
Коллеги программисты, опять нужна мне ваша подсказка. Поможете ?
Проблема в том что я не знаю как загнать в одну переменную имена нескольких переменных что бы потом их использовать в “do { } while”

Вот к примеру мне надо в переменную $z_print загнать
$z_print = "$myrow['name'],$myrow['id']";

То есть много имен других переменных.

вот мой пример что я делал и не получилось:

class Zapros
{
public $t_print;
public $z_print;

public function dowhile ($t_print,$z_print)
{
do
{
printf("$t_print",$z_print);
}
while($this->myrow=mysql_fetch_array($result));
}
}


$t_print = "<div><p><b>Имя:</b> %s </p>ID :%s</div>";
$z_print = "$myrow['name'],$myrow['id']";

$obj = new Zapros;
$obj->dowhile($t_print,"$z_print");



Здесь весь вопрос в том что бы сделать универсальность, я тут запросил на вывод две переменные $z_print = "$myrow['name'],$myrow['id']";
А если мне теперь надо три или десять: $z_print = "$myrow['name'],$myrow['id'] ],$myrow['data']";
$t_print = "<div><p><b>Имя:</b> %s </p>ID :%s</div>";
$z_print = "$myrow['name'],$myrow['id']";

$obj = new Zapros;
$obj->dowhile($t_print,"$z_print");
[/php]




Спустя 3 часа, 23 минуты, 36 секунд (14.11.2010 - 16:14) Sanchopansa написал(а):
Блин.. ну это же полный бред.. как такое вообще можно писать?

не проще передать масив с данными $myrow и при выводе нормально подставить переменные?
Я правда не понимаю что ты хочешь тут сделать но отвечу твоим примером!
class Zapros 
{
public $t_print;
public $z_print;

public function dowhile ($t_print,$z_print)
{
do
{
printf("$t_print",$z_print['name'], $z_print['id']);
}
while($this->myrow=mysql_fetch_array($result));
}
}


$t_print = "<div><p><b>Имя:</b> %s </p>ID :%s</div>";
$z_print = "$myrow['name'],$myrow['id']";

$obj = new Zapros;
$obj->dowhile($t_print,$myrow);


еще скажу сразу что у тебя так работать не будет.. потому в твоем методе класса dowhile не выполняется сам запрос.. а следовательно и переменной $result - НЕТ! Посему твой do while цикл выполниться только 1 раз!

ЗЫЖ Я блин скоро буду громко материться на эти цыклы do while... и на Поповых и других тем более
Нада использовать цыкл while .. между этими двумя цыклами большая разница!

Спустя 7 минут, 37 секунд (14.11.2010 - 16:21) linker написал(а):
Вопрос, откуда вот здесь
while($this->myrow=mysql_fetch_array($result);
взялось $result?
Второе, правильный цикл
while(myrow=mysql_fetch_array($result))
{
}
class Zapros 
{
public function dowhile ($result)
{
while($this->myrow = mysql_fetch_assoc($result))
{
echo '<div><p><b>Имя:</b> ' . $this->myrow['name'] . ' </p>ID :' . $this->myrow['id'] . '</div>';
}
}
}


...
$result = mysql_query("...");
$obj = new Zapros;
$obj->dowhile($result);

Спустя 1 час, 51 минута, 49 секунд (14.11.2010 - 18:13) twin написал(а):
Какой ужас...
Неужели попов еще и ООП взялся преподавать... Это же надо до такого додуматься
class Zapros

для чего класс то?

Спустя 9 минут, 29 секунд (14.11.2010 - 18:23) Sanchopansa написал(а):
twin
Походу класс для коасса smile.gif а имя Zapros это первое что в голову прийшло...

ЗЫЖ ПРостите за оффтоп.. неудержался smile.gif

Спустя 1 час, 5 минут, 11 секунд (14.11.2010 - 19:28) sergeiss написал(а):
А я вот тоже не понял.

Вот пишется умная мысль
Цитата (Sanchopansa @ 14.11.2010 - 17:14)
Блин.. ну это же полный бред.. как такое вообще можно писать?

и тут же следом идет расписывание дебильного (для данного случая) цикла do-while.

Sanchopansa - ты не прав smile.gif Давай дневник, двойку поставлю!

Спустя 3 часа, 9 минут, 33 секунды (14.11.2010 - 22:37) zsm написал(а):
Цитата (Sanchopansa @ 14.11.2010 - 13:14)
Блин.. ну это же полный бред.. как такое вообще можно писать?

не проще передать масив с данными $myrow и при выводе нормально подставить переменные?
Я правда не понимаю что ты хочешь тут сделать но отвечу твоим примером!
class Zapros 
{
public $t_print;
public $z_print;

public function dowhile ($t_print,$z_print)
{     
do
  {
  printf("$t_print",$z_print['name'], $z_print['id']);
  }
  while($this->myrow=mysql_fetch_array($result));
}
}


$t_print = "<div><p><b>Имя:</b> %s </p>ID :%s</div>";
$z_print = "$myrow['name'],$myrow['id']";

$obj = new Zapros;
$obj->dowhile($t_print,$myrow);


еще скажу сразу что у тебя так работать не будет.. потому в твоем методе класса dowhile не выполняется сам запрос.. а следовательно и переменной $result - НЕТ! Посему твой do while цикл выполниться только 1 раз!

ЗЫЖ Я блин скоро буду громко материться на эти цыклы do while... и на Поповых и других тем более
Нада использовать цыкл while .. между этими двумя цыклами большая разница!

Конечно извиняюсь что задаю глупые вопросы, но вы не поняли что я хочу сделать.
во-первых отвечу на вопрос откуда взялась $myrow, это переменная из вне класса,
если так не будит работать то я конечно это исправлю.
Но вопрос был не в том!
Тут вы написали сделать так
 printf("$t_print",$z_print['name'], $z_print['id']);

А если мне теперь надо обратиться к этому методу и уже не с двумя переменными ",$z_print['name'], $z_print['id']
,а уже надо три или пять. ? как сделать?
Я хотел сделать универсальный метод.

Спустя 11 минут, 55 секунд (14.11.2010 - 22:49) Nord написал(а):
Цитата

А если мне теперь надо обратиться к этому методу и уже не с двумя переменными ",$z_print['name'], $z_print['id']
,а уже надо три или пять. ? как сделать?
Я хотел сделать универсальный метод.


Передать $myrow['name'],$myrow['id'] массивом и использовать вместо prinf() функцию vprintf()

Спустя 6 минут, 18 секунд (14.11.2010 - 22:56) zsm написал(а):
Цитата (Nord @ 14.11.2010 - 19:49)

Передать $myrow['name'],$myrow['id'] массивом и использовать вместо prinf() функцию vprintf()

$myrow и есть масив, что то не понимаю как это сделать, а можно примерчик?

Спустя 6 минут, 30 секунд (14.11.2010 - 23:02) zsm написал(а):
Люди!
Вопрос в том что я один раз написал так
$t_print = "<div><p><b>Имя:</b> %s </p>ID :%s</div>";
$z_print = "$myrow['name'],$myrow['id']";

$obj = new Zapros;
$obj->dowhile($t_print,"$z_print");



А потом мне надо написать так
Вопрос в том что я один раз написал так
$t_print = "<div><p><b>Имя:</b> %s </p>ID :%s</div> дата: %s , количество %s";
$z_print = "$myrow['name'],$myrow['id'] ,$myrow['data'], $myrow['col']";

$obj = new Zapros;
$obj->dowhile($t_print,"$z_print");

А потом может и десять переменных надо будит вывеси.
потому так как написали вы не получиться !
printf("$t_print",$z_print['name'], $z_print['id']);


Спустя 15 минут, 44 секунды (14.11.2010 - 23:18) Nord написал(а):
Цитата

$myrow и есть масив, что то не понимаю как это сделать, а можно примерчик?


В первом приближении как-то так:

class Zapros {
public function dowhile ($t_print,$z_print) {
$keys = array_flip($z_print);
while ($row = mysql_fetch_assoc($result)){
vprintf($t_print, array_intersect_key($row, $keys));
}
}
}


$t_print = "<div><p><b>Имя:</b> %s </p>ID :%s</div> дата: %s , количество %s";
$z_print = array('name', 'id', 'data', 'col');
$obj = new Zapros;
$obj->dowhile($t_print, $z_print);

Спустя 52 минуты, 52 секунды (15.11.2010 - 00:11) zsm написал(а):
Цитата (Nord @ 14.11.2010 - 20:18)

В первом приближении как-то так:

class Zapros {
public function dowhile ($t_print,$z_print) {
$keys = array_flip($z_print);
while ($row = mysql_fetch_assoc($result)){
vprintf($t_print, array_intersect_key($row, $keys));
}
}
}


$t_print = "<div><p><b>Имя:</b> %s </p>ID :%s</div> дата: %s , количество %s";
$z_print = array('name', 'id', 'data', 'col');
$obj = new Zapros;
$obj->dowhile($t_print, $z_print);

мда.. не понимаю я =( и не работает оно

Спустя 50 минут, 15 секунд (15.11.2010 - 01:01) Sanchopansa написал(а):
sergeiss
Сори.. я так увлекся этим супер скриптом что забыл поменять этот цыкл...
А дневник я дома забыл smile.gif

Спустя 4 минуты, 7 секунд (15.11.2010 - 01:05) Sanchopansa написал(а):
Nord
Цитата
class Zapros {
    public function dowhile ($t_print,$z_print) {
        $keys = array_flip($z_print);
        while ($row = mysql_fetch_assoc($result)){
            vprintf($t_print, array_intersect_key($row, $keys));
        }
    }
}

$t_print = "<div><p><b>Имя:</b> %s </p>ID :%s</div> дата: %s , количество %s";
$z_print = array('name', 'id', 'data', 'col');
$obj = new Zapros;
$obj->dowhile($t_print, $z_print);

а где тут нарисовалась переменная $result?

Спустя 10 часов, 31 минута, 53 секунды (15.11.2010 - 11:37) zsm написал(а):
Цитата (Sanchopansa @ 14.11.2010 - 22:05)
а где тут нарисовалась переменная $result?

Да, может и $result не попадает из другого метода этого класса в этот метод dowhile, я не знаю
все это я делал так:
<?php class Zapros 
{

public $myrow;
public $polya;
public $table;
public $gde;
public $ravno;
public $parameter;

public function qwerty ($polya,$table,$gde,$ravno)

{
$result=mysql_query("SELECT $polya FROM $table WHERE $gde='$ravno'");
if(!$result)
{
echo "<p> Запрос не может быть исполнен напишите пожалуйста об этом администратору</p>";
exit(mysql_error());
}
if(mysql_num_rows($result) > 0)
{
$this->myrow=mysql_fetch_array($result);
}
else {echo "<p>Нет текста для этой страницы</p>";}
}

public function printes($parameter)

{
echo $this->myrow[$parameter];
}
public $t_print;
public $z_print;
public function dowhile ($t_print,$z_print)
{
$keys = array_flip($z_print);
while ($row = mysql_fetch_assoc($result))
{
vprintf($t_print, array_intersect_key($row, $keys));
}
}

}

$obj = new Zapros;
$obj->qwerty("*","page","st","index");
$obj->printes("title");
$obj->printes("meta_k");

$t_print = "<div><p><b>Имя:</b> %s </p>ID :%s</div> дата: %s , количество %s";
$z_print = array('name', 'id', 'data', 'col');
$obj->dowhile($t_print, $z_print);

?>

Спустя 11 часов, 36 минут, 37 секунд (15.11.2010 - 23:13) Nord написал(а):
Цитата (Sanchopansa)

а где тут нарисовалась переменная $result?

Ну, у автора в певроначальной функции $result тоже появляется внезапно, я думал, он уже знает, откуда она берется и подправит сам smile.gif

to zsm
1) Сделать $result полем класса
2) Обращаться к нему через $this->
3) Удалить класс как бессмысленный и ненужный

Спустя 46 минут, 19 секунд (16.11.2010 - 00:00) Sanchopansa написал(а):
Nord
Цитата
1) Сделать $result полем класса

Не полем класса а свойством wink.gif

zsm
как сказал Nord
Цитата
1) Сделать $result полем свойством класса
2) Обращаться к нему через $this->

Спустя 5 минут, 33 секунды (16.11.2010 - 00:05) Sanchopansa написал(а):
ОФФТОП:
Я так понимаю что имя метода qwerty это тоже последствия ПОповых?
Потому как я понял это по мнению автора типа тоже самое что и QUERY
zsm
http://translate.google.com/#en|ru|query
Видишь что означает это слово? получается глупо.. учитывая что класс называется Zapros

Спустя 12 часов, 1 минута, 47 секунд (16.11.2010 - 12:07) Nord написал(а):
Цитата (Sanchopansa)

Не полем класса а свойством

Это всего лишь название http://ru.wikipedia.org/wiki/Поле_класса smile.gif
Быстрый ответ:

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