Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Pętla za mało się wykonuje
kuba1ka
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 23.03.2015

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


W bazie danych mam nascie wydarzen w tabeli kalendarium, sprawdzalem var_dumpem zapytanie i rzeczywiscie zwraca x rekordow. Dlaczego więc pętla wykonuje się tylko raz i zwraca pierwszy z brzegu wynik?

  1. <?php
  2. $query = "SELECT ".$prefix."kalendarium.* FROM ".$prefix."kalendarium WHERE kalendarium_aktywny = '1'";
  3. $result=mysql_query($query) or die(mysql_error());
  4.  
  5. if(mysql_num_rows($result) > 0) {
  6. while($r = mysql_fetch_assoc($result)) {
  7. ?>
  8.  
  9. <script type="text/javascript">
  10. $(document).ready(function() {
  11.  
  12. $('#my-next-button').click(function() {
  13. $('#calendar').fullCalendar('next');
  14. });
  15.  
  16. $('#calendar').fullCalendar({
  17. weekends: true,
  18. header: {
  19. left: 'prev,next today',
  20. center: 'title',
  21. right: 'month,basicWeek,basicDay'
  22. },
  23. defaultDate: '<?php echo date("Y-m-d"); ?>',
  24. editable: false,
  25. eventLimit: true, // allow "more" link when too many events
  26. events: [
  27. {
  28. title: '<?php echo $r['kalendarium_wydarzenie'] ?>',
  29. start: '<?php echo $r['kalendarium_dataStart'] ?>',
  30. end: '<?php echo $r['kalendarium_dataKoniec'] ?>'
  31. }
  32.  
  33. ]
  34. });
  35.  
  36. });
  37.  
  38. </script>
  39. <?php
  40. }
  41. }
  42. ?>


Jeśli napisałem za mało infromacji proszę pisać.

Ten post edytował kuba1ka 23.03.2015, 00:45:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
nospor
post
Post #2





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




A czemu zakladasz ze petla wykonala sie tylko raz? Zajrzales w zrodlo wygenerowanej strony i widzisz ze kod js wygenerowal sie tylko raz?? Smiem twierdzic, ze zobazysz iz kod js wygenerowal sie prawidlową ilosc razy. A z ty na ekranie widzisz pewnie tylko jeden kalendarz to zapewne specyfika tego kalendarza a nie petli.
Go to the top of the page
+Quote Post
kuba1ka
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 23.03.2015

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


Tak widze jeden kalendarz. Tu chodzi o wydarzenia jakie sie w nim wyswietlaja.

Standardowo, co pozwala wyswietlic wszystkie i sa one pokazane w kalendarzu. W mojej wersji zawsze pokazuje sie tylko pierwsze z bazy, chodz po mojemu pętla też powinna zwracać więcej niż 1.
  1. <script>
  2.  
  3. $(document).ready(function() {
  4.  
  5. $('#calendar').fullCalendar({
  6. defaultDate: '2015-02-12',
  7. editable: true,
  8. eventLimit: true, // allow "more" link when too many events
  9. events: [
  10. {
  11. title: 'All Day Event',
  12. start: '2015-02-01'
  13. },
  14. {
  15. title: 'Long Event',
  16. start: '2015-02-07',
  17. end: '2015-02-10'
  18. },
  19. {
  20. id: 999,
  21. title: 'Repeating Event',
  22. start: '2015-02-09T16:00:00'
  23. },
  24. {
  25. id: 999,
  26. title: 'Repeating Event',
  27. start: '2015-02-16T16:00:00'
  28. },
  29. {
  30. title: 'Conference',
  31. start: '2015-02-11',
  32. end: '2015-02-13'
  33. },
  34. {
  35. title: 'Meeting',
  36. start: '2015-02-12T10:30:00',
  37. end: '2015-02-12T12:30:00'
  38. },
  39. {
  40. title: 'Lunch',
  41. start: '2015-02-12T12:00:00'
  42. },
  43. {
  44. title: 'Meeting',
  45. start: '2015-02-12T14:30:00'
  46. },
  47. {
  48. title: 'Happy Hour',
  49. start: '2015-02-12T17:30:00'
  50. },
  51. {
  52. title: 'Dinner',
  53. start: '2015-02-12T20:00:00'
  54. },
  55. {
  56. title: 'Birthday Party',
  57. start: '2015-02-13T07:00:00'
  58. },
  59. {
  60. title: 'Click for Google',
  61. url: 'http://google.com/',
  62. start: '2015-02-28'
  63. }
  64. ]
  65. });
  66.  
  67. });
  68.  
  69. </script>


Ew probowalem w ten sposob, ale efekt podobny.

  1. <script type="text/javascript">
  2. <?php
  3. $query = "SELECT ".$prefix."kalendarium.* FROM ".$prefix."kalendarium WHERE kalendarium_aktywny = '1'";
  4. $result=mysql_query($query) or die(mysql_error());
  5.  
  6. $data = date("Y-m-d");
  7. if(mysql_num_rows($result) > 0) {
  8. while($r = mysql_fetch_assoc($result)) {
  9.  
  10.  
  11. echo" $(document).ready(function() {
  12.  
  13. $('#my-next-button').click(function() {
  14. $('#calendar').fullCalendar('next');
  15. });
  16.  
  17. $('#calendar').fullCalendar({
  18. weekends: true,
  19. header: {
  20. left: 'prev,next today',
  21. center: 'title',
  22. right: 'month,basicWeek,basicDay'
  23. },
  24. defaultDate: '".$data."',
  25. editable: false,
  26. eventLimit: true,
  27. events: [
  28. {
  29. title: '".$r['kalendarium_wydarzenie']."',
  30. start: '".$r['kalendarium_dataStart']."',
  31. end: '".$r['kalendarium_dataKoniec']."'
  32. }
  33.  
  34. ]
  35. });
  36.  
  37. });
  38.  
  39. ";
  40. }
  41. }
  42. ?>
  43. </script>



Robie coś nie tak?

Ten post edytował kuba1ka 23.03.2015, 11:16:57
Go to the top of the page
+Quote Post
johny_s
post
Post #4





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


Cytat(kuba1ka @ 23.03.2015, 11:06:42 ) *
Robie coś nie tak?

tak
zapętlasz generowanie skryptu a nie eventow
zerknij w źródło strony tak jak radził @nospor i porównaj czy masz taki sam wynik jak ten który wkleiłeś
Go to the top of the page
+Quote Post
Pyton_000
post
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Jakbyś przeczytał uważnie co @nospor napisał i zajrzał w źródło to byś zobaczył magię.
Poza tym po co xxxx razy w pętli generujesz cały kod JS?

Kod JS dla kalendarza masz wygenerować tylko raz, a w pętli event...
Go to the top of the page
+Quote Post
kuba1ka
post
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 23.03.2015

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


Probowałem w ten sposob :

Zróło jest "chyba" ok ale teraz wgl kalendarza nei zwraca.
  1. <?php
  2.  
  3.  
  4. $query = "SELECT ".$prefix."kalendarium.* FROM ".$prefix."kalendarium WHERE kalendarium_aktywny = '1'";
  5. $result=mysql_query($query) or die(mysql_error());
  6. $tab = array();
  7. if(mysql_num_rows($result) > 0) {
  8. while($r= mysql_fetch_array($result)) {
  9. $tab[] = array(
  10. 'title' => $r['kalendarium_wydarzenie'],
  11. 'start' => $r['kalendarium_dataStart'],
  12. 'end' => $r['kalendarium_dataKoniec']
  13. );
  14. }
  15. }
  16. $json = json_encode($tab);
  17.  
  18.  
  19.  
  20. ?>
  21.  
  22. <script type="text/javascript">
  23.  
  24.  
  25. $(document).ready(function() {
  26.  
  27. $('#my-next-button').click(function() {
  28. $('#calendar').fullCalendar('next');
  29. });
  30.  
  31. $('#calendar').fullCalendar({
  32. weekends: true,
  33. header: {
  34. left: 'prev,next today',
  35. center: 'title',
  36. right: 'month,agendaWeek,agendaDay'
  37. },
  38.  
  39. defaultDate: '<?php echo date("Y-m-d"); ?>',
  40. editable: false,
  41. eventLimit: true, // allow "more" link when too many events
  42.  
  43. events: [
  44. {
  45. <?php echo $json ?>,
  46. },
  47.  
  48. ]
  49.  
  50. });
  51.  
  52. });
  53.  
  54.  
  55. </script>
Go to the top of the page
+Quote Post
Pyton_000
post
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Kod
events: [
                <?php echo $json ?>
            ]
Go to the top of the page
+Quote Post
kuba1ka
post
Post #8





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 23.03.2015

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


mimo to nie pokazuje wyniku( tak widzialem blad ze srednikiem po echo)
Go to the top of the page
+Quote Post
nospor
post
Post #9





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




No widzisz, jednak zrodlo jest ok. Na przyszlosc staraj sie wpierw zaglebic doklanie w problem a nie strzelac.

Skoro juz wiemy, ze petla generuje sie tyle razy ile ma sie generowac mozna przejsc do meritum sprawy:
nie znam tego kalendarza co uzywasz, ale smiem twierdzic, ze o tutaj:
events: [
]
masz podac liste wydarzen. czyli ma byc tylko raz kod z
$('#calendar').fullCalendar({
...
events: [

]
});
});

A w events masz wstawic kolejne wydarzenia z bazy danych. A ty teraz generujesz tyle razy ten kod ile masz rekordow, wiec logiczne ze inicjalizuje ci tylko jedno wydarzenie, gdyz kazdy kod inicjalizuje tylko jedno wydarzenie.
Go to the top of the page
+Quote Post
kuba1ka
post
Post #10





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 23.03.2015

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


Ok, rozwiazane. Dziekuje za pomoc.
Nie umiejetnie stosowalem json_encode.

Ten post edytował kuba1ka 23.03.2015, 19:44:00
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: 7.10.2025 - 17:29