Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Problem z funkcja implode
gados82
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 5.05.2004

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


Ponizej prezentuje kod w ktorym jest bład

  1. <?php
  2. $wynik = pg_query(&#092;"select k.nr_pokoju from klienci k , pokoje p 
  3. where
  4. p.nr_pokoju=k.nr_pokoju 
  5. and ('\".$_POST['data_przybycia'].\"' between k.data_przybycia and k.data_wyjazdu 
  6. or '\".$_POST['data_wyjazdu'].\"' between k.data_przybycia and k.data_wyjazdu)
  7. ;&#092;");
  8.  
  9. $ilosc_wierszy=pg_num_rows($wynik);
  10.  
  11. while ($wiersz = pg_fetch_array($wynik,null,PGSQL_NUM))
  12.  
  13.  
  14.  {
  15. foreach ($wiersz as $www);
  16. $z[]=&#092;"nr_pokoju<>$www\";
  17. $where = implode($z, &#092;" AND \"); 
  18. {
  19. print &#092;" $where\" ;
  20. }
  21.  
  22.  }
  23.  
  24. ?>



ten kod zwraca mi takie wartości

nr_pokoju<>1 nr_pokoju<>1 AND nr_pokoju<>5


nie wiem dlaczego dwa razy jest "nr_pokoju<>1" powinno byc raz czyli tak
"nr_pokoju<>1 AND nr_pokoju<>5" poniewaz zmienna $www ma takie wartości 1 i 5 a nie 1, 1 i 5

Podsumowujac potrzebne mi jest zeby wynikiem tego kodu było
"nr_pokoju<>1 AND nr_pokoju<>5"
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ty to print $where robisz w pętli while.
Na mój gust ta pętla przelatuje dwa razy. Za pierwszym razem tablica wiersz zawiera tylko jeden element i wypisuje Ci na ekran nr_pokoju<>1. Za drugim razem tabela wiersz zawiera dwa elementy i wypisuje Ci nr_pokoju<>1 AND nr_pokoju<>5.
W rezultacie wypisywania otrzymujesz:
nr_pokoju<>1 nr_pokoju<>1 AND nr_pokoju<>5
Go to the top of the page
+Quote Post
gados82
post
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 5.05.2004

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


juz problem rozwiazałem ale pojawił sie nowy

  1. <?php
  2. while ($wiersz = pg_fetch_array($wynik,null,PGSQL_NUM))
  3.  
  4.  
  5.  {
  6. foreach ($wiersz as $www);
  7. $z[]=&#092;"nr_pokoju<>$www\";  
  8. $where = implode($z, &#092;" AND \"); 
  9.   
  10.  
  11.  }
  12.  
  13. if($where=null)
  14.  
  15. {
  16. $wynik2 = pg_query(&#092;"select * from pokoje order by nr_pokoju\");
  17. }
  18. else
  19. {
  20. $wynik2 = pg_query(&#092;"select * from pokoje where $where;\");
  21. }
  22. ?>




nie wiem dlaczego ten warunek mi nie chodzi?? od 13 linijki (ten if)

zawsze wykonuje ta linijke choc jestem pewny ze $where ma jakas wartosc
  1. <?php
  2. $wynik2 = pg_query(&#092;"select * from pokoje order by nr_pokoju\");
  3. ?>



jak widac where ma wartosc implode czyli wypisuje takie rzeczy
nr_pokoju<>1 AND nr_pokoju<>2

gdzei tu jest bład

Ten post edytował gados82 12.03.2005, 16:18:30
Go to the top of the page
+Quote Post
pillot
post
Post #4





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 9.05.2004
Skąd: Puszów

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


a może by tak
  1. <?php
  2.  
  3. if ($where == null) { // porównanie, a nie przypisanie
  4. //...
  5. }
  6.  
  7. ?>
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 08:38