Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Odświażanie - Ponowne dodanie informacji do bazy danych
darney
post
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 21.08.2010
Skąd: Gdynia

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


Witam. Napisałem krótki programik do dodawania komentarzy. Wszystko dodaje się znakomicie. Mam problem dość popularny i nie potrafię zastosować do niego rozwiązań.

Chciałbym, aby po odświeżeniu strony nie ukazywał się komunikat "Aby wyświetlić tę stronę, Firefox musi ponownie przesłać dane, które spowodują powtórzenie zadań wykonanych wcześniej (takich jak przeszukiwanie czy potwierdzenie zlecenia)."

Interesuję mnie sposób na zablokowanie możliwości dodania tych samych danych do bazy poprzez odświeżanie.
Interesująco rozwiązują ten problem z komunikatem i ponownym wysłaniem danych portale takie jak NK przy dodawaniu komentarzy do zdjęć.

Jaką funkcje najlepiej zastosować i w którym miejscu muszę ją zadeklarować?. Proszę o poradę


  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  7.  
  8. <label for="imie">Imię:</label>
  9. <input type="text" id="imie" name="imie" /><br />
  10. <label for="temat">Temat: </label>
  11. <input type="text" id="temat" name="temat" /><br />
  12. <label for="tresc">Tresc: </label>
  13. <input type="text" id="tresc" name="tresc" /><br />
  14. <input type="submit" name="submit" value="Wyślij" />
  15. </form>
  16.  
  17.  
  18. <?php
  19. $dbc = mysqli_connect('localhost', 'root', '', 'bazor')
  20. or die('Brak połączenia z serwerem MySQL.');
  21. mysqli_set_charset($dbc, "utf8");
  22.  
  23. // dane klienta (tylko po przesłaniu formularza).
  24. if (isset($_POST['submit']) ) {
  25. $imie = $_POST['imie'];
  26. $temat = $_POST['temat'];
  27. $tresc = $_POST['tresc'];
  28.  
  29. $query = "INSERT INTO bazor (imie, temat, tresc, time) VALUES ('$imie', '$temat', '$tresc', now())";
  30. mysqli_query($dbc, $query)
  31. or die('Błąd w zapytaniu do bazy danych.');
  32.  
  33. echo 'Dodano dane klienta.';
  34.  
  35. mysqli_close($dbc);
  36. }
  37.  
  38.  
  39. ?>
  40.  
  41. <?PHP
  42. include('show.php');
  43. ?>


Zawartość include show.php

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <link href="show.css" rel="stylesheet" type="text/css" />
  7.  
  8.  
  9. <?php
  10. $dbc = mysqli_connect('localhost', 'root', '', 'bazor')
  11. or die('Brak połączenia z serwerem MySQL.');
  12. mysqli_set_charset($dbc, "utf8");
  13.  
  14. $query = "SELECT * FROM bazor ORDER BY time DESC " ;
  15.  
  16. $result = mysqli_query($dbc, $query);
  17.  
  18.  
  19. while ($row = mysqli_fetch_array($result)) {
  20.  
  21. $imie = $row['imie'] ;
  22. $temat = $row['temat'];
  23. $tresc = $row['tresc'];
  24. ?><div class="tabelka">
  25. <?php
  26. echo $imie;
  27.  
  28. ?>
  29. <br><br>
  30. <?php
  31.  
  32. echo $temat;
  33.  
  34. ?>
  35. <br><br>
  36. <?php
  37.  
  38.  
  39. echo $tresc;
  40. ?> </div>
  41. <br><br>
  42. <?php
  43. }
  44.  
  45. mysqli_close($dbc);
  46. ?>
Go to the top of the page
+Quote Post
gothye
post
Post #2





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


Komunikat dodaj w sesji usera ,a potem header do kąd chcesz i wyświetlenie komunikatu z sesji ..


--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
nospor
post
Post #3





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




Przypięty temat
http://forum.php.pl/index.php?showtopic=44...t=0&start=0


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

"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
darney
post
Post #4





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 21.08.2010
Skąd: Gdynia

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


Rozwiązałem problem odświeżania dodając przed rozłączeniem z bazą header("Location: nazwa_tej_samej_strony.php");

Chciałbym mieć teraz komunikat "dane zostały dodane pomyślnie" a po odświeżeniu strony taka informacja znikała by a program nie wykonywał żadnych skryptów jak do tej pory.

W jaki sposób byście to rozwiązali ?

Ten post edytował darney 15.09.2010, 22:57:21
Go to the top of the page
+Quote Post
nospor
post
Post #5





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




zamiast header location uzyj header refresh. Wówczas komunikat się wyswietli a strona przekieruje się po np. 5 sekundach. Przyklad masz w manualu przy komentarzach do header.

Mozesz tez uzyc header jak do tej pory oraz zapamietac komunikat do wyswietlenia w sesji. Po przekierowaniu pobrac z sesji komunikat i go wyswietlic


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

"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
darney
post
Post #6





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 21.08.2010
Skąd: Gdynia

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


header refresh ciekawa sprawa i funkcjonuje na skrypcie komentarzy.

Dlaczego w skrypcie do wysyłania emaili ukazuje się komunikat błędu ?

Warning: Cannot modify header information - headers already sent by (output started at /home/leczncal/public_html/ks/ac_mail.php:10) in /home/leczncal/public_html/ks/ac_mail.php on line 133
You'll be redirected in about 3 secs. If not, click here. (tutaj nic się nie dzieje)

  1. <?php
  2. if (isset($_POST['submit']) ) {
  3. $name = $_POST['firstname'] . ' ' . $_POST['lastname'];
  4. $last_name = $_POST['lastname'];
  5. $email = $_POST['email'];
  6. $other = $_POST['other'];
  7.  
  8. $to = 'mail@gmail.com';
  9. $subject = 'zgłoszenie';
  10. $msg = "$name: \n" .
  11.  
  12. "Inne komentarze: $other";
  13. mail($to, $subject, $msg, 'From:' . $email);
  14.  
  15. header( "refresh:5;url=index10.php" );
  16. echo 'You\'ll be redirected in about 3 secs. If not, click <a href="index10.php">here</a>.';
  17.  
  18.  
  19. }
  20.  
  21.  
  22. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #7





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




Problem omawiany milion razy. Uzyj wyszukiwarki


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

"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
darney
post
Post #8





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 21.08.2010
Skąd: Gdynia

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


Zastosowałem się do tej opcji i niestety nie mogę sobie z tym poradzić. Proszę o pomoc

  1. <?php
  2. if (isset($_POST['submit']) ) {
  3. $name = $_POST['firstname'] . ' ' . $_POST['lastname'];
  4. $last_name = $_POST['lastname'];
  5. $email = $_POST['email'];
  6. $other = $_POST['other'];
  7.  
  8.  
  9. $to = 'mail@gmail.com';
  10. $subject = 'zgłoszenie';
  11. $msg = "$name: \n" .
  12.  
  13. "Inne komentarze: $other";
  14. mail($to, $subject, $msg, 'From:' . $email);
  15. $tekst = 'You\'ll be redirected in about 3 secs. If not, click <a href="index10.php">here</a>.';
  16.  
  17.  
  18. header( "refresh:5;url=index10.php" );
  19.  
  20.  
  21. }
  22.  
  23.  
  24.  
  25. ?>


Ten post edytował darney 16.09.2010, 10:09:01
Go to the top of the page
+Quote Post
nospor
post
Post #9





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




ob_start ma byc na samym początku wszystkiego. Przeciez wyraźnie jest to opisane milion razy. smile.gif


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

"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
darney
post
Post #10





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 21.08.2010
Skąd: Gdynia

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


Probowalem wszedzie go dawac i za przeproszeniem dupa.

  1. <?php
  2.  
  3. if (isset($_POST['submit']) ) {
  4. $name = $_POST['firstname'] . ' ' . $_POST['lastname'];
  5. $last_name = $_POST['lastname'];
  6. $email = $_POST['email'];
  7. $other = $_POST['other'];
  8.  
  9. $to = 'mail@gmail.com';
  10. $subject = 'zgłoszenie';
  11. $msg = "$name: \n" .
  12.  
  13. "Inne komentarze: $other";
  14. mail($to, $subject, $msg, 'From:' . $email);
  15. $tekst = 'You\'ll be redirected in about 3 secs. If not, click <a href="index10.php">here</a>.';
  16.  
  17.  
  18.  
  19. header( "refresh:5;url=index10.php" );
  20.  
  21.  
  22. }
  23.  
  24.  
  25.  
  26. ?>


Probowalem tez tak.

  1. <?php
  2.  
  3. if (isset($_POST['submit']) ) {
  4. $name = $_POST['firstname'] . ' ' . $_POST['lastname'];
  5. $last_name = $_POST['lastname'];
  6. $email = $_POST['email'];
  7. $other = $_POST['other'];
  8.  
  9. $to = 'dariuszniemczak@gmail.com';
  10. $subject = 'kSenior - zgłoszenie';
  11. $msg = "$name: \n" .
  12.  
  13. "Inne komentarze: $other";
  14. mail($to, $subject, $msg, 'From:' . $email);
  15. $tekst = 'You\'ll be redirected in about 3 secs. If not, click <a href="index10.php">here</a>.';
  16.  
  17. echo $tekst;
  18. header( "refresh:5;url=index10.php" );
  19.  
  20.  
  21.  
  22. }
  23.  
  24.  
  25. ?>
  26.  
  27.  


I dalej moge powiedziec tylko powyższe slowo.

Ten post edytował darney 16.09.2010, 10:18:05
Go to the top of the page
+Quote Post
nospor
post
Post #11





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




No ale nie masz przypadkiem jakiejś spacji/entera na samym początku? Albo BOM spowodowanego zapisem pliku w UTF?


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

"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
darney
post
Post #12





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 21.08.2010
Skąd: Gdynia

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


co to znaczy spacje entera na samym początku czyli gdzie ? w skrypcie PHP czy w HTML ?. Strone koduje w UTF-8 całą i w bazie mam UTF8 GENERAL CI. Staram się kodować według standardów portali bo tam jest UTF-8 Chyba że się myle

Ten post edytował darney 16.09.2010, 10:27:00
Go to the top of the page
+Quote Post
nospor
post
Post #13





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




No i mówie. Utf8 wiąze sie z BOM. Włacz wyszukiwarke bo też jest o tym mowa. Moze twoj edytor dopisuje BOM. Masz ustawic by nie dopisywal


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

"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
darney
post
Post #14





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 21.08.2010
Skąd: Gdynia

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


Już rozwiązałem problem

Musiałem na samym początku całego dokumentu HTML wstawic
<?php
ob_start();
?>

I na samym końcu całego dokumentu za sekcja BODY zakończyć ob_end_flush();

Troszeczkę wasz poradnik mnie zmylił ale i tak Dziękuje za pomoc. Męczę się z tym dalej próbując na różne sposoby pokazywać komunikat. smile.gif

Nie do końca jeszcze rozumiem działanie sesji

Czy aby komunikat pokazał się a po odświeżeniu strony F5 skrypt nie wykonywał żadnego zadania a komunikat znikał w trakcie odświeżania to potrzebna jest sesja ?. Nie ma innego rozwiązania z headerami jakoś wprowadzić skrypt w wariacje która pozwoli zaspokoić moje potrzeby : ) ?
Go to the top of the page
+Quote Post
nospor
post
Post #15





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




Cytat
Musiałem na samym początku całego dokumentu HTML wstawic

Cytat
Troszeczkę wasz poradnik mnie zmylił

A co ja napisałem?
Cytat
ob_start ma byc na samym początku wszystkiego


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

"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
darney
post
Post #16





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 21.08.2010
Skąd: Gdynia

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


na początku wszystkiego to pojęcie dość względne smile.gif na początku wszystkiego może być sam skrypt PHP smile.gif na początku wszystkiego co zaczyna dany program od momentu <?php

gdybyś napisał na początku dokumentu przed sekcją <!DOCTYPE lub <head to załapał bym odrazu. Można także posługiwać się przykładami

  1. <?php
  2. ?>
  3. <html>
  4. <head>
  5. // meta-dane, tytuł itp.
  6. </head>
  7. <body>
  8. // treść strony
  9. </body>
  10. </html>
  11. <?php
  12. ?>


to już w ogule rozwiązało by to mój problem, przecież to przedszkole, ale i tak dziękuje za pomoc

Oczywiście jest to pewien sukces tyle że chciał bym aby komunikat pozostał do czasu odświeżenia strony tak jak założyłem we wstępie. W momencie odświeżenia znikał bez ładowania ponownie skryptu. Czy jest możliwość dokonania tego bez udziału sesji ?
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 Aktualny czas: 19.08.2025 - 04:08