Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX][MySQL][PHP]Ładowanie rekordów z bazy do DIV, div, ładowanie rekordów, AJAX
morfineusz
post 13.07.2013, 16:26:03
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 13.07.2013

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


Witam wszystkich forumowiczów, w pierwszym poście chciałbym się serdecznie przywitać i poprosić o pomoc.

Chce aby treść z bazy danych wyświetlił się w oznaczonym przeze mnie Div'ie

MySQL | PLIK | WYNIK
dane | index.php | wyświetlenie danych w pliku index.php do div'a o ID="tekst"

Nie mam bladego pojęcia jak to napisać. Znam PHP ale nie bardzo JS oraz AJAX. Może ktoś mi podpowiedzieć jak to napisać?

Pozdrawiam.

Ten post edytował morfineusz 13.07.2013, 16:27:11
Go to the top of the page
+Quote Post
b4rt3kk
post 13.07.2013, 16:39:26
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Witaj na forum.

Jak? Przede wszystkim dobrze. Nie jest to dział w którym ktoś przedstawi Ci gotowe rozwiązanie, możemy jedynie pomóc co nieco.

Przede wszystkim, jesteś pewien, że potrzebujesz do tego JS+Ajax? W którym momencie chcesz by treść z bazy danych pojawiła się w tym divie? Jak użytkownik coś kliknie? Chcesz by odbywało się to bez przeładowania strony? Jeśli tak to wtedy rzeczywiście Ajax.

A jeśli nie, to poczytaj sobie o mysqli, bądź PDO w manualu.
http://php.net/manual/en/book.mysqli.php
http://php.net/manual/en/book.pdo.php


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
morfineusz
post 13.07.2013, 16:52:18
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 13.07.2013

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


Dziękuję bardzo za te linki na pewno przeczytam. Nie szukam gotowego rozwiązania, chce się czegoś nauczyć, potrzebuje tylko naprowadzenia czego muszę użyć.

Może powiem dokładnie o co mi chodzi. Mam swój system CMS ale chce wprowadzić pewne zmiany.

w pliku config.php (plik jest includowany na samej górze strony) chce aby był skrypt który wyświetli mi elementy menu w odpowiednim divie.

W bazie danych mam zapisane menu: ID | NAZWA | TYTUŁ | TRESC

po kliknięciu na element z menu wysyłam zapytanie do bazy aby w divie o id="tekst" wyświetlił mi treść strony o ID = 1 (np)

Na dzień dzisiejszy includuje dwa pliki. Pierwszy plik w divie o id="menu", drugi zaś plik w divie o id="tresc" Chce te dwa pliki połączyć w jeden includowany na samej górze strony.
Go to the top of the page
+Quote Post
b4rt3kk
post 13.07.2013, 17:00:36
Post #4





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Cytat(morfineusz @ 13.07.2013, 17:52:18 ) *
Dziękuję bardzo za te linki na pewno przeczytam. Nie szukam gotowego rozwiązania, chce się czegoś nauczyć, potrzebuje tylko naprowadzenia czego muszę użyć.

Może powiem dokładnie o co mi chodzi. Mam swój system CMS ale chce wprowadzić pewne zmiany.

w pliku config.php (plik jest includowany na samej górze strony) chce aby był skrypt który wyświetli mi elementy menu w odpowiednim divie.

W bazie danych mam zapisane menu: ID | NAZWA | TYTUŁ | TRESC

po kliknięciu na element z menu wysyłam zapytanie do bazy aby w divie o id="tekst" wyświetlił mi treść strony o ID = 1 (np)

Na dzień dzisiejszy includuje dwa pliki. Pierwszy plik w divie o id="menu", drugi zaś plik w divie o id="tresc" Chce te dwa pliki połączyć w jeden includowany na samej górze strony.


Pokaż może kawałek kodu, jak to obecnie wygląda? Jeśli chcesz by odbywało się to bez przeładowania (wczytanie treści do diva), to tak jak wspomniałem wyżej - Ajax. A żeby uprościć nieco sprawę użyj biblioteki jQuery, pójdzie szybciej, niż pisanie w czystym JS:
http://api.jquery.com/jQuery.ajax/
Wysyłaj pobrane z bazy dane jako obiekt json (funkcja json_encode), co ułatwi późniejszą obróbkę w JS (ponieważ otrzymasz tablicę).

Natomiast jeśli dopuszczasz przeładowanie strony, to chyba wiesz jak odczytać dane z bazy za pomocą PHP? Czy nie?


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
morfineusz
post 13.07.2013, 17:05:09
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 13.07.2013

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


Jak najbardziej, dopuszczam przeładowanie strony. Tak, wiem jak odczytać dane z bazy danych, jak najbardziej. Nie wiem tylko jak skierować te dane do np. skryptu JS albo AJAX :/

Dodatkowo chciałem serdecznie podziękować za podesłanie informacji na temat PDO - z pewnością zacznę stosować bibliotekę PDO.

Skrypt który chce przerobić:
  1. <script type="text/javascript">
  2. window.onload = function(){displayText();}
  3. function displayText()
  4. {
  5. document.getElementById('menu').innerHTML = "pobranie menu z bazy dancyh lub załadowanie skryptu PHP";
  6. document.getElementById('text').innerHTML = "wyświetlenie tekstu po kliknęciu w link z menu";
  7. }
  8. </script>


Ten post edytował morfineusz 13.07.2013, 17:54:25
Go to the top of the page
+Quote Post
b4rt3kk
post 13.07.2013, 18:04:44
Post #6





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


A jak kod menu wygląda? Bo coś mi się wydaje, że Twój skrypt JS może być niepotrzebny.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
morfineusz
post 13.07.2013, 18:06:26
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 13.07.2013

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


Cytat(b4rt3kk @ 13.07.2013, 19:04:44 ) *
A jak kod menu wygląda? Bo coś mi się wydaje, że Twój skrypt JS może być niepotrzebny.



Mój kod do ładowania menu wygląda tak:

  1. <ul>
  2. <?php
  3. $sql = 'SELECT * FROM `cms_site_menu` ORDER BY `poz` ASC';
  4. $result = mysql_query($sql);
  5.  
  6. while ($row = mysql_fetch_array ($result, MYSQL_NUM))
  7. {
  8. if($row[4]==1)
  9. {
  10. $id=mysql_query("SELECT `id` FROM cms_site_menu WHERE `name`=".$row[1]."");
  11. echo '<li><a href="?p='.$id.'&t='.$row[3].'" class="tip" title="'.$row[2].'" >'.$row[1].'</a></li>';
  12. }
  13. }
  14. ?>
  15. </ul>
Go to the top of the page
+Quote Post
b4rt3kk
post 13.07.2013, 18:20:19
Post #8





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Najprostsze rozwiązanie (jeśli chodzi o przekazywanie zmiennych PHP do JS) wygląda tak:

  1. <script type="text/javascript">
  2. window.onload = function(){displayText();}
  3. function displayText()
  4. {
  5. document.getElementById('menu').innerHTML = "pobranie menu z bazy dancyh lub załadowanie skryptu PHP";
  6. document.getElementById('text').innerHTML = "<?php echo $wiersz_pobrany_z_bazy; ?>";
  7. }
  8. </script>


Przydałby się jednak cały kod, bo nie do końca łapię co chcesz osiągnąć, za pomocą JS. Skoro elementy menu masz już pobrane, link masz pobrane, to wystarczy, że po kliknięciu wczytasz odpowiednią zawartość z bazy danych. Jakie tutaj ma mieć jeszcze zastosowanie JS? Natomiast jeśli idzie o załadowanie całości w jednym pliku, to zwyczajnie, zamiast wyświetlać zawartość przypisz ją do zmiennej:

  1. <?php
  2. $menu = '<ul>';
  3.  
  4. $sql = 'SELECT * FROM `cms_site_menu` ORDER BY `poz` ASC';
  5. $result = mysql_query($sql);
  6.  
  7. while ($row = mysql_fetch_array ($result, MYSQL_NUM))
  8. {
  9. if($row[4]==1)
  10. {
  11. $id=mysql_query("SELECT `id` FROM cms_site_menu WHERE `name`=".$row[1]."");
  12. $menu .= '<li><a href="?p='.$id.'&t='.$row[3].'" class="tip" title="'.$row[2].'" >'.$row[1].'</a></li>';
  13. }
  14. }
  15.  
  16. $menu .= '</ul>';
  17. ?>


I teraz nic nie stoi na przeszkodzie, by ową zmienną wywołać w dowolnym miejscu strony.

  1. <?php
  2. include('plik_z_menu.php');
  3. ?>
  4. <body>
  5. jakas sobie tresc
  6. a tutaj chce miec menu
  7. <?php echo $menu; ?>


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
morfineusz
post 21.07.2013, 12:22:10
Post #9





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 13.07.2013

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


Bardzo pomocny post oraz kod! Na pewno przyda mi się w rozwiązaniu problemu.

Dokładnie co chce osiągnąć:

Teraz ładowanie menu oraz tekstu wygląda tak:
  1. <html>
  2. <head>
  3.  
  4. </head>
  5. <body>
  6.  
  7. <div id="menu">
  8. <?php include(menu.php); ?>
  9. </div>
  10.  
  11. <div id="text">
  12. <?php include('text.php'); ?>
  13. </div>
  14.  
  15. </body>
  16. </html>


plik menu.php:
  1. <ul>
  2. <?php
  3. $sql = 'SELECT * FROM `cms_site_menu` ORDER BY `poz` ASC';
  4. $result = mysql_query($sql);
  5.  
  6. while ($row = mysql_fetch_array ($result, MYSQL_NUM))
  7. {
  8. if($row[4]==1)
  9. {
  10. $id=mysql_query("SELECT `id` FROM cms_site_menu WHERE `name`=".$row[1]."");
  11. echo '<li><a href="?p='.$id." class="tip" title="'.$row[2].'" >'.$row[1].'</a></li>';
  12. }
  13. }
  14. ?>
  15. </ul>

plik text.php
  1. echo $text="SELECT `data` FROM `cms_site_menu` WHERE `id`=".$_GET['p']."";


Chce aby wyglądało to tak:
  1. <html>
  2. <head>
  3. <?php include(ladowanie.php); ?>
  4. </head>
  5. <body>
  6.  
  7. <div id="menu">
  8.  
  9. </div>
  10.  
  11. <div id="text">
  12.  
  13. </div>
  14.  
  15. </body>
  16. </html>


a w pliku ladowanie.php skrypt który przekazuje menu do div'a id="menu" a potem tekst do div'a id="text". Pokombinuje z tym kodem co mi podesłałeś smile.gif mam nadzieje że coś z tego wyjdzie.

Problem został rozwiązany! Dziękuje wszystkim za pomoc z tym skryptem, okazał się łatwiejszy niż przypuszczałem. Poniżej wklejam gotowy kod:

  1.  
  2. <?php
  3. //Łączeni z bazą danych.
  4. @mysql_connect('localhost', 'root', '')
  5. or die('Brak połączenia z serwerm MySQL!');
  6. @mysql_select_db('cms_db')
  7. or die('Nie można połączyć się z wybraną bazą danych!');
  8.  
  9. //Pętla wczytywania menu z bazy danych i przekazanie do zmiennej.
  10.  
  11. $poczatek = '<ul>';
  12.  
  13. $sql = 'SELECT * FROM `cms_site_menu` ORDER BY `poz` ASC';
  14. $result = mysql_query($sql);
  15.  
  16. while ($row = mysql_fetch_array ($result, MYSQL_NUM))
  17. {
  18.  
  19.  
  20. $id=mysql_query("SELECT * FROM cms_site_menu");
  21. $srodek .= '<li><a href="?p='.$row[0].'" class="tip" title="'.$row[2].'" >'.$row[1].'</a></li>';
  22.  
  23. }
  24.  
  25. $koniec .= '</ul>';
  26.  
  27.  
  28. $final = "".$poczatek.$srodek.$koniec.""; //WAŻNE ŻEBY ZMIENNA BYŁA W CUDZYSŁOWACH (musi zostać zapisana jako string, inaczej JS nie wyświetli zmiennej).
  29. ?>
  30.  
  31. <script type="text/javascript">
  32. window.onload = function(){
  33. document.getElementById('menu').innerHTML = "<?php echo $final;?>";
  34. }
  35. </script>
  36.  
  37. <div id="menu">
  38.  
  39. </div>
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: 5.05.2025 - 06:06