Как просмотреть записи в базе данных для моих клиентов под другими агентами, но не я? - PullRequest
0 голосов
/ 09 октября 2011

У меня была длинная проблема с этим кодом. Я много раз писал этот вопрос на SOF, но никогда не мог четко сформулировать проблему, но теперь я могу.

Я хочу видеть сообщения других агентов для моих клиентов. Так что в этом запросе я не должен видеть сообщения, добавленные мной для моих клиентов, но сообщения для моих клиентов, добавленные другими агентами. Ниже то, что я пытался. Хорошо, что код делает то, что мне нужно, но затем он показывает мне сообщения, которые не для моих клиентов тоже. Так что я не уверен, где мне нужно сделать настройки?

Код:

$type1 = "Added by Other Agents"
$myuserid = My id.  So i am using <> to not show posts added by me for my clients. 

$sql = "SELECT posts.posts_id, accounts.full_name,
agents.agent_name, posts.person_id, posts.why_posts, 
posts.just_date, posts.type, posts.date_time_added FROM 
posts LEFT JOIN accounts ON posts.person_id = accounts.person_id 
LEFT JOIN agents on posts.agent_whois = agents.agent_id WHERE 
(posts.type = '$type1') and  
(posts.added_by <> '$myuserid')"; 
$result=mysql_query($sql);

$query = mysql_query($sql) or die ("Error: ".mysql_error());

if ($result == "")
{
echo "";
}
echo "";


$rows = mysql_num_rows($result);

if($rows == 0)
{
print("");

}
elseif($rows > 0)
{
while($row = mysql_fetch_array($query))
{

$postsid = $row['posts_id'];
$agentwho = $row['person_id'];
$agentname = $row['agent_name'];
$reason = $row['why_posts'];
$datetimeadded = $row['just_date'];
$name = $row['full_name'];
$type = $row['type'];


print("");
}

}

Ответы [ 2 ]

2 голосов
/ 09 октября 2011

Есть ли ошибка в SQL?У вас есть:

$sql = "SELECT posts.posts_id, accounts.full_name,
agents.agent_name, posts.person_id, posts.why_posts, 
posts.just_date, posts.type, posts.date_time_added FROM 
posts LEFT JOIN accounts ON posts.person_id = accounts.person_id 
LEFT JOIN agents on posts.agent_whois = agents.agent_id WHERE 
(posts_type = '$type1') and  
(posts.added_by <> '$myuserid')"; 

Мне кажется, что это, вероятно, должно быть так:

(posts.type = '$type1') 

Я ожидаю, что это приведет к ошибке, если она не будет правильной, поэтомуне уверен (например, "нет такого столбца").

1 голос
/ 09 октября 2011

Если в таблице учетных записей хранится информация о том, какой агент связан с клиентом, необходимо добавить дополнительное условие, чтобы указать учетные записи, которые связаны только с вами. Поскольку мне все еще неясно, какое это поле, скажем, оно называется accounts.agent_owner

В этой части вашего SQL:

FROM posts
LEFT JOIN accounts ON (posts.person_id = accounts.person_id)
LEFT JOIN agents ON (posts.agent_whois = agents.agent_id)
WHERE (posts_type = '$type1') AND (posts.added_by <> '$myuserid')

Добавить:

    AND accounts.agent_owner = '$myuserid'
...