2015-05-29 2 views
0

Моя цель отправить уведомления pushbullet пользователям с помощью cron.Попытка создать функцию с помощью mysql_fetch_array

У меня есть mysql db, и в нем есть таблица таблиц пользователей и проблем. Я хочу, чтобы все пользователи из таблицы пользователей после этого создавали другой запрос, который подсчитывал количество ошибок на основе назначенного идентификатора пользователя из таблицы проблем. Наконец, сделайте уведомления.

Вот подробности и то, что я пробовал. Во-первых; Я пытался получить идентификаторы пользователей, и он работал, как ожидалось.

function some_function($sa){ 
    foreach($sa as $s) 
     echo $s; 

} 

$sqlText['id']="SELECT users.id, 
       users.login 
       FROM users 
       GROUP BY users.login"; 

    $sqlQuery_MainMenu = mysql_db_query($db, $sqlText['id'], $connection) or die("Error"); 
    $file_names=array(); 
    while($mm_Content=mysql_fetch_array($sqlQuery_MainMenu)){ 
     $users[]=$mm_Content["id"]; 
    } 
    foreach ($users as $user) { 
     $foo=array($user); 
     some_function($foo); 
    } 

Поскольку у меня есть идентификаторы пользователей, я попытался создать новый запрос, который подсчет количества ошибок на основе идентификатора пользователя. Но я не мог этого сделать. Я знаю, что хочу, но я не знаю, как это сделать.

$sqlText['push']="SELECT COUNT(*) 
FROM issues INNER JOIN users ON issues.assigned_to_id = users.id where assigned_to_id = $s"; 

    $sqlQuery_MainMenu = mysql_db_query($db, $sqlText['push'], $baglanti) or die("Error"); 
    $users=array(); 
    while($mm_Content=mysql_fetch_array($sqlQuery_MainMenu)){ 
     $users[]=$mm_Content; 
    } 
    foreach($users as $index => $user){ 
     //$attachment .= $directory.'/'.$files[$index].', '."'$file_names[$index]'"; 
     echo $user[0] ; 
     } 

В принципе, я пытаюсь создать функцию, которая запускает следующую строку для каждого значения, полученного из mysql.

$pb->Device('user.id from db')->pushLink("Some text", "http://some link", "issue count"); 
+1

Вы не должны использовать 'mysql_ *'. –

+0

Остановить использование 'mysql_ *': http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php – Zl3n

+0

Хорошо, я выиграл, но есть ли у вас какие-либо предложения? Как я могу достичь своей цели. – orko

ответ

1

Что я хотел бы предложить, так это то, что вам, вероятно, не нужен ваш первоначальный запрос. Я предполагаю, что вам не нужно будет отправлять уведомления пользователям без каких-либо проблем, поэтому вы можете получить идентификаторы пользователей непосредственно из своей таблицы проблем, не запрашивая сначала таблицу пользователя.

$sql = "SELECT assigned_to_id AS user_id, COUNT(*) AS issue_count 
    FROM issues GROUP BY assigned_to_id"; 

(Если вам необходимо получить дополнительную информацию из таблицы пользователя, вы можете получить его с одного запроса путем объединения двух таблиц.)

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

$users_with_issues = mysqli_query($db, $sql); 
while($user = mysqli_fetch_assoc($users_with_issues)){ 
    $pb->Device($user['user_id'])->pushLink(
     "Some text", "http://some link", $user['issue_count']); 
} 

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

+0

Я получаю поле «Некоторый текст» также из записей db, связанных с идентификатором пользователя. И я хочу, чтобы он сделал это для каждой записи пользователя. Я еще не пробовал это, но завтра, и дам вам знать. Спасибо за вашу помощь @ dont-panic – orko

+0

Это решило мою проблему сейчас, мне нужно улучшить ее, чтобы сделать ее более безопасной и современной. Спасибо – orko

Смежные вопросы