Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Ponowne przesłanie formularza
Forum PHP.pl > Forum > Przedszkole
Puchatek320
Cześć,
Chciałbym się dowiedzieć jak można ominąć ponowne przesłanie formularza. Mam stronę internetową z wyszukiwarką jeśli jej użyje wszystko jest fajne, do czasu gdy wybieram film i chcę cofnąć stronę do wyników wyszukiwania to pojawia się komunikat o treści "Potwierdź ponowne przesłanie formularza". Co można z tym zrobić? nie mam żadnego pomysłu jak można ten problem obejść w internecie też nie znalazłem jakiejś sensownej odpowiedzi.

plik wyszukiwarki
  1. <?php
  2. include('login.php');
  3. include('./db/connection.php');
  4.  
  5. $szukaj = ("+");
  6. $szukaj .= $_POST["search"];
  7.  
  8. $metoda = $_POST["metoda"];
  9. $znakrozdzielenia=' +';
  10.  
  11. $wyn = str_replace(" ", "$znakrozdzielenia", $szukaj);
  12.  
  13.  
  14. $klucze=explode($znakrozdzielenia, $szukaj);
  15.  
  16. foreach($klucze AS $wynik){}
  17.  
  18.  
  19. $zapytanie = $pdo->prepare("SELECT * FROM filmy WHERE MATCH(".$metoda.") AGAINST ('".$wyn."')ORDER BY id DESC"); //zmienna $pdo pochodzi z db/connection.php
  20. $zapytanie->execute(); // wykonaj zayptanie do bazy danych
  21. while($rekord = $zapytanie->fetch()) {
  22.  
  23.  
  24.  
  25. echo"<div class='col-md-4'><div class='card; bg-dark m-2'><div class='embed-responsive embed-responsive-16by9'>
  26. <video controls><source src= $rekord[short] type='video/mp4' frameborder='0' ></video></div><div class='card-content text-center'><span class='card-title'><a href=index.php?v=watch&id=$rekord[id]>$rekord[nazwa]</a></span></div><!-- card content --> </div></div>";
  27.  
  28. }
  29.  
  30. ?>
  31.  
dublinka
Mozesz sama szukana przypisac sesji i dodac jako fraza te sesje. Sesja istnieje dopuki jej nie usuniesz wiec bedzie "dzialac" tak jakby byla wklepana przez kogos. Za kadym razem bedzie nadpisywana nowa fraza do wyszukania.
kapslokk
IMO nie trzeba nic kombinować z sesją, wystarczy dane wyszukiwania wysyłać GET'em a nie POST'em. Poza tym kod, który podałeś jest podatny na SQL Injection - powinieneś to poprawić.
Puchatek320
Sesja to dobry pomysł ale pytanie jak można to wykonać?

  1. if (isset($_POST['search'])){
  2. $_SESSION['szukane'] = 1;
  3. }
  4. if (!isset($_SESSION['szukane'])){
  5. }
  6.  
  7. else{
  8. tutaj kod wyszukiwarki
  9. }

Ale dalej wyświetla błąd.

Sesja już działa ponieważ zalogowałem się na stronę ale nie wiem jak można to podpiąć pod stronę wyszukiwania, żeby pozbyć się tego błędu.


Poprawiłem to w ten sposób, użyłem sesji logowania ponieważ przed wejściem na serwis trzeba się zalogować ale niestety dalej wyświetlany jest błąd :/

if (!isset($_SESSION['logged'])){
}

else{tutaj kod}


dublinka
  1. if(isset($_POST['szukana'])){
  2. $_SESSION['szukana']=$_POST['szukana'];
  3. }else{
  4. $_SESSION['szukana'] = $_SESSION['szukana'] ;
  5. }
  6.  
  7. if(isset($_SESSION['szukana'])) II (isset($_POST['szukana']))
  8. {
  9. if(isset($_POST['szukana'])){
  10. $szukaj=$_POST['szukana'];
  11. }else{
  12. $szukaj= $_SESSION['szukana'] ;
  13. }
  14. // tu kod szukarki. $szukana to argument funkcji do wyszukania (fraza)
  15. }
nospor
@dublinka dwa II obok siebie to nie OR... Dwa || a i owszem.
Pozatym twoj kod nie rozwiazuje problemu w zaden sposob. Jak juz wspomniano wczesniej: form ma isc GETem a nie POSTem. Sesja tu nic nie poprawia
dublinka
Cytat(nospor @ 7.11.2019, 09:41:32 ) *
@dublinka dwa II obok siebie to nie OR... Dwa || a i owszem.
Pozatym twoj kod nie rozwiazuje problemu w zaden sposob. Jak juz wspomniano wczesniej: form ma isc GETem a nie POSTem. Sesja tu nic nie poprawia

Pisalem na tel i owszem dalem zle znaki.
Jesli sesja bedzie zarejestorwna = przypisana z pola forma to da rade.Nawet jesli sie wroci z innej strony bo sesja ktora zawiera fraze bedzie brana jakoby byla wklepana w forma
nospor
Cytat
esli sesja bedzie zarejestorwna = przypisana z pola forma to da rade.Nawet jesli sie wroci z innej strony bo sesja ktora zawiera fraze bedzie brana jakoby byla wklepana w forma

Ale przeczytaj z jakim problemem zglosil sie autor... sesja nic nie poradzi na fakt, ze jak klikniej COFNIJ w przegladarce to bedzie dostawal ciagle ten sam blad. Tutaj pomoze tylko wyslanie formularza GETem, jak juz wspominano
Puchatek320
Dzięki za pomoc panowie użyłem metody "GET" ale mam pytanie jak można się go pozbyć "&metoda=tag" z paska adresu lub jak ukryć. Chciałbym żeby zostało "http://localhost/index.php?search=test" bez "&metoda=tag" jak jest w tej chwili.

http://localhost/index.php?search=test&metoda=tag

Zauważyłem że jeśli zmienię metodę z post na get to wyszukiwarka nie działa :/ ktoś wyjaśni dlaczego?

$szukaj .= $_GET["search"];

$metoda = $_GET["metoda"];

zmieniłem z post na get i powinno działać bez problemu przesyłanie formularza, również ustawiłem na get.

Znalazłem przyczynę nie wiedzieć czemu jeśli zmienię metodę z post na get to jest wyświetlana strona głowna z filmami przy metodzie post wszystko jest okey, i wyszukiwarka dziala.

  1. <form class="form-inline" action="index.php?v=search" method="get" enctype="multipart/form-data" name="form1">
  2.  
  3. <input class="form-control mr-1" type="search" placeholder="Wyszukaj" name="search">
  4. <div class="mr-1 p-3">Szukaj w</div>
  5. <select name="metoda">
  6. <option value="tag" />Tagi Filmu
  7. <option value="nazwa" />Nazwa filmu
  8. </select><br></br>
  9. <div class="col-1"><button class="btn btn-light" type="submit">Znajdź</button></div>
  10. </form>
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-2024 Invision Power Services, Inc.