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

Реферальная программа Мегаплана

Партнерская программа Kredov

Ничего не выводится после вызова метода

#11 html-ka

html-ka
  • Пользователь
  • 455 сообщений
  • Репутация: 82
0

Отправлено 04 Апрель 2013 - 18:19

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

набросал на коленке, вот так можно попробовать :) не проверял на работоспособность, но думаю смысл понятен

при условии:
1. что данные методы вызываются на странице, где в адресной строке есть что-то login=nickname
2. что поле с именем файла аватара пустое, если он не загружен
3. логин уникален

<?php
public function selAssoc() {
$login = /* тут какая-нибудь обработка GET-данных */($_GET['login']);
// формируем sql - запрос
	$sql = "
			SELECT `ava_name` FROM `avatars`
			WHERE `us_login` = '".$login."' AND `status` = ".2;
	$result = mysql_query($sql) or die(mysql_error());
// проверяем, что в бд есть одна единственная запись, отвечающая нашим условиям
	if(mysql_num_rows($result) == 1){
// если да получаем имя файла аватарки
		$date = mysql_fetch_assoc($result);
  $ava = $date['ava_name'];
	}  
	else {
// если нет получаем имя пустой аватарки
		$ava = "sys-images/no-avatar.gif";
	}
// возвращаем имя аватарки
   return $ava;
}
public function selAva() {
// получаем имя аватарки
$ava = $this->selAssoc();
// формируем путь к аватарки
if (!empty($ava)) {
$src = "avatars/".$ava;
}
// если мистическим образом ничего не вернулось, формируем путь к пустой аватарке
else {
$src = "sys-images/no-avatar.gif";
}
return $src;
}
?>

  • 0

#12 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 04 Апрель 2013 - 20:01

добавь такое

print_r($ava);
и посмотри , что есть в массиве

пока все, что могу посоветовать

в функции не получилось добавить то, что вы сказали, так функция обрывается и не срабатывает. я добавил в этом месте
<div id="user_info_p2">
	 <?php
	 $ava1 = "SELECT id, ava_name FROM avatars WHERE us_login = {$_GET['login']} AND status = 2";
	  echo $ava1;
	  $ava2 = $us_info->selAssoc("avatars", "id, ava_name", "us_login = ".$_GET['login']." AND status = 2");
	  print_r($ava2);
	  ?>
	  <img src="../party/<?php echo $us_info->selAva(); ?>">
у меня выдало во это SELECT id, ava_name FROM avatars WHERE us_login = alex AND status = 2 и это Unknown column 'alex' in 'where clause'. В общем я понял что ошибка в том, что не существует колонка alex, но колонка то называется us_name. не пойму до сих пор в чем ошибка
запрос выполнил в phpmyadmin тоже выдало - #1054 - Unknown column 'alex' in 'where clause'
  • 0

#13 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 04 Апрель 2013 - 20:34

WHERE us_login = alex

ну что же ты, у тебя ж строковая величина, тоесть должно быть
WHERE us_login = 'alex'

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

и еще. Предыдущие знатоки тебе написали об уязвимости $_GET

почитай о функции mysql_real_escape_string, а для целочисленных значений можно просто intval()
  • 0

#14 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 04 Апрель 2013 - 20:34

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

ничего не изменилось, та же ошибка вылезает. если айди вместо логина использовать, тогда в адресной строке два параметра передавать - и логин, и айди? так вообще можно делать?
  • 0

#15 html-ka

html-ka
  • Пользователь
  • 455 сообщений
  • Репутация: 82

Отправлено 04 Апрель 2013 - 20:45

WHERE us_login = 'alex'


правильнее WHERE `us_login` = 'alex'
  • 0

#16 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 04 Апрель 2013 - 20:49

ничего не изменилось, та же ошибка вылезает.


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

$ava1 = "SELECT id, ava_name FROM avatars WHERE us_login = '{$_GET['login']}' AND status = 2";
или вот такой
$ava1 = "SELECT id, ava_name FROM avatars WHERE us_login = '".$_GET['login']."' AND status = 2";

а если с айди, то запрос будет вот такой
$ava1 = "SELECT id, ava_name FROM avatars WHERE id = {$_GET['id']} AND status = 2";
  • 0

#17 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 04 Апрель 2013 - 20:49

правильнее WHERE `us_login` = 'alex'

я уже и status в одинарные кавычки взял, все равно не помогает WHERE 'us_login' = '{$_GET['login']}' AND 'status' = 2
  • 0

#18 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 04 Апрель 2013 - 20:53

$ava1 = "SELECT id, ava_name FROM avatars WHERE us_login = '{$_GET['login']}' AND status = 2";

или

$ava1 = "SELECT id, ava_name FROM avatars WHERE us_login = '".$_GET['login']."' AND status = 2";
  • 0

#19 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 04 Апрель 2013 - 20:53

isvetlichniy, оба пробовал, не работают


  • 0

#20 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 04 Апрель 2013 - 20:55

а status он не в одинарных должен быть, если уж по стандартам, status надо обрамлять знаками апострофа `status` , на находится там где буква ё, только на англ. раскладке

оба пробовал, не работают


что выводится в запросе, какой он?
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru