Проблем с изкарване на брой на непрочетени съобщения

napsterbg

Registered
Здравейте, опитвам се да изкарам броя на непрочетените съобщения на потребителя, но не излиза нищо,ето кода:

PHP:
<?php
function allinbox() {
$lqlqlq = mysql_query("SELECT COUNT(id) AS numrows FROM messages WHERE touser='$_SESSION[username]' AND readed='0'");
$pkza = mysql_num_rows($lqlqlq);
if($pkza = NULL) {
echo "0"; }
else {
echo $pkza[0];
}
}
?>
Кутия ( <?php allinbox(); ?> )
Благодаря предварително :?:
 
napsterbg каза:
Здравейте, опитвам се да изкарам броя на непрочетените съобщения на потребителя, но не излиза нищо,ето кода:

PHP:
<?php
function allinbox() {
$lqlqlq = mysql_query("SELECT id FROM messages WHERE touser='$_SESSION[username]' AND readed='0'");
$pkza = mysql_num_rows($lqlqlq);
echo $pkza;
}
?>
Кутия ( <?php allinbox(); ?> )
Благодаря предварително :?:
 
Очевидно проблема е в това $_SESSION[username], което всъщност нищо не прави - търси ред в БД-то, при който потребителското име е $_SESSION[username], затова няма резултати. (ако имаше потребител с това име, щеше да има резултати).
Трябва да бъде така:

PHP:
$lqlqlq = mysql_query("SELECT id FROM messages WHERE touser='".$_SESSION['username']."' AND readed='0'");
 
Според мен трябва да се изчисти заявката и проверките ..

1. Използваш COUNT и го кръщаваш numrows, апук не го викаш с това име ..
2. Проверката НЕ трябва да проверява дали е NULL, a дали е ==0
3. Използваш COUNT И mysql_numrows .. е кво е тва, или едно или другото ! (на мястото на numrows се слага fetch_array/assoc за да изпълни заявката и то щи ги прeброи с COUNT)

и мисля че трябва да стане:
PHP:
$lqlqlq = mysql_query("SELECT COUNT(id) AS `numrows` FROM `messages WHERE `touser`='".$_SESSION[username]."' AND `readed`='0'");
$pkza = mysql_fetch_array($lqlqlq);
if($pkza['numrows'] == NULL  || $pkza['numrows'] == 0) {
echo "0"; 
}
else {
echo $pkza['numrows'] ;
}

:?: :?:
 
joTunkiq, даже може вместо
PHP:
if($pkza['numrows'] == NULL  || $pkza['numrows'] == 0) {
да бъде
PHP:
if(!$pkza['numrows']) {
Защото и NULL, и 0 се равняват на FALSE.
 

Горе