Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nie potrzebne dodawanie rekordu przy odswierzaniu, ....jak sie tego pozbyc??
yalus
post 18.07.2005, 17:46:52
Post #1





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

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


  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??

Ten post edytował yalus 18.07.2005, 17:48:18


--------------------
człowiek nie sznurek wszystko wytrzyma
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
strife
post 18.07.2005, 18:04:19
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


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

Ten post edytował scarface 18.07.2005, 18:05:23


--------------------
Go to the top of the page
+Quote Post
zbig13
post 18.07.2005, 18:07:14
Post #3





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

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


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.
Go to the top of the page
+Quote Post
yalus
post 18.07.2005, 18:27:50
Post #4





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

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


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

Ten post edytował yalus 18.07.2005, 18:28:13


--------------------
człowiek nie sznurek wszystko wytrzyma
Go to the top of the page
+Quote Post
crash
post 18.07.2005, 18:31:37
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


No chyba nie tongue.gif header" title="Zobacz w manualu PHP" target="_manual


--------------------
Go to the top of the page
+Quote Post
zbig13
post 18.07.2005, 18:34:38
Post #6





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

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


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.
Go to the top of the page
+Quote Post
nospor
post 18.07.2005, 18:36:59
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


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

"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
Pigula
post 18.07.2005, 20:59:18
Post #8





Grupa: Zarejestrowani
Postów: 446
Pomógł: 0
Dołączył: 5.03.2005
Skąd: Lublin

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


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.
Go to the top of the page
+Quote Post
yalus
post 18.07.2005, 21:02:39
Post #9





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

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


ok dziala smile.gif zrobilem przez heder

dzieki


--------------------
człowiek nie sznurek wszystko wytrzyma
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: 31.07.2025 - 09:23