Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [PHP]Ograniczenie pętli do jednego wyniku

Napisany przez: ufo1990 17.10.2019, 09:19:15

Witam z bazy danych pobieram informację która zwraca użytkowników którzy posiadają daną domenę, jednak użytkownik który posiada 3 domeny zwraca 3 razy pole z imieniem. Chciałbym aby poniższa pętla ograniczała pole "name" tylko do 1 wyniku

  1. require_once "connect.php";
  2.  
  3. $connect = @new mysqli($host, $db_user, $db_password, $db_name);
  4. $result = $connect->query("SELECT p.name, d.domain_name FROM domains d LEFT JOIN persons p ON d.id_person = p.id");
  5.  
  6. if($result->num_rows > 0)
  7. {
  8. while($row = $result->fetch_assoc())
  9. {
  10.  
  11. http://www.php.net/echo $row["name"].'<br>';
  12. http://www.php.net/echo $row["domain_name"].'<br>';
  13.  
  14. }

Napisany przez: mrpickles 17.10.2019, 10:18:54

Jestem początkujący, ale może najpierw trzeba wybrać same imiona z bazy i potem podstawić do kolejnego zapytania o przypisane domeny?

Napisany przez: dublinka 17.10.2019, 10:22:39

  1. if($result->num_rows > 0)
  2. {
  3. while($row = $result->fetch_assoc())
  4. {
  5.  
  6. $name[] = $row["name"].'<br>';
  7. $domains[] = $row["domain_name"].'<br>';
  8.  
  9. }
  10. traz echoo $name[0];
  11.  
  12. a potem w petli wyswietl domeny

Napisany przez: kapslokk 17.10.2019, 10:23:04

Nie ma sensu robić 2 zapytań. To które jest teraz jest ok, po prostu przy fetchowaniu danych trzeba je odpowiednio pogrupować:

  1. $connect = @new mysqli($host, $db_user, $db_password, $db_name);
  2. $result = $connect->query("SELECT p.id, p.name, d.domain_name FROM domains d LEFT JOIN persons p ON d.id_person = p.id");
  3.  
  4.  
  5. $results = [];
  6. while ($row = $result->fetch_assoc()) {
  7. if(!http://www.php.net/array_key_exists($row['id'], $results)){
  8. $results[[$row['id']]] = [
  9. 'name' => $row['name'],
  10. 'domains' => []
  11. ];
  12. }
  13.  
  14. $results[$row['id']]['domains'][] = $row['domain_name'];
  15. }
  16.  
  17. http://www.php.net/var_dump($results);


Mniej-wiecej tak.

Napisany przez: viking 17.10.2019, 10:26:38

Nospor ci wczoraj napisał co masz zrobić a ty dalej to wałkujesz jako nowy temat. Po co?

Napisany przez: ufo1990 18.10.2019, 10:35:21

Cytat(dublinka @ 17.10.2019, 11:22:39 ) *
  1. if($result->num_rows > 0)
  2. {
  3. while($row = $result->fetch_assoc())
  4. {
  5.  
  6. $name[] = $row["name"].'<br>';
  7. $domains[] = $row["domain_name"].'<br>';
  8.  
  9. }
  10. traz echoo $name[0];
  11.  
  12. a potem w petli wyswietl domeny



To by działało ale tylko w przypadku gdyby była tylko jedna osoba natomiast mi zależy na tym aby nie wyświetlało powtarzających się rekordów

Napisany przez: dublinka 18.10.2019, 12:38:36

No tak tak. Ostatnio mam kupe spraw na glowie. Czasami tak bywa. Przepraszam jak wprowadzilem w błąd

Napisany przez: ufo1990 18.10.2019, 13:25:58

Pytanie czy można w jakiś sposób ukryć dublujące się rekordy?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)