Много странен проблем с една проверка...

iCreatives

Registered
Здравейте,
имам следната if проверка, с която искам да разбера дали потребителя и автора са едно и също лице и дали потребителя, който гледа уроците е с level 3.
PHP:
if(($username==$row['author']) OR ($row['level']=="3"))
	{
		echo '<a href="#">Редактирай</a>    <a href="#">Изтрий</a>';
	}

Пробвах и така, за да видя от къде идва проблема:
PHP:
echo ($username==$row['author']) ? "vqrno" : "ne";
echo ($row['level'] == 3) ? "vqrno level" : "ne level";
и ми изкарва nevqrno level
=> проблема идва от level-a. Потребителя ми е с level 1, но вижда нещата, които са за level 3
Как да го оправя? Ако имате въпрси, питайте!
 
PHP:
if(($username==$row['author']) and ($row['level']=="3"))
        {
                echo '<a href="#">Редактирай</a>    <a href="#">Изтрий</a>';
        }

щом искаш и двете условия да са изпълнение ти трябва and :)
 
dhtodorov каза:
PHP:
if($username == $row['author'] || (int)$row['level'] === 3)
        {
                echo '<a href="#">Редактирай</a>    <a href="#">Изтрий</a>';
        }
Не... Обърнах и реда на за проверката, но пак не става... Сега като се замислих по-сериозно съм склонен да мисля, че проблема идва от $username == $row['author']
, защото до колкото си спомням ако имаше едно вярно условие то прескача другото и второто въобще не се чете.... $username я взимам от сесията.
PHP:
$username = $_SESSION['username'];
 
iCreatives каза:
Здравейте,
имам следната if проверка, с която искам да разбера дали потребителя и автора са едно и също лице и дали потребителя, който гледа уроците е с level 3.
PHP:
if(($username==$row['author']) OR ($row['level']=="3"))
	{
		echo '<a href="#">Редактирай</a>    <a href="#">Изтрий</a>';
	}

Пробвах и така, за да видя от къде идва проблема:
PHP:
echo ($username==$row['author']) ? "vqrno" : "ne";
echo ($row['level'] == 3) ? "vqrno level" : "ne level";
и ми изкарва nevqrno level
=> проблема идва от level-a. Потребителя ми е с level 1, но вижда нещата, които са за level 3
Как да го оправя? Ако имате въпрси, питайте!

Чета, чета и гледам това И. Което според мен значи, че искаш и двете проверки да са изпълнени за да му покажеш Редактирай бутона. Т.е username да е равно на автора И левел да е 3. Пробвай с and да видиш, че това ти трябва. Ако не стане аз лично не мога да разбера какво искаш :)
 
Level 3 ми е админ левъла... Той ще трябва да вижда и прави всичко! С проверката за автора целя само този, който е качил урока да може да ги вижда и съответно да редактира или да трие.
Това е!
Редактирането и триенето да се вижда само ако ти си автора ИЛИ си админ. :)

EDIT: С and не става! Така трябва и двете условия да са вярни... Правя си един user с level 3, но той не е автор на урока и не показва нищо.
 
Малко не разбирам логиката, но ти предлагам следния начин.

Правиш си функция

PHP:
function checkLevel($username){
       $query = mysql_query("SELECT `level` FROM `users` WHERE `username` = '{$username}'");
       
       $row = mysql_fetch_assoc($query);

       return $row['level'];
}

след това

PHP:
if(isset($_SESSION['username']) && checkLevel($_SESSION['username']) == 3){ ... }


ЕДИТ: Ако искаш, както ти казваш, можеш да направиш и друга функцийка(поне на мен ми е по-лесно така) да проверяваш в новините кой е автора.

PHP:
function checkAuthor($id){
        $query = mysql_query("SELECT * FROM `news` WHERE `id` = '{$id}'");
       $row = mysql_fetch_assoc($query);

       return $row['author'];
}

и

PHP:
if(checkAuthor(ИД-НА-НОВИНАТА) == $_SESSION['username'] || checkLevel($username) == 3) { ... }
 
Мерси! Стана! Можеш ли само да ми кажаеш от къде е идвал пролема, защото не ми е много одобно да ползвам функции?
 
iCreatives каза:
Мерси! Стана! Можеш ли само да ми кажаеш от къде е идвал пролема, защото не ми е много одобно да ползвам функции?


Ами, на теб каква ти е заявката ? По какъв критерии вадиш данни (WHERE ..)
 
PHP:
$query = mysql_query("	SELECT `users`.`username`, `users`.`level`, `tuts`.*
FROM `tuts`
JOIN `users` ON `users`.`username` = `tuts`.`author`
WHERE `tuts`.`active` = '1'
ORDER BY `tuts`.`id` ASC") or die(mysql_error());
 
[sql]SELECT `u`.`username`, `u`.`level`, `t`.*

FROM `tuts` t, `users` u

WHERE `u`.`username` = `t`.`author` AND `t`.`active` = '1'

ORDER BY `t`.`id` ASC[/sql]

:roll:

Предполага се, че таблиците ти са tuts и users
 

Back
Горе