Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Foreach - dodawanie wyników do tablicy
RooFi07
post 5.08.2012, 12:51:45
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 13.05.2012

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


Witam, mam mały problem w moim rozwiązaniu:

  1. $array = array();
  2.  
  3. foreach($reports->result() as $row) // $reports to zapytanie do bazy oczywiście :)
  4. {
  5. $array .= ($row->id_image); // tego nie wiem jak zapisac
  6. }
  7.  
  8. // $array = array(1, 4); - taki zapis jest odczytywany poprawnie
  9.  
  10. $query = $this->db->query('SELECT * FROM images WHERE id IN (' . implode(', ', array_map('intval', $array)) . ')');


A więc mam dwie tabele, w pierwszej są obrazki, a w drugiej id obrazka, które ma być wyświetlone. Wybrałem powyższe rozwiązanie lecz nie mogę sobię z nim poradzić. Jeżeli znacie leszpe, proszę o propozycje.
Problem jest wtedy, kiedy jest tylko jeden wynik. Oczywiście mogę dodać IF'a jak jeden wynik zapytaj inaczej, ale nie wiem czy nie utworze zbędnego kodu.

Proszę o pomoc, oczywiście daję "Pomógł".
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
CuteOne
post 5.08.2012, 13:36:34
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1. $query = '';
  2.  
  3. foreach($reports->result() as $row) {
  4.  
  5. $query .= $row->id_image . ','; // tego nie wiem jak zapisac
  6. }
  7. $query = substr($query, 0, strlen($query)-1);
  8.  
  9. $select = $this->db->query("SELECT * FROM images WHERE id IN (".$query.")");


Ten post edytował CuteOne 5.08.2012, 13:37:24
Go to the top of the page
+Quote Post
RooFi07
post 5.08.2012, 13:44:20
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 13.05.2012

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


A co jeśli będzie jeden wynik, dać na to tego ifa i inaczej zadać pytanie?

Ten post edytował RooFi07 5.08.2012, 13:48:41
Go to the top of the page
+Quote Post
CuteOne
post 5.08.2012, 14:04:05
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1. $query = '';
  2.  
  3. if(count($row) == 1) {
  4.  
  5. $query = 'id = '.$row->id;
  6. }
  7. else {
  8.  
  9. foreach($reports->result() as $row) {
  10. $query .= $row->id_image . ',';
  11. }
  12.  
  13. $query = 'id IN ('.substr($query, 0, strlen($query)-1).')';
  14. }
  15.  
  16. $select = $this->db->query("SELECT * FROM images WHERE $query");


Ten post edytował CuteOne 5.08.2012, 14:04:56
Go to the top of the page
+Quote Post
RooFi07
post 5.08.2012, 14:06:29
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 13.05.2012

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


Wiedziałem jak to zrobić, ale IF'a jednak chyba nie trzeba, mój błąd w kodzie.

Dzięki za pomoc, pozdrawiam.
Go to the top of the page
+Quote Post
cv65
post 5.08.2012, 20:46:03
Post #6





Grupa: Zarejestrowani
Postów: 94
Pomógł: 9
Dołączył: 12.04.2009

Ostrzeżenie: (20%)
X----


Ja zamiast
  1. $query = substr($query, 0, strlen($query)-1);

użyłbym po prostu rtrim
Go to the top of the page
+Quote Post
markonix
post 5.08.2012, 21:00:18
Post #7





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


A nie lepiej implode użyć w IN?
Prostsze i bez żadnych substr i trimów.

Ten post edytował markonix 5.08.2012, 21:01:08


--------------------
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: 14.08.2025 - 02:04