Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [MySQL][CSS][PHP]Okno POP-UP i rekordy z bazy

Napisany przez: andrzejlechniak 22.07.2019, 18:44:43

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. http://www.php.net/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.

Napisany przez: dublinka 22.07.2019, 19:05:47

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.

Napisany przez: andrzejlechniak 22.07.2019, 19:14:41

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. http://www.php.net/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. http://www.php.net/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. http://www.php.net/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. http://www.php.net/echo '</table>';

Napisany przez: dublinka 22.07.2019, 19:33:18

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)

Napisany przez: viking 22.07.2019, 19:45:13

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

Napisany przez: leonpro778 23.07.2019, 06:58:28

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. <http://december.com/html/4/element/a.html href="#popup<?php echo $row['id']; ?>" class="przycisk_rekord" title="Pokaż szczegóły rekordu">Pokaż</http://december.com/html/4/element/a.html>


A i w div pop-up:
  1. <http://december.com/html/4/element/div.html 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Ż] ?

Napisany przez: andrzejlechniak 23.07.2019, 16:49:37

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.

Napisany przez: nospor 23.07.2019, 17:02:44

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

Napisany przez: andrzejlechniak 23.07.2019, 17:12:07

Dobra, sprawdziłem wszystko. Działa smile.gif Dziękuję za pomoc.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)