Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][CSS][PHP]Okno POP-UP i rekordy z bazy, Okno POP-UP nie wyciąga każdego rekordu
andrzejlechniak
post 22.07.2019, 18:44:43
Post #1





Grupa: Zarejestrowani
Postów: 241
Pomógł: 0
Dołączył: 7.11.2008

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


Witam,

Mam taki nietypowy problem.
TESTUJĘ okno POPUP [bez Javascriptu] i wszystko byłoby OK, gdyby nie fakt, że w oknie pop-up jak kliknę wyskakuje mi ten sam wynik - mimo, iż klikam na różne wyniki.
Przykładowo: mam 4 wyniki z bazy. Klikam na pierwszy - i jest OK, potem klikam na 3 - pokazuje mi to samo co w pierwszym, gdy klikam na kolejny - to samo co w 1. Jak to mogę zmienić.
Dodam, że okno POP-up jest bez JS a w samym tym 'oknie' chcę wyciągnąć dane o konkretnym rekordzie. Wszystko zaś roibię w pętli WHILE.

Oto kod [CSS jest OK]:
  1. <a href="#popup1" class="przycisk_rekord">Pokaż</a>


//Okno POP-UP
  1. echo '<div id="popup1" class="overlay">
  2. <div class="popup">
  3. <h2>Here i am</h2>
  4. <a class="close" href="#">&times;</a>
  5. <div class="content">
  6. <p>Thank to pop me out of that button, but now im done so you can close this window - ...<br />
  7. NAZWA - '.$row['nazwa'].' - OPIS - '.$row['opis'].'.</p>
  8. </div>
  9. </div>
  10. </div>';


Ktoś ma może pomysł? Może przeglądarka tak zapamiętuje ostatni lub pierwszy rekord, że nie wyświetla innych?
Proszę o pomoc.
Go to the top of the page
+Quote Post
dublinka
post 22.07.2019, 19:05:47
Post #2





Grupa: Zarejestrowani
Postów: 292
Pomógł: 36
Dołączył: 22.02.2008

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


Zrozumialem ze chcesz po kliknieciu w konkretny link wyswietlic konkretny rekord.
Musisz w takim razie przekazac parametr z konkretnym ID ktory chcesz pobrac.
W oknie popup wyciagasz z tabeli dane o konkretnym id.


Ten post edytował dublinka 22.07.2019, 19:13:15
Go to the top of the page
+Quote Post
andrzejlechniak
post 22.07.2019, 19:14:41
Post #3





Grupa: Zarejestrowani
Postów: 241
Pomógł: 0
Dołączył: 7.11.2008

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


Jak najbardziej. Chciałbym mieć w panelu wszystkie rekordy - rozpisane w skrócie. Gdy kliknę w 'Pokaż', chciałbym wszystkie szczegóły dotyczące konkretnego JEDNEGO rekordu. I jak to zrobić. Problem w tym, że w oknie POPup pokazuje pierwszy rekord z listy a nie każdy.Przesyłam większą część kodu, aby nie wyglądało, jakby to było wyrwane z kontekstu:

  1. $results = mysqli_query($link, 'SELECT * FROM wydarzenia');
  2. echo '<p class="rekordy_napis">Rekordy w bazie</p>
  3. <table>
  4. <tr>
  5. <th class="kom_01">Nazwa</th>
  6. <th class="kom_02">Opis wydarzenia</th>
  7. <th class="kom_03">Data dodania</th>
  8. <th class="kom_04" colspan="2">Akcje</th>
  9. </tr>
  10. <tr>';
  11. while ($row = mysqli_fetch_array($results))
  12. {
  13. echo '<td>'.$row['nazwa'].'</td>
  14. <td>'.$row['opis'].'</td>
  15. <td>'.$row['data'].'</td>
  16. <td class="rekordy_baza">
  17. <a href="#popup1" class="przycisk_rekord" title="Pokaż szczegóły rekordu">Pokaż</a>
  18. <a href="wydarzenia.php?edit='.$row['id'].'" class="przycisk_edycja" title="Edytuj rekord">Edycja</a>
  19. <a href="serwer.php?del='.$row['id'].'" class="przycisk_usun" OnClick="return confirm(\'Czy na pewno T A K Ą decyzję przesłać?\');" title="Usuń rekord">Usuń</a>
  20. </td>
  21. </tr>';
  22.  
  23. //Okno POP-UP
  24. echo '<div id="popup1" class="overlay">
  25. <div class="popup">
  26. <h2>Here i am 2</h2>
  27. <a class="close" href="#">&times;</a>
  28. <div class="content">
  29. <p>Thank to pop me out of that button, but now im done so you can close this window - ...<br />
  30. NAZWA - '.$row['nazwa'].' - OPIS - '.$row['opis'].'.</p>
  31. </div>
  32. </div>
  33. </div>';
  34. }
  35. echo '</table>';
Go to the top of the page
+Quote Post
dublinka
post 22.07.2019, 19:33:18
Post #4





Grupa: Zarejestrowani
Postów: 292
Pomógł: 36
Dołączył: 22.02.2008

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


Wywal caly ten kod popupa z petli.
Trzymaj go gdzies indziej ale nie w petli. Po drugie to tak nie zadziala. Nie wygenerujesz tego tak zeby popup to pokazal od razu. najlepiej to tylko dac link z parametrem id (tak jak to robisz dla usuniecia chocby) i w kodzie popup polaczyc sie z baza, czytac z tabeli konkretny id i pokazac dane.

Mozna jeszcze podczas czytania danych w petli przypisac konkretne sesje do konkretnych danych ale link zostaje. Wtedy zamiast ponownie laczyc sie z baza wyswietlac dane z sesji. Tyle ze tak sie nie powinno robic tzn przechowywac danych w sesjach.

Zobacz sobie co pokazuje kod zrodlowy wygenerowanej strony. (Pętla)

Ten post edytował dublinka 22.07.2019, 19:44:15
Go to the top of the page
+Quote Post
viking
post 22.07.2019, 19:45:13
Post #5





Grupa: Zarejestrowani
Postów: 5 363
Pomógł: 909
Dołączył: 30.08.2006

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


Inna sprawa że id może być w kodzie tylko jeden.


--------------------
Go to the top of the page
+Quote Post
leonpro778
post 23.07.2019, 06:58:28
Post #6





Grupa: Zarejestrowani
Postów: 146
Pomógł: 19
Dołączył: 1.03.2012

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


Cytat(viking @ 22.07.2019, 20:45:13 ) *
Inna sprawa że id może być w kodzie tylko jeden.


Dokładnie, musisz zacząć poprawnie odwoływać się z selektorów <a> do prawidłowych div'ów. Czyli:

  1. <a href="#popup<?php echo $row['id']; ?>" class="przycisk_rekord" title="Pokaż szczegóły rekordu">Pokaż</a>


A i w div pop-up:
  1. <div id="popup<?php echo $row['id']; ?>" class="overlay">


Pisane z pamięci, może być literówka. Kolejna rzecz tak jak wspomniane przez @dublinka takie rozwiązanie jest "brzydkie". Tworzysz tych pop'upów tyle ile masz rekordów. Nie prościej by było stworzyć stworzyć JEDNEGO okienka i wypełniać go danymi po naciśnięciu linku [POKAŻ] ?
Go to the top of the page
+Quote Post
andrzejlechniak
post 23.07.2019, 16:49:37
Post #7





Grupa: Zarejestrowani
Postów: 241
Pomógł: 0
Dołączył: 7.11.2008

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


Szczerze mówiąc, właśnie chodzi mi o to:

- wyświetlanie pojedynczego rekordu w osobnej karcie ale ze wszystkimi danymi dla indywidualnego ID rekordu - w tym samym lub na tej samej stronie ale jako POP-UP.

Jak mogę to zrobić inaczej niż podawano - to grzebanie w kodzie nie ułatwia zadania. To mój prywatny, domowy projekt - więc nie będzie raczej pokazywany publicznie.
Go to the top of the page
+Quote Post
nospor
post 23.07.2019, 17:02:44
Post #8





Grupa: Moderatorzy
Postów: 34 749
Pomógł: 5779
Dołączył: 27.12.2004




To co ci podal leonpro778 to 10 sekund roboty, szczegolnie ze podal ci dokladnie co i gdzie masz zmienic. W czym problem?

Jesli zas naprawde sie upierasz, ze to ma byc na nowej karcie, znaczy ze to ma byc normalna podstrona z info o tym rekordzie. Musisz wiec taka podstrone wpierw zrobic. A czy ja potem bedziesz odpalal w popup czy nie to juz inna sprawa


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
andrzejlechniak
post 23.07.2019, 17:12:07
Post #9





Grupa: Zarejestrowani
Postów: 241
Pomógł: 0
Dołączył: 7.11.2008

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


Dobra, sprawdziłem wszystko. Działa smile.gif Dziękuję za pomoc.
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 Wersja Lo-Fi Aktualny czas: 16.10.2019 - 21:10