Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Ograniczenie pętli do jednego wyniku
Forum PHP.pl > Forum > Przedszkole
ufo1990
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. echo $row["name"].'<br>';
  12. echo $row["domain_name"].'<br>';
  13.  
  14. }
mrpickles
Jestem początkujący, ale może najpierw trzeba wybrać same imiona z bazy i potem podstawić do kolejnego zapytania o przypisane domeny?
dublinka
  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
kapslokk
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(!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. var_dump($results);


Mniej-wiecej tak.
viking
Nospor ci wczoraj napisał co masz zrobić a ty dalej to wałkujesz jako nowy temat. Po co?
ufo1990
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
dublinka
No tak tak. Ostatnio mam kupe spraw na glowie. Czasami tak bywa. Przepraszam jak wprowadzilem w błąd
ufo1990
Pytanie czy można w jakiś sposób ukryć dublujące się rekordy?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.