Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odświeżanie strony przy zmiennej ?id=1
Forum PHP.pl > Forum > Przedszkole
Vinn
Mam następującą funkcję, która ma za zadanie wyświetlić zapisane w bazie danych newsy:

funkcje_newsy.php
  1. <?php
  2. function wyswietl_liste_newsow()
  3. {
  4. polaczenie();
  5. $zapytanie = "SELECT * FROM `newsy` ORDER BY `data` DESC";
  6. $wyslij = mysql_query($zapytanie);
  7.  
  8. echo "
  9. <div class=\"newsy_naglowek_tytul\">Zapisane newsy</div>
  10. <div class=\"pojemnik_tabel\">
  11. <table class=\"tabelka\">
  12. <tr class=\"head\">
  13. <td>Id</td>
  14. <td>Tytuł newsa</td>
  15. <td>Data publikacji</td>
  16. <td>Aktywne</td>
  17. <td>Akcja</td>
  18. </tr>
  19. ";
  20. $i = 1;
  21. while ($wiersz = mysql_fetch_array($wyslij))
  22. {
  23. if ($wiersz['aktywny'] == 1)
  24. {
  25. $aktywne = "Tak";
  26. $aktywacja = "Deaktywuj";
  27. }
  28. else
  29. {
  30. $aktywne = "Nie";
  31. $aktywacja = "Aktywuj";
  32. }
  33. <tr>
  34. <td class=\"komorka_center\">".$i."</td>
  35. <td class=\"komorka\">&nbsp;".$wiersz['tytul']."</td>
  36. <td class=\"komorka_center\">".$wiersz['data']."</td>
  37. <td class=\"komorka_center\">".$aktywne."</td>
  38. <td class=\"komorka_center\">Edytuj | <a href=\"aktywacja.php?id=".$wiersz['id']."\">".$aktywacja." </a>| Usuń</td>
  39. </tr>";
  40. $i++;
  41. }
  42. </table>
  43. </div>
  44. ";
  45. }
  46. ?>


Plik aktywacja.php
  1. <?
  2. require_once('pokaz.php');
  3. require_once('funkcje_newsy.php');
  4.  
  5.  
  6. pokaz_logo();
  7. pokaz_menu();
  8. news_head();
  9.  
  10. if (is_numeric($_GET['id']) && !empty($_GET['id']))
  11. {
  12. $id = $_GET['id'];
  13. polaczenie();
  14. $zapytanie = "SELECT `aktywny` FROM `newsy` WHERE `id` = '".$id."' LIMIT 1";
  15. $wyslij = mysql_query($zapytanie);
  16. $wiersz = mysql_fetch_array($wyslij);
  17.  
  18. if ($wiersz['aktywny'] == 1)
  19. {
  20. $zapytanie = "UPDATE `newsy` SET `aktywny` = '0' WHERE `id` = '".$id."'";
  21. $wyslij = mysql_query($zapytanie);
  22.  
  23. if ($wyslij)
  24. {
  25. echo '<div class="ok">News zdeaktywowany poprawnie.</div>';
  26. }
  27. else
  28. {
  29. echo '<div class="zle">Bład przy zapisie danych do bazy danych</div>';
  30. }
  31. }
  32. else
  33. {
  34. $zapytanie = "UPDATE `newsy` SET `aktywny` = '1' WHERE `id` = '".$id."'";
  35. $wyslij = mysql_query($zapytanie);
  36.  
  37. if ($wyslij)
  38. {
  39. echo '<div class="ok">News aktywowany poprawnie.</div>';
  40. }
  41. else
  42. {
  43. echo '<div class="zle">Bład przy zapisie danych do bazy danych</div>';
  44. }
  45. header ('Location: index-adm.php');
  46. }
  47. }
  48. else
  49. echo "Zmienna nie jest identyfikatorem ID";
  50. wyswietl_liste_newsow();
  51. news_end();
  52. panel_head();
  53. pokaz_panel_logowania();
  54. pokaz_menu_admina();
  55. pokaz_rajdy();
  56. pokaz_progress();
  57. pokaz_stopke();
  58. ?>


Teraz po kliknięciu w link AKTYWUJ, który posiada adres aktywacja.php?id=1 news jest albo aktywowany/deaktywowany. Problem z tym, że jak ktoś aktywuje newsa, a następnie kliknie klawisz F5, to news zostanie ponownie zdeaktywowany/aktywowany.

Czy jest jakiś sposób, aby uniknąć tego typu działania?

Jeżeli ktoś ma jakieś wskazówki, bądź gotowe rozwiązanie - będę wdzięczny.

Z góry dziękuję za wszelkie odpowiedzi.
Spav
Witam.

  1. <?php
  2. header ('Location: index-adm.php');
  3. ?>
jest po wczesniejszym wywolaniu 'echo', header musi byc pierwszym outputem. Najlatwiej wywal te echo i przechodz headerem na strone przekazujac np w get parametr komunikatu.
Mozesz tez zostawic te echo i javascriptowym 'location.href' z np 5 sek timeout przechodzic na index-adm.php.

Przyklad:

  1. <?
  2. require_once('pokaz.php');
  3. require_once('funkcje_newsy.php');
  4.  
  5.  
  6. pokaz_logo();
  7. pokaz_menu();
  8. news_head();
  9.  
  10. if(isset($_GET['komunikat']))
  11. {
  12. if ($_GET['komunikat'] == 1)
  13. {
  14. echo '<div class="ok">News zdeaktywowany poprawnie.</div>';
  15. }
  16. else if( $_GET['komunikat'] == 2)
  17. {
  18. echo '<div class="ok">News aktywowany poprawnie.</div>';
  19. }
  20. elseif ( $_GET['komunikat'] == 3 )
  21. {
  22. echo '<div class="zle">Bład przy zapisie danych do bazy danych</div>';
  23. }
  24. }
  25.  
  26. if (is_numeric($_GET['id']) && !empty($_GET['id']))
  27. {
  28. $id = $_GET['id'];
  29. polaczenie();
  30. $zapytanie = "SELECT `aktywny` FROM `newsy` WHERE `id` = '".$id."' LIMIT 1";
  31. $wyslij = mysql_query($zapytanie);
  32. $wiersz = mysql_fetch_array($wyslij);
  33.  
  34. $zapytanie = "UPDATE `newsy` SET `aktywny` = '".($wiersz['aktywny']?'0':'1')."' WHERE `id` = '".$id."'";
  35. $wyslij = mysql_query($zapytanie);
  36.  
  37. $komunikat = $wiersz['aktywny'] ? '1' : '2';
  38.  
  39. header ('Location: index-adm.php?komunikat='.($wyslij ? $komunikat : '3') );
  40.  
  41. }
  42. else
  43. echo "Zmienna nie jest identyfikatorem ID";
  44. wyswietl_liste_newsow();
  45. news_end();
  46. panel_head();
  47. pokaz_panel_logowania();
  48. pokaz_menu_admina();
  49. pokaz_rajdy();
  50. pokaz_progress();
  51. pokaz_stopke();
  52. ?>


Mam nadzieje ze nie ma bledu smile.gif
batman
Temat wałkowany wiele razy na forum. Wystarczy poszukać.
Zamykam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.