Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Formularz metoda get i post
Forum PHP.pl > Forum > Przedszkole
Puchatek320
Cześć,
Ostatnio pisałem na temat formularz,ponieważ miałem problem z przesyłaniem, jeśli użyje metody post wszystko jest ok. Jeśli użyje metody get nie działa strona tak jak powinna, problemem jest zastosowanie przyjaznych linków ponieważ na podstawie adresu ustalam jaki plik wczytać może ktoś powiedzieć jak rozwiązać ten problem?

  1. <?php
  2.  
  3.  
  4. if(array_key_exists('v', $_GET)) {
  5. $module = $_GET['v'];
  6. } else {
  7. $module = 'wyswietlanie_filmow';
  8. }
  9.  
  10. $moduleDir = 'modules/' . $module . '.php';
  11. if(file_exists($moduleDir)){
  12. include($moduleDir);
  13. $content = ob_get_contents();
  14.  
  15. include("layout/layout.php");
  16. }
  17.  
  18. else
  19. {
  20. echo'nie ma takiej strony :/';
  21. }
  22.  
  23. ?>


Szybki skrót: Jeśli w pasku adresu występuje v=formularz to strona przechodzi do pliku o nazwie formularz niestety, problem pojawia się gdy użyje metody get ponieważ modyfikuje cały pasek adresu. Może ktoś ma jakiś sposób jak to obejść?

W metodzie post wygląda to tak: http://localhost/index.php?v=search
W get niestety tutaj wszystko się zmienia http://localhost/index.php?v=&search=test&metoda=tag
Tomplus
Co masz w <form action='??'>
bo zdaje mi się że powinno być <form action='/index.php?v=search' method='post'>
Puchatek320
Tak, niestety nic to nie zmienia :/
  1. <form class="form-inline" action="index.php?v=search" method="get" enctype="multipart/form-data" name="form1">
ponieważ nie wiedzieć czemy jeśli użyje = przy znaku ? to nie pojawia się nic w pasku adresu co daje nam wynik

http://localhost/index.php?search=test&metoda=tag
dublinka
Masz dac post nie get.
Nawet jak masz ustalona metode post to mozesz przesylac parametry czytajac poorzez get
Puchatek320
Cytat(dublinka @ 26.11.2019, 08:51:15 ) *
Masz dac post nie get.
Nawet jak masz ustalona metode post to mozesz przesylac parametry czytajac poorzez get


Jeśli dobrze zrozumiałem to mam użyć przesyłanie metodą post a odebrać get?
Jeśli tak to niestety nie działa, pojawia się błąd
  1. Notice
  2. : Undefined index: search in
  3. D:\modules\search.php
  4. on line
  5. 6
  6.  
  7.  
  8. Notice
  9. : Undefined index: metoda in
  10. D:\modules\search.php
  11. on line
  12. 8


formularz
  1. <form class="form-inline" action="index.php?v=search" method="post" enctype="multipart/form-data" name="form1">
  2.  
  3.  
  4. <input class="form-control mr-1" type="search" placeholder="Wyszukaj" name="search">
  5.  
  6. <div class="mr-1 p-3">Szukaj w</div>
  7. <select name="metoda">
  8. <option value="tag" />Tagi Filmu
  9. <option value="nazwa" />Nazwa filmu
  10. </select><br></br>
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17. <div class="col-1"><button class="btn btn-light" type="submit">Znajdź</button></div>
  18. </form>


Wyszukiwarka

  1. <?php
  2. include('login.php');
  3. include('./db/connection.php');
  4.  
  5. $szukaj = ("+");
  6. $szukaj .= $_GET["search"];
  7.  
  8. $metoda = $_GET["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. ?>
dublinka
print (isset($_GET['costam'])) ? $_GET['costam'] : 'brak wartosci';

Sprawdz

Po pierwsze nie $_GET'search'] bo to wartosc a $_GET['v'] bo to zmienna jest.

Jesli chcesz porownywac to

if($_GET['v'] == 'search')
{
rob cos
}
Puchatek320
Cytat(dublinka @ 26.11.2019, 09:19:12 ) *
print (isset($_GET['costam'])) ? $_GET['costam'] : 'brak wartosci';

Sprawdz

Po pierwsze nie $_GET'search'] bo to wartosc a $_GET['v'] bo to zmienna jest.

Jesli chcesz porownywac to

if($_GET['v'] == 'search')
{
rob cos
}

Przyszło mi do głowy że można zrobić to w ten sposób

  1. if(isset($_GET['metoda']) && $_GET['metoda'] == 'nazwa'){
  2.  
  3. $module = 'search';
  4. }
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.