Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Zapisanie danych z formularza w bazie
--Odoakr--
post
Post #1





Goście







Witajcie!

Mam pytanie w sam raz do piaskownicy:)

Czytam sobie kursy PHP i nie mogę doszukać się rozwiązania mojego problemu... Mam formularz, do którego user wpisuje dane, aby je zapisać w bazie danych... Formularz ma parametr np action="skrypt.php" do skryptu, który wykonuje zadanie.

Jednak po wykonaniu zadania zostajemy na przykładowadomena.pl/skrypt.php - jak zrobić, aby po wykonaniu skryptu user automatycznie wrócił na stronę formularza, lub na jakąkolwiek inną. Denerwuje mnie to, że przy klikaniu "odśwież stronę" wpisują się te same dane do bazy.
Go to the top of the page
+Quote Post
emajl22
post
Post #2





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

Ostrzeżenie: (10%)
X----


  1. header("Location: index.php");
Go to the top of the page
+Quote Post
Odoakr
post
Post #3





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 5.03.2008

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


ok dzięki, ale w którym miejscu skryptu to dodać(IMG:style_emoticons/default/questionmark.gif) ?
Go to the top of the page
+Quote Post
sadistic_son
post
Post #4





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


To co kolega podal wyzej dajesz w pliku skrypt.php na samym poczatku, zanim cokolwiek wyswietlisz w html. Mozesz tez uzyc samego htmla, bez php poprzez wstawienie miedzy <head> a </head> tego:
  1. <meta http-equiv="refresh" content="x; url=adres.php">
gdzie x oznacza ilosc sekund po ktorych nastapi automatyczne przekierowanie.
Jednak znacznie lepiej bedzie skopiowac cala zawartosc pliku skrypt.php do pliku ktory chcesz wywolac ostatecznie, czyli pewnie ten z formularzem. Wrzuc to do warunku:
  1. //zakladajac ze przycisk w formularzu nazywa sie "zapisz" robisz tak:
  2. if(isset($_POST['zapisz'])){
  3. //tutaj caly kod z pliku sktypt.php
  4. }
Kod ten oznacza ze jesli istnieje zmienna $_POST['zapisz'] czyli jesli kliknieto w ten przycisk to wykona sie kod z pliku skrypt.php.

Ten post edytował sadistic_son 7.01.2011, 00:55:00
Go to the top of the page
+Quote Post
Kostek.88
post
Post #5





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

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


@sadistic_son: Twój pomysł uważam za dobry, ale (nie wiem czy dobrze pamiętam) po odświeżeniu strony wyświetli się komunikat w przeglądarce o ponownym wysłaniu informacji, który - jeśli go potwierdzimy - spowoduje dodanie nowego rekordu (w rezultacie czego będą 2 koło siebie). A może lepiej skorzystać z header i zrobić w 100% odporność na odświeżanie?

Aha, jeśli chodzi o header. Zakładam, że kolega @Odoakr ma plik skrypt.php wolny od jakiejkolwiek sekcji head/body... może lepiej w takim wypadku dać header na końcu? Przecież w skrypt.php nie są wyświetlane żadne informacje, więc strona pozostaje czysta (tak przypuszczam). Wtedy wykona się skrypt i automatycznie przekieruje na poprzednią stronę, tj. index.php (IMG:style_emoticons/default/smile.gif)

Ten post edytował Kaloryfer 7.01.2011, 01:00:44
Go to the top of the page
+Quote Post
lukaskolista
post
Post #6





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


header jest rozwiazaniem duzo lepszym, niz meta w html.
Dodam, ze aby uniknac problemow przy pozniejszym rozwoju skryptu po header() nalezy dac exit(), bo samo header() poza ustawieniem naglowkow nie konczywykonywania skryptu
  1. header('Location: index.php');
  2. exit();
Go to the top of the page
+Quote Post
Odoakr
post
Post #7





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 5.03.2008

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


Dzięki za odpowiedzi!

wrzucę to wszystko do jednego skryptu i będzie po problemie.

Mam jednak problem z tym headerem...

po wykonaniu kodu pokazuje mi się ostrzeżenie:

  1. Warning: Cannot modify header information - headers already sent by (output started at /home/odoakr/public_html/php/dodaj.php:2) in /home/odoakr/public_html/php/dodaj.php on line 31


Czytałem o tym ostrzeżeniu, ale nie wiem gdzie jest błąd.

tu jest kod
  1. <?php
  2.  
  3.  
  4. $polaczenie = @mysql_connect('odpowiednie_dane')
  5. or die('Brak połączenia z serwerem mysql. Błąd: '.mysql_error());
  6.  
  7. $db = @mysql_select_db('odoakr_testowanie', $polaczenie)
  8. or die('Nie mogę połączyć się z bazą danych. Błąd: '.mysql_error());
  9. //dodawanie wiersza
  10.  
  11. if($_GET['nazwa']==NULL)
  12. {
  13. echo "<form action=\"dodaj.php\" method=\"GET\">
  14.  
  15. nazwa: <input type=text name=nazwa value=ddd><br>
  16. cena: <input type=text name=cena><br>
  17. obrazek: <input type=text name=obrazek><br>
  18. link: <input type=text name=link><br>
  19. <input type=submit value=\"Wyślij\">
  20.  
  21. </form> ";
  22. }
  23. else
  24. {
  25.  
  26. $zapytanie = "INSERT INTO `allegro` (`nazwa`, `link`, `obrazek` , `cena`) VALUES ('".$nazwa."', '".$link."', '".$obrazek."', '".$cena."')";
  27. $idzapytania = mysql_query($zapytanie);
  28. if($idzapytania)
  29. {
  30. header("Location: <a href="http://www.geostrona.pl/php/lista.php&quot%3b%29;" target="_blank">http://www.geostrona.pl/php/lista.php");</a>
  31. exit();
  32. }
  33. else
  34. {
  35. echo "blad";
  36. }
  37. }
  38.  
  39. mysql_close($polaczenie);
  40. ?>


Ten post edytował Odoakr 7.01.2011, 12:38:16
Go to the top of the page
+Quote Post
Kostek.88
post
Post #8





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

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


header masz w złym miejscu: musisz tak rozplanować sobie skrypt, by przed header nie wyświetlało się na stronie absolutnie NIC! Czasem nawet białe znaki bywają problemowe dla header. Nie możesz po prostu dać każdej operacji w osobnym pliku, a formularze i inne bajery wyświetlać w głównej części skryptu? Tak jak napisałeś na samym początku...

Ten post edytował Kaloryfer 9.01.2011, 23:41:20
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 Aktualny czas: 4.10.2025 - 10:42