Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Ograniczenie pętli do jednego wyniku
ufo1990
post 17.10.2019, 09:19:15
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


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. }


Ten post edytował ufo1990 17.10.2019, 09:19:35
Go to the top of the page
+Quote Post
mrpickles
post 17.10.2019, 10:18:54
Post #2





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 14.10.2019
Skąd: Białystok

Ostrzeżenie: (0%)
-----


Jestem początkujący, ale może najpierw trzeba wybrać same imiona z bazy i potem podstawić do kolejnego zapytania o przypisane domeny?
Go to the top of the page
+Quote Post
dublinka
post 17.10.2019, 10:22:39
Post #3





Grupa: Zarejestrowani
Postów: 319
Pomógł: 40
Dołączył: 22.02.2008

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post
kapslokk
post 17.10.2019, 10:23:04
Post #4





Grupa: Zarejestrowani
Postów: 962
Pomógł: 284
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
viking
post 17.10.2019, 10:26:38
Post #5





Grupa: Zarejestrowani
Postów: 5 394
Pomógł: 916
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
ufo1990
post 18.10.2019, 10:35:21
Post #6





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


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

Ten post edytował ufo1990 18.10.2019, 10:36:11
Go to the top of the page
+Quote Post
dublinka
post 18.10.2019, 12:38:36
Post #7





Grupa: Zarejestrowani
Postów: 319
Pomógł: 40
Dołączył: 22.02.2008

Ostrzeżenie: (0%)
-----


No tak tak. Ostatnio mam kupe spraw na glowie. Czasami tak bywa. Przepraszam jak wprowadzilem w błąd
Go to the top of the page
+Quote Post
ufo1990
post 18.10.2019, 13:25:58
Post #8





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


Pytanie czy można w jakiś sposób ukryć dublujące się rekordy?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.11.2019 - 00:02