Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nie potrzebne dodawanie rekordu przy odswierzaniu
Forum PHP.pl > Forum > Przedszkole
yalus
  1. <?php
  2. if ($_GET['send']=='wyslij')
  3. {
  4.     mysql_connect (&#092;"localhost\",\"\",\"\");
  5.     mysql_select_db (&#092;"baza\");
  6.  
  7.  
  8.    $zapytanie = &#092;"INSERT INTO database3 SET
  9.         poz1='$_GET[poz1]',
  10.         poz2='$_GET[poz2]'&#092;";
  11.  
  12.  
  13.  
  14.   $wykonaj = mysql_query ($zapytanie) or die(mysql_errno() . &#092;": \" . mysql_error(). \"n\");
  15.                  echo &#092;"<BR>Dane dodane prawidłowo!\";}
  16.  
  17.     else {
  18.  
  19. echo&#092;"
  20. <form method=get action=&#092;"dodaj_dane.php\">
  21.  
  22. <table border=&#092;"0\" >
  23.   <tr><td>Poz1</td><td><input type=&#092;"text\" name=\"poz1\"></td>
  24.   <tr><td>poz2</td><td><input type=&#092;"text\" name=\"poz2\"></td>
  25.   <tr>
  26.      <td colspan=&#092;"2\"><input type=\"submit\" value=\"wyslij\" name=\"send\">
  27.      <input type=&#092;"reset\" value=\"Kasuj\" name=\"B2\"></td>
  28.    </tr>
  29. </table>
  30.  
  31. </form>
  32.  
  33. </body>
  34. </html>&#092;";}
  35.  
  36. ?>



wszystko jest w jednym pliku dodaj_dane.php, w momencie jak dodaje jakies dane do bazy juz po nacisnieciu butona wyslij i jezeli wszystko jest ok pojawiw sie stronka z napisem Dane dodane prawidłowo (tak jak wyzej to widac) i wtym momencie jak nacisne klawisz f5, czyli odswiez zawartosc strony, zostaje dodany nastepny rekord dokladnie ten sam ktory dodalem przed chwila.
to samo sie dzieje jak nacisne bspace czyli cofnij wstecz. wiem dlaczego tak sie dzieje ale nie potrafie temu przeciwdzialac

nie ma znaczenia czy jest to przez get czy post.

jak temu zaradzic??
strife
Było już... po dodaniu rekordu użyj header" title="Zobacz w manualu PHP" target="_manual.. smile.gif i przekieruj usera na inną stronę, bądź na tą samą.. wedle życzenia. cool.gif
zbig13
Zrobiłeś zły warunek na samym początku skryptu. Sprawdzasz tam czy pole 'send' ma wartość 'wyslij'. A przecież przycisk ma value=wyslij i warunek zawsze będzie spełniony nie? Musisz zrobić tak:
  1. <?php
  2.  
  3. if (isset($_GET['send'])) {
  4. ...
  5.  
  6. ?>

Teraz warunek będzie spełniony dopiero gdy zostanie kliknięty przycisk. A i przy wysyłaniu formularzy lepiej używać $_POST, a nie $_GET.
yalus
niestety nawet i ten warunek
  1. <?php
  2. if (isset($_post['send']) && $_post['send']=='wyslij')
  3. ?>
nie rozwiazal sprawy

a z
  1. <?php
  2. ?>
to juz chyba sesje questionmark.gif
crash
No chyba nie tongue.gif header" title="Zobacz w manualu PHP" target="_manual
zbig13
1. W warunku zmieniłeś na $_POST,a w formularzu?
2. Pisz zmienne superglobalne wielkimi literami, czyli $_POST zamiast $_post.
3. Po co znowu sprawdzasz czy przycisk ma wartość 'wyslij'? Mówiłem, że ten warunek jest zawsze spełniony dlatego dodaje za każdym razem rekord.
4. header" title="Zobacz w manualu PHP" target="_manual() to nie sesje.
nospor
no wlasnie poprzez header, czyli po wpisaniu danych robisz przekierowanie na stronę w której dajesz info ze dane zostały dodane. Wtedy F5 już ci nic nie doda
Pigula
ewentualnie mozesz sprawdzac czy poprzedni rekord jest taki sam jak ten ktory masz dodac, ale uzywaj tego rozwiazania w ostatecznosci! lepiej zrobic jak mowili inni przez header. ale wybor nalezy do ciebie.
yalus
ok dziala smile.gif zrobilem przez heder

dzieki
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.