JQuery, Ajax, Mysql - okno dialogowe - wyświetlanie danych z MySql

0

Witam,
Drodzy forumowicze, w jaki sposób wykorzystać okno dialogowe aby wyświetlało dane z bazy danych mysql poprzez Ajax ?
Używam JQuery, chciałbym w oknie dialogowym wyświetlać komentarze jakie zostały dodane do konkretnego wiersza ( o znanym ID ) tabeli. Struktura tabeli komentarzy jest następująca:

ID|ID_Zdarzenia|ID_Uzytkownika|Komentarz|Timestamp

Tabela Zdarzeń:

ID|Stan|Godzina_rozp|Godzina_zak|Rodzaj

Utworzyłem w JQgrid tabelę (wycinek poniżej) gdzie na końcu dodaję dwa przyciski "Dodaj" który odpowiada za dodanie komentarza do danego wiersza, oraz "Wyświetl"- gdzie chciałbym aby wszystkie komentarze dodane dla tego wiersza były wyświetlane w oknie dialogowym (zrzut okna dialogowego poniżej)
user image
okno dialogowe gdzie uzupełnia się komentarz:
user image
okno dialogowe gdzie chciałbym aby wyświetlały sie komentarze wszystkich użytkowników
user image

Z wpisywaniem danych poprzez okno dialogowe sobie poradziłem, to z wyświetlaniem komentarzy mam problem bo nie wiem jak to zrobić. Czy ktoś mógłby mi dać wskazówki jak to zrealizować ?
pozdrawiam.

0

Zwróć dane z serwera w JSON i przy ich odbiorze wygeneruj tabelkę i tabelkę wstaw w okienko, albo serwer niech Ci zwróci HTML, a ty ten HTML tylko wstaw.

0

mam utworzony plik c_ViewComments.php:

 <?php  

include("c_dbconfig.php");
session_name('tzLogin');
session_start();

$db = mysql_connect($dbhost, $dbuser, $dbpassword) or die("Connection Error: " . mysql_error()); 
mysql_select_db($database) or die("Error connecting to db."); 
  
  
 //get all books  
 $query = "SELECT * FROM ga_komentarze";  
 $result = mysql_query($query) or die("Error selecting books");  
  
 //display books  
 while($row = mysql_fetch_assoc($result)) {  
 ?>  
  <div class='id' id='id_<?php echo $row['id']; ?>'>  
   <h3><?php echo $row['id_zdarzenia']; ?></h3>  
   <h2><?php echo $row['data_czas']; ?></h2>  
   <p><?php echo $row['id_uzytkownika']; ?></p>  
   <p><?php echo $row['komentarz']; ?></p>  
   <p>-------------------------------------------</p>
  </div>  
 <?php  
 }  
 ?>  

Skrypt dotyczący okna dialogowego:

$pokaz_komentarz = $( "#dialog-comment" ).dialog({
      show: 
	  {
        effect: "fade",
        duration: 200
      },
	  	hide: 
		{
        effect: "fade",
        duration: 200
		},
	  autoOpen: false,
	  resizable: false,
      height: 550,
      width: 800,
      modal: true,
	  buttons:[
				{text: "Zamknij", click: function() { $(this).dialog("close"); }},
				]
    });

Jak pożenić to razem ze sobą ?

0

Masz coś do ładowania danych ajaxem? Np.

// zakladam ze ta funkcja jest wywoływana po kliku
function click_handler() {
  $.ajax({
    url: '/c_ViewComments.php',
    success: function(data) {
      // zmienna data zawiera zwrotke od serwera - wstaw ja w dialoga, potem pokaz (w tej funkcji) dialoga
    }
  });
}
0

Mam funkcję do która jest podpięta do kliknięcia:

function display_comment_window()
{
	$( "#dialog-comment" ).dialog( "open" );
}

Rozumiem że funkcja ma wyglądać tak:

function display_comment_window()
{
    $.ajax({
    url: '/c_ViewComments.php',
    success: function(data) {

    }

  });
  $( "#dialog-comment" ).data('temp_variable', data);
 $( "#dialog-comment" ).dialog( "open" );
}

?

0

Ech, a myślałem, że jasno napisałem, że Twoje akcje powinny być w funkcji success.

Poczytaj ogólnie o funkcji anonimowej - bez tego w JS daleko nie zajdziesz. Poczytaj o ajax. Poczytaj o funkcji ajax (która posiada też zdarzenie błędu - w tym momencie w momencie błędu połaczenia - nie zrobi się nic).

1 użytkowników online, w tym zalogowanych: 0, gości: 1