удалить пустые результаты со вторым запросом из массива mysqli - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть 2 таблицы, 1 с компаниями (Costcenters) и одна с клиентами (сотрудниками этих компаний)

Мне нужно создать форму для редактирования или удаления искаженных (например, Джон Смит и Дж. Смит)от тех сотрудников компаний, сгруппированных по компаниям (Costcenter), когда я составляю список всех этих компаний, я получаю множество компаний, у которых нет клиентов.Поэтому я создал массив компаний (Costcenters) и проверил сначала, есть ли у них сотрудники, с целью удалить Costcenters без сотрудников из массива ($ bedrijven).

Форма не проблема, ноЯ не могу найти способ удалить эти компании из массива Bedrijven.

require_once('conn.php');
$query = "SELECT bedrijfID, Houder, Costcenter, Actief FROM bedrijven 
WHERE Actief = 'actief' ORDER BY Costcenter";
$results = mysqli_query($conn, $query);
if (!$results) printf("Query failed: %s\n", $conn->error);

$bedrijven = [];
while($row = mysqli_fetch_assoc($results)) {
$bedrijven[] = $row['Costcenter'];
}
foreach ($bedrijven as $key => $item) {

$query1 = "SELECT * from customer where Costcenter = '$item' ORDER by 
Client";
$customerresult = mysqli_query($conn, $query1) or 
die(mysqli_error($conn));
if (!$customerresult) printf("Query failed: %s\n", $conn->error);
    if($customerresult->num_rows === 0) {
    unset($bedrijven[$key]);
   }  
}

Я не знаком с PDO или функциями, поэтому попробовал его так, что он не работает, как я ожидал, не работает unset.

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

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

благодаря запросу «Птичьей птички», которую я обнаружил, я трачу много времени на простое решение.я не должен был делать: unset ($ bedrijven ['Costcenter']);но

 unset($bedrijven[$key]);

вы должны сбросить ключ в массиве, а не значение ....

0 голосов
/ 12 ноября 2018

Если я понимаю, к чему вы клоните, это лучше сделать одним запросом.JOIN может использоваться сначала для привязки ваших таблиц, а затем, если необходимо, для уточнения поиска можно использовать дополнительные операторы WHERE.Я не уверен на 100%, правильно ли я понял, что именно так вы и хотели объединить данные, но если вы поиграете с разными операторами JOIN, вы получите их.

$query = "SELECT Costcenter.bedrijfID, Costcenter.Houder, Costcenter.Costcenter, Costcenter.Actief, customer.* FROM Costcenter
LEFT JOIN customer ON customer.Costcenter = Costcenter.Costcenter 
WHERE Actief = 'Costcenter.actief' AND Costcenter.Costcenter != "" ORDER BY Costcenter.Costcenter";

Основная причина для этого заключается в том, что один вызов SQL обрабатывает ПУТЬ быстрее, чем пытаться проанализировать данные из нескольких вызовов в PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...