X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

5 страниц V   1 2 3 4 5 >
Открыть тему
Тема закрыта
> Ничего не выводится после вызова метода
Kuchuluk
Kuchuluk
Topic Starter сообщение 2.4.2013, 22:04; Ответить: Kuchuluk
Сообщение #1


вывожу аватар пользователя, используя два метода, первый метод он общий для выборки из таблицы базы
public function selAssoc($tb_name,$field,$where) // такая же ф-ция выборки из базы когда нужно вручную указывать параметр поиска возвращает массивом
{
  if (isset($where))
  {
   $query = "SELECT ".$field." FROM ".$tb_name." WHERE ".$where;
   $result = mysql_query($query) or die("".mysql_error());
   $data=array(); // объявляем массив
   for($i = 0; $i < mysql_num_rows($result); $i++)
   {
    $row = mysql_fetch_assoc($result);
    $data[]=$row;
   }
   return $data;
  }
  else
  {
   $query = "SELECT ".$field." FROM ".$tb_name;
   $result = mysql_query($query) or die("".mysql_error());
   for($i = 0; $i < mysql_num_rows($result); $i++)
   {
    $row = mysql_fetch_row($result);
    $data[]=$row;
   }
   return $data;
  }
}

второй метод выбирает конкретную аватарку, исходя из логина пользователя и формирует строку для тега img
public function selAva() // ф-ция для выбора аватарки - либо своей, если есть, либо системной (если нет своей)
{
  $ava = $this->selAssoc("avatars", "id, ava_name", "us_login = ".$_GET['login']." AND status = 2");
  if (!empty($ava))
  {
   $src = "avatars/".$ava[0]["id"].$ava[0]["ava_name"];
  }
  else
  {
   $src = "sys-images/no-avatar.gif";
  }
  return $src;
}

работу второго метода вывожу в теге
<div id="user_info_p2">
      <img src="../party/<?php echo $us_info->selAva(); ?>">
      <?php
      if (isset($link_profile))
      {echo "<br>".$link_profile;}
      ?>
     </div>

но после тега <div id="user_info_p2"> ничего в браузер не выводится. Сначала во втором методе я выбирал аватар по id пользователя, который находится в $_SESSION['id'] и все работало, но потом переделал, чтобы логин брался из массива GET, и началось. Ошибок никаких не выдает, а просто ничего не выводится. В чем может быть дело?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
isvetlichniy
isvetlichniy
сообщение 2.4.2013, 22:30; Ответить: isvetlichniy
Сообщение #2


оно и не будет работать
$_GET['login']

это что такое? откуда ты берешь этот параметр?

вот в этой статье можешь почитать что такое GET и POST
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
html-ka
html-ka
сообщение 3.4.2013, 15:57; Ответить: html-ka
Сообщение #3


дамп данных сделай и посмотри что там
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
isvetlichniy
isvetlichniy
сообщение 3.4.2013, 19:27; Ответить: isvetlichniy
Сообщение #4


чтобы логин брался из массива GET, и началось.

чтобы логин выводился из этого массива, он должен там быть, тоесть в адресной строке он должен быть. всегда

например, http://yoursite.com?login=somelogin
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 3.4.2013, 20:08; Ответить: Kuchuluk
Сообщение #5


он там и так есть, как я по вашему тогда попадаю на страницу профиля пользователя? по его логину, который в $_GET["login"]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
isvetlichniy
isvetlichniy
сообщение 3.4.2013, 22:09; Ответить: isvetlichniy
Сообщение #6


как то все у тебя запутанно получается, я бы рекомендовал испоьлзовать не логин, а айди

ну давай попробуем потестить вместе
1. Посмотрим, какой запрос отправляется в базу. В функции selAssoc после того как ты определишь запрос в базу, то есть после строчки
$query = "SELECT ".$field." FROM ".$tb_name." WHERE ".$where;

добавь
echo $query;

в результате запрос будет показан в браузере, выполни его в phpmyadmin и посмотри что возвращается

2. Функция selAva , после того, как получишь значение, после строчки
$ava = $this->selAssoc("avatars", "id, ava_name", "us_login = ".$_GET['login']." AND status = 2");

добавь такое
print_r($ava);

и посмотри , что есть в массиве

пока все, что могу посоветовать
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
html-ka
html-ka
сообщение 4.4.2013, 6:47; Ответить: html-ka
Сообщение #7


[member=Kuchuluk], мой тебе совет, бросай ты ООП, а лучше выучи хорошо для начала процедерное программирование, судя по коду ты даже в мануал не заглядывал :mellow: навскидку:

вот это зачем передавать в selAva?
$ava = $this->selAssoc("avatars", "id, ava_name", "us_login = ".$_GET['login']." AND status = 2");


дальше без слез не посмотришь, практически классическая sql-injection
"us_login = ".$_GET['login']."


а это что?
for($i = 0; $i < mysql_num_rows($result); $i++)


масло маслянное
    $row = mysql_fetch_assoc($result);
    $data[]=$row;
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 4.4.2013, 9:51; Ответить: fedornabilkin
Сообщение #8


Ошибки у ТС конечно ужасные, но это не повод давать плохие рекомендаици.
[member=html-ka], если критикуешь, то следом давай уже и пиши как надо сделать правильно.
Например обработать данные из $_GET строковыми функциями (экранировать спецсимволы, удалить теги и т.д.)
for($i = 0; $i < mysql_num_rows($result); $i++)

так действительно делать нехорошо, потому что количество запросов будет равно количеству строк, поэтому лучше сначала подсчитать количество строк, присвоить значение переменной и сравнивать в цикле с переменной.
$num_rows = mysql_num_rows($result);
for($i = 0; $i < $num_rows; $i++)

Например вот так.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
html-ka
html-ka
сообщение 4.4.2013, 12:39; Ответить: html-ka
Сообщение #9


Ошибки у ТС конечно ужасные, но это не повод давать плохие рекомендаици.

и чем же они плохи?

fedornabilkin, если критикуешь, то следом давай уже и пиши как надо сделать правильно :mellow:

так действительно делать нехорошо, потому что количество запросов будет равно количеству строк, поэтому лучше сначала подсчитать количество строк, присвоить значение переменной и сравнивать в цикле с переменной.

Например вот так.
$num_rows = mysql_num_rows($result);
for($i = 0; $i < $num_rows; $i++)

а чем твое решение лучше ТС?

Походу собирается клуб нелюителей оф.документации :)

А чем вам while не угодил?

Причем в первом условии цикл вообще не нужен, если логин является уникальным

if (isset($where))

это тоже очень странная конструкция, она всегда будет объявлена и не пустая, исходя из этого $ava = $this->selAssoc("avatars", "id, ava_name", "us_login = ".$_GET['login']." AND status = 2");
вторая часть условия вообще будет не нужна
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 4.4.2013, 14:11; Ответить: fedornabilkin
Сообщение #10


[member=html-ka], я же написал, что правильно и выгодно сделать один запрос к бд и получить количество записей, а не обращаться каждый раз, с каждой итерацией.
while конечно же удобнее, но почему-то мне кажется тут вообще цикл не нужен.
Если надо получить аватар пользователя, то и получаем один аватар, т.е. делаем запрос по айди или логину.
А если надо вывести список аватаров, то тогда уже циклы и тот же while. Но я думаю это обычная процедура и написание метода для класса вобще неуместно.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
5 страниц V   1 2 3 4 5 >
Открыть тему
Тема закрыта
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) После обновления в декабре 2020 года просела органика с Гугла?
25 pozitron123 2978 6.3.2021, 16:56
автор: Starpony
Открытая тема (нет новых ответов) После обновления all in one seo pack пропал keywords?
16 pozitron123 1468 24.2.2021, 15:13
автор: kozak199110
Открытая тема (нет новых ответов) После переноса сайт на DLE перестал корректно работать
Ищу того, кто может помочь заново все верно настроить
6 mr_LasVegas 883 20.7.2020, 20:52
автор: asd4
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыAdobe muse: Не могу разместить нужный мне код сразу после Body
0 Evg82 1324 20.6.2020, 10:24
автор: Evg82
Открытая тема (нет новых ответов) Ссылки после статейного прогона не заходят в индекс
7 Vmir 1325 4.3.2020, 10:51
автор: autonew


 



RSS Текстовая версия Сейчас: 12.5.2021, 10:21
Дизайн