Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z pętlami i tablicami
MitS
post
Post #1





Grupa: Zarejestrowani
Postów: 262
Pomógł: 5
Dołączył: 8.02.2005
Skąd: Olsztyn / Zatorze

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


Witam!

Już mnie krew zalewa więc byłbym wdzięczny za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Mój problem polega na tym że mam taką tablicę:

  1. <?php
  2. [ag] => Array (
  3. [rform] => Array (
  4. [0] => Array (
  5. [rooms] => Array (
  6. [0] => Array (
  7. [room_id] => 4
  8. [room_name] => Apartament1
  9. )
  10.  
  11. [1] => Array (
  12. [room_id] => 5
  13. [room_name] => Apartament2
  14. )
  15.  
  16. [2] => Array (
  17. [room_id] => 3
  18. [room_name] => Apartament3
  19. )
  20.  
  21. [3] => Array (
  22. [room_id] => 1
  23. [room_name] => Apartament4
  24. )
  25.  
  26. [4] => Array (
  27. [room_id] => 2
  28. [room_name] => Apartament5
  29. )
  30.  )
  31. [start_date] => 2007-02-20
  32. [end_date] => 2007-02-22
  33. [hotel_name] => Hotel pierwszy
  34. [hotel_alias] => hotel_pierwszy
  35. )
  36. [1] => Array (
  37. [rooms] => Array (
  38. [0] => Array (
  39. [room_id] => 17
  40. [room_name] => Pokoj1
  41. )
  42. [1] => Array (
  43. [room_id] => 18
  44. [room_name] => pokoj2
  45. )
  46. )
  47. [start_date] => 2007-02-20
  48. [end_date] => 2007-02-22
  49. [hotel_name] => Hotel test
  50. [hotel_alias] => hotel_test
  51. )
  52. )
  53. )
  54. ?>


No i chciałbym zrobić coś takiego, że mam dwa pola wyboru select (pierwszy wybierz hotel, drugi wybierz pokój).
Mój problem polega na tym że nie wiem jak zrobić pętle takie że:

* Wczyta do pierwszego selecta nazwy hoteli (w moim wypadku dwa: Hotel pierwszy i Hotel test),
* wczyta do drugiego selecta wszystkie pozycje z nazwami pokojów z danego hotelu ([room_name]) czyli np. dla Hotel test będą to:
Pokoj1 i Pokoj2

i np. po zmianie hotelu z pierwszego selecta zmienią się nazwy pokoi w drugim...
Ja to zrobiłem tak:

  1. <?php
  2. //----------------------------------------------------- HOTEL ------------------------------//
  3. $hotel = "<select id='hotel' class='hotel' name='hotel_name' tabindex='101'>n";
  4.  
  5. for($i=0; $i<count($data['ag']['rform']); $i++)
  6. {
  7. if(is_array($data['ag']['rform'][$i]['rooms']))
  8. {
  9.  $hotel.='<option value="'.$data['ag']['rform'][$i]['hotel_alias'].'">'.$data['ag']['rform'][$i]['hotel_name'].'</option>';
  10. }
  11. }
  12.  
  13. $hotel.="</select>";
  14.  
  15. //----------------------------------------------------- POKOJE -------------------------------//
  16. $reservation = "<select id='rooms' class='rooms' name='rooms' tabindex='101'>n";
  17.  
  18. for($i=0; $i<count($data['ag']); $i++)
  19. {
  20. if(is_array($data['ag']['rform'][$i]['rooms']))
  21. {
  22. foreach($data['ag']['rform'][$i]['rooms'] as $key => $values)
  23. {
  24. $k[$i]="<option value='".$values['room_id']."'>".$values['room_name']."</option>n"; 
  25. $reservation.= $k[$i];
  26. }
  27. }
  28. }
  29.  
  30. $reservation.="</select>";
  31. ?>


Ale w tym wypadku do drugiego selecta ładują się wszystkie pokoje (z pierwszego hotelu i drugiego) a powinno się tylko z wybranego (i tu mi nie wychodzi)....

Dodatkowo nie wiem jak zrobic js by w zdarzeniu onchange selecta pierwszego bez przeładowania zmieniały mi sie nazwy pokoju po wybraniu danego hotelu ...

Pomożecie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Please bo mnie już nerwica bierze ...

Pozdro


-------------------------
ortograf w temacie bił po oczach
przy okazji poprawiłem te w poście

~Cienki1980


Ten post edytował Cienki1980 20.02.2007, 08:24:40
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
MitS
post
Post #2





Grupa: Zarejestrowani
Postów: 262
Pomógł: 5
Dołączył: 8.02.2005
Skąd: Olsztyn / Zatorze

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


kurde no nie moge tak jak ty piszesz zrobić - za małe moje umiejętności :/ ....
Ale zrobiłem troche inacze (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

  1. <?php
  2. $count = count($data['ag']['rform']);
  3.  
  4. //----------------------------------------------------- HOTELE i POKOJE ------------------------------//
  5.  
  6. $hotel = '<select id="hotel" class="hotel" name="hotel_name" onchange="sh_select(this.value)">';
  7. for($i=0; $i<$count; $i++)
  8. {
  9.  if(is_array($data['ag']['rform'][$i]['rooms']))
  10.  {
  11. $hotel.='<option id="hotel'.$i.'" value="'.$data['ag']['rform'][$i]['hotel_alias'].'">
  12. '.$data['ag']['rform'][$i]['hotel_name'].'</option>'."n";
  13.  if($i==0)
  14.  $reservation[$i] = '<select id="room'.$i.'" class="room" name="room">'."n";
  15.  else
  16.  $reservation[$i] = '<select id="room'.$i.'" class="visiblity" name="room" disabled="disabled">'."n";
  17.  
  18.  foreach($data['ag']['rform'][$i]['rooms'] as $key => $values)
  19.  {
  20.  $reservation[$i].='<option value="'.$values['room_id'].'">'.$values['room_name'].'</option>'."n";
  21.  }
  22. $reservation[$i] .= '</select>'."n";
  23.  }
  24. }
  25. $hotel.='</select>';
  26.  
  27. echo '
  28. <table id="module2" cellspacing="0" cellpadding="0">
  29. <tr>
  30. <td><img src="./_gfx/'.$data['lang'].'/reserv.jpg" alt="" /></td>
  31. </tr>
  32. <tr>
  33. <td>
  34. <br /><br />
  35. <form name="rooms_search" method="post" action="'.SITE_PATH.'/'.$data['lang'].'/reservations/result.html">
  36. <table id="rezerwacje-form" cellspacing="0" cellpadding="0">
  37. <tr>
  38. <td class="bold" colspan="2">'.$lang['reservation_search_hname'].':</td>
  39. </tr>
  40. <tr>
  41. <td colspan="2">'.$hotel.'</td>
  42. </tr>
  43. <tr>
  44. <td class="bold">'.$lang['reservation_search_rname'].':</td>
  45. <td class="bold">'.$lang['reservation_search_ramount'].':</td>
  46. </tr>
  47. <tr>
  48. <td>'.implode(" ",$reservation).'</td>
  49. <td>'.$rooms.'</td>
  50. </tr>
  51. <tr>
  52. <td class="bold" colspan="2">'.$lang['reservation_search_arrive'].':</td>
  53. </tr>
  54. <tr>
  55. <td colspan="2">'.$days_list_a.$months_list_a.$years_list_a.'</td>
  56. </tr>
  57. <tr>
  58. <td class="bold" colspan="2">'.$lang['reservation_search_out'].':</td>
  59. </tr>
  60. <tr>
  61. <td colspan="2">'.$days_list_o.$months_list_o.$years_list_o.'</td>
  62. </tr>
  63. </table>
  64. <div class="vertical-padding">
  65. <input class="reserv-btn-pl" type="submit" value="" onfocus="blur();" />
  66. </div>
  67. </form>
  68. </td>
  69. </tr>
  70. </table>';
  71. ?>


i to działa, w ten sposób że z tej tablicy wypisuje sie do pierwszego selecta nazwa
wszystkich hoteli, a jeśli chodzi o pokoje to tworzy on do każdego hotelu dodatkowe selecty z pokojami (z danego hotelu).

tylko teraz jest tak że jak mam np. 10 hoteli i w każdym jakiś pokój to stworzy mi 10 widocznych selectów ...
A jak zrobić tak by wszystkie były ukryte a tylko widoczny ten select z pokojami który wybrany został hotel...

Ja wiem jak teoretycznie to wykonać ale z praktyką niestety gorzej ...
Ja bym to wykonał tak że:
1.) do pierwszego selecta dopisał id+cyfra do każdego optionsa w nim.
2.) do każdego selecta z pokojami bym dopisał id+ cyfra (ta sama cyfra co wyżej)
3.) Jeżeli bym wybrał pokoj z id+1 to pojawił by mi sie select z pokojami o jakimś id+1
a reszte były by ukryte ....

ale niestety nie wiem jak tego dokonac (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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: 8.10.2025 - 06:43