[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Аномалии в php =) в пустой строке count выдаёт 1
planetary
Вобщем-то никаких явных ошибок нету, но есть какое-то недопонимание...
Вот мой код:
<?php
error_reporting( E_ALL & E_STRICT );
include ("blocks/db.php");
session_start();
if (!isset($_SESSION['username']))
{
header("Location: enter.php?sit=1");
}
$login = $_SESSION['username'];

$get_sql_people = mysql_query("SELECT * FROM peoples WHERE login = '$login' ",$db) or die (mysql_error());
$arr_sql_people = mysql_fetch_array($get_sql_people);
//делаем массив из рефералов пользователя и считаем их количество
$arr = explode(",",$arr_sql_people[9]);
///////////////////////////////////Вопрос: Не влияет ли этот $count на следубщий(смотрите ниже)?
$count = count($arr);
//////////////////////////////////
echo 'У Вас '.$count.' приглашенных';
//делаем таблицу рефералов:
$width = 1000;
echo '<table width="'.$width.'" border="0">
<td><center>'
.$arr_sql_people[1].'</center></td>
</tr>
</table>'
;

echo '<table width="'.$width.'" border="0">
<tr>'
;
$i = 0;
While ($i<$count)
{
echo '<td width = "'.$width/$count.'"><center><a href="referals.php?login0='.$arr[$i].'">'.$arr[$i].'</a></center></td>';
$i++;
}
echo'</tr>
</table>'
;

//проверка, если нажали на чей-то логин делаем массив ил рефералов этого логина
$z = 0;
while ($z<=10)
{
$z++;
$a = $z-1;
$ref = $_GET['login'.$a.''];
$get_sql_ref = mysql_query("SELECT * FROM peoples WHERE login = '$ref'",$db) or die (mysql_error());
$arr_sql_ref = mysql_fetch_array($get_sql_ref);
$arr = explode(",",$arr_sql_ref[9]);
///////////////////Как я понял ошибка тут, потому что даже если в поле ничего нету - выдаёт 1, если есть, выдаёт правильное количество
$count = count($arr);
//////////////////////////////////////////////
//если есть рефералы у этого логина выводим их в таблице
if ($count>0)
{
$width = 1000;
echo '<table width="'.$width.'" border="0">
<td><center>'
.$arr_sql_ref[1].'</center></td>
</tr>'
;

if (isset($_GET['login'.$a.''])){
echo 'У пользователся '.$arr_sql_ref[1].' '.$count. ' Приглашенных<br>';}
echo '</table>';
echo '<table width="'.$width.'" border="0">
<tr>'
;
$i = 0;
While ($i<$count)
{
echo '<td width = "'.$width/$count.'"><center>';
echo '<a href="'.$_SERVER['REQUEST_URI'].'&login'.$z.'='.$arr[$i].'">'.$arr[$i].'</a></center></td>';
$i++;
}
}

elseif ($count=0)
{
$b ="У этого пользователя рефералов нет";

}
echo'</tr>
</table>'
;
}
echo $b;
echo '<br>'.$_SERVER['REQUEST_URI'];

?>

Сама проблема в том, что функция count в пустой строке выдаёт 1. я указал в самом коде где это.
Помогите пожалйста Всем кто поможет +2 )
Вот можете видеть на картинке, что рефералов нет, а пишет 1



Спустя 6 минут, 8 секунд (20.03.2011 - 18:54) Lenarfate написал(а):
количество записей проще посчитать ф-ей mysql_num_rows

Спустя 1 минута, 51 секунда (20.03.2011 - 18:56) planetary написал(а):
я каунтом привык(count)

Спустя 3 минуты, 44 секунды (20.03.2011 - 19:00) Lenarfate написал(а):
Цитата
я каунтом привык(count)

тогда мучайся с ним)

Спустя 7 минут, 18 секунд (20.03.2011 - 19:07) planetary написал(а):
НУ вам я могу только минус поставить. если не видите ошибки в коде, продолжаю ждать ответа

Спустя 2 минуты, 27 секунд (20.03.2011 - 19:10) inpost написал(а):
planetary

 ! 

М
Утром предупреждение давал, чтобы ты не ставил ссылки в смс-ках? В обед письмо писал, что сноски такого типа тоже являются ссылками? Дважды писал, что это последнее и последнее предупреждение? Это специально игнорируешь замечания? Тогда даю один день бана, надеюсь на твое исправление завтра!
inpost

Спустя 16 секунд (20.03.2011 - 19:10) Lenarfate написал(а):
я вижу, потому предлагаю тебе более нормальный подход

Спустя 34 секунды (20.03.2011 - 19:10) gidrosoldat написал(а):
planetary
после:
$get_sql_ref = mysql_query("SELECT * FROM peoples WHERE login = '$ref'",$db) or die (mysql_error());
$arr_sql_ref = mysql_fetch_array($get_sql_ref);
$arr = explode(",",$arr_sql_ref[9]);

сделай :
var_dump($arr);

ситуация сразу проясниться.

Спустя 1 минута, 29 секунд (20.03.2011 - 19:12) inpost написал(а):
$arr = - инициализация переменной. Ты её создал, она существует в еденичном варианте.
COUNT - считает количество переменных, ты создал одну, она одна и существует!

Спустя 3 минуты, 18 секунд (20.03.2011 - 19:15) tomash написал(а):
в таблице peoples все пользователи , даже те у кого нет рефералов? вот там и получается count>0. кстати elseif ($count=0) неверно, вы же сравниваете, а не присваеваете

Спустя 14 часов, 40 минут, 40 секунд (21.03.2011 - 09:56) linker написал(а):
mysql_num_rows() и никакой тут count() не подходит. ТС, тебе правильно сразу сказали, а ты в минуса полез вместо того чтобы принять правильный совет.

Спустя 10 часов, 10 минут, 32 секунды (21.03.2011 - 20:06) planetary написал(а):
mysql_num_rows() тоже не подходит

Спустя 42 секунды (21.03.2011 - 20:07) planetary написал(а):
он считает количество строк в таблице, а мне нужно количество ячеек в массиве

Спустя 11 минут, 13 секунд (21.03.2011 - 20:18) planetary написал(а):
спринципе этот вопрос я решил. Сразу возник другой. Он описан в этой теме: http://phpforum.ru/index.php?act=ST&f=106&t=42347
Быстрый ответ:

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