Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Куда "исчезло" значение


Автор: Serebrus 26.1.2009, 14:37
Привет всем.

Есть такой код:
Код

$a='';

...

function ShowField($sid)
{
 global $a;
 $qr=mysql_query("SELECT `name` FROM `alltexnika` WHERE `id`=".$sid.";");
 if($r=mysql_fetch_array($qr, MYSQL_NUM))
 {
  echo "<td><font>".$r[0]."</font></td>";        
  $a=$r[0];        
 }        
}

...//здесь вызывается функция ShowField

echo $a; //пустое значение


Подскажите, где есть ошибка?

Автор: awers 26.1.2009, 14:41
а может лучше сделать в функции вместо $a=$r[0]; - return $r[0]; ?

Автор: Serebrus 26.1.2009, 15:00
awers, я хотел "выстрелить две кролика одним выстрелом": первое, взять с помощю функции
Цитата(Serebrus @  26.1.2009,  14:37 Найти цитируемый пост)
echo "<td><font>".$r[0]."</font></td>";

это нужно только в одном месте (и один раз), и второе, иметь возможность использования значения $a не "беспокоя" функцию, а в твоем случае всегда надо вызывать функцию, когда можно только лиш написать, ну допустим echo $a;

Автор: awers 26.1.2009, 15:04
на сколько я понимаю 
Код

function ShowField($sid)
{
 $qr=mysql_query("SELECT `name` FROM `alltexnika` WHERE `id`=".$sid.";");
 if($r=mysql_fetch_array($qr, MYSQL_NUM))
 {
  echo "<td><font>".$r[0]."</font></td>";        
  return $r[0];        
 }        
}

$a = ShowField(123);


 smile 

Автор: pizzz 26.1.2009, 15:11
Вариантов масса. Предлагаю для начала поставить после запроса echo mysql_error(); И посмотреть а вобще выполняеться ли блок в котором $a обретает значение

Автор: Serebrus 26.1.2009, 15:11
awers, кажется ты не понил меня. я хотел присваивая значение $r[0] к $a, использовать его (т.е. $a) в любом месте после вызова функции, а если я поступлу как ты говариш, будет лищнее обращение на БД всегда когда я напишу $a = ShowField(123); Типерь ты понил меня?

Автор: awers 26.1.2009, 15:13
не. это ты не понял )) в том месте где тебе надо вывести данные функцией пишешь не просто вызов онной, а с присваиванием переменной. после этого уаля - твоя переменная готова и данные выведены )

just try

Автор: pizzz 26.1.2009, 15:19
awers, Вы имеете в виду так:

Код

<?php echo $a = func ($q); ?>


Добавлено через 2 минуты и 56 секунд
А чтобы небыло дублирующихся обращений в функции так:

function func () {
    static $a;
    if ($a != "") return $a;
    // Код получения $a
}

Автор: awers 26.1.2009, 15:23
pizzz, не
Я предложил
Код

$a = func($q); // это выведет результат выполнения функции и вернет нужное значение, присвоив $a
....

echo $a ....


Добавлено через 1 минуту и 36 секунд
и какие еще дублирующие функции. у него как я понял только 1 раз вызывается функция. одно присвоение. все норм. пусть попробует

Автор: pizzz 26.1.2009, 15:31
Цитата(Serebrus @  26.1.2009,  15:11 Найти цитируемый пост)
будет лищнее обращение на БД всегда когда я напишу $a = ShowField(123);


Цитата(awers @  26.1.2009,  15:23 Найти цитируемый пост)
и какие еще дублирующие функции. у него как я понял только 1 раз вызывается функция. одно присвоение. все норм. пусть попробует



Вобщем я Вас правильно понял  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)