Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP]Przekazanie formularza do PHP
Forum PHP.pl > Forum > Przedszkole
kaminki
Chciałbym przenieść dane z formularza metodą POST do pliku z php. Na stronie są dwie strefy div. Na jednej jest formularz a na drugiej obszar w którym ma się pokazać wynik przetworzony przez skrypt php w pliku dane.php. Nastąpić to ma po kliknięciu przycisku BUTTON. Przeglądałem o Ajax ale nie ma konkretnie sprecyzowanego do tej sytuacji. Jest błąd lub wynik otwiera się na nowej stronie. Może będzie ktoś wiedział co zrobić.

CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dokument bez tytułu</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
function loadPage(file) {
$('#wynik').load(file);
}
</script>

</head>

<body>

<div id="formularz" style="width:800px; height:300px; background:#0C9; margin: 0 auto">
<div style="text-align:center;">
<p>&nbsp;</p>
<p>&nbsp;</p>
<form id="form" method="post" action="dane.php">
<label id="produkt1" for="produkt1">Produkt</label>
<input type="text" name="produkt1" id="produkt1" /><br/>
<label for="produkt2">Produkt</label>
<input type="text" name="produkt2" id="produkt2" /><br/>
<label for="produkt3">Produkt</label>
<input type="text" name="produkt3" id="produkt3" /><br/>
<label for="produkt4">Produkt</label>
<input type="text" name="produkt4" id="produkt4" /><br/>
<label for="produkt5">Produkt</label>
<input type="text" name="produkt5" id="produkt5" /><br/>
<input id="submit" type="submit" value="Wyslij" onClick="loadPage('dane.php');"/>
<input name="wyczysc" type="reset" value="Wyczysc" />
</form>
</div>
</div>
<div id="wynik" style="width:800px; min-height:300px; background:#0FF; margin: 0 auto">
<?php
include 'dane.php';
?>
</div>

</body>
</html>
trueblue
Spróbuj tak:
  1. function loadPage(file) {
  2. $('#wynik').load(file);
  3. return false;
  4. }

I podepnij pod onsubmit, a nie onclick.
Choć w ten sposób dane z formularza nie zostaną nigdzie przekazane....bo ich nie przekazujesz Ajaxem do PHP.
kaminki
Już sprawdzałem to i nie działa. A w jaki sposób przekazać zmienne do php żebym mógł je odczytać w taki sposób
CODE
$produkt1 = $_POST['produkt1'];


Plik załaduje mi się przy starcie strony do div i jest zbłędami bo jeszcze nie otrzymał wartosci zmiennych z formularza a po kliknięciu SUBMIT nic to juz nie zmienia.

trueblue
  1. $.post( "test.php", $( "#testform" ).serialize() );

Pozostałe opcje (np. jak odbierać dane): https://api.jquery.com/jQuery.post/
kaminki
Próbuje i jakoś mi nie wychodzi oczekiwany rezultat. W dolnym div po wpisaniu np. w górnym okienku "ser" powinno w dolnym pojawic sie "tosty z ogorkiem". Albo mam błąd albo na nowej stronie pokazuje się i nie mogę nic ruszyć dalej. Może ktoś wymyśli coś w tej sytuacji.

CODE
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Dokument bez tytułu</title>
  5. <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" type="text/javascript"></script>
  6. <script type="text/javascript">
  7. $.post( "dane.php", $( "#form" ).serialize() );
  8.  
  9.  
  10. </head>
  11.  
  12.  
  13. <div id="formularz" style="width:800px; height:300px; background:#0C9; margin: 0 auto">
  14. <div style="text-align:center;">
  15. <p>&nbsp;</p>
  16. <p>&nbsp;</p>
  17. <form id="form" method="post" action="dane.php">
  18. <label id="produkt1" for="produkt1">Produkt</label>
  19. <input type="text" name="produkt1" id="produkt1" /><br/>
  20. <label for="produkt2">Produkt</label>
  21. <input type="text" name="produkt2" id="produkt2" /><br/>
  22. <label for="produkt3">Produkt</label>
  23. <input type="text" name="produkt3" id="produkt3" /><br/>
  24. <label for="produkt4">Produkt</label>
  25. <input type="text" name="produkt4" id="produkt4" /><br/>
  26. <label for="produkt5">Produkt</label>
  27. <input type="text" name="produkt5" id="produkt5" /><br/>
  28. <input id="submit" type="submit" value="Wyslij" onClick="loadPage('dane.php');/>
  29. <input name="wyczysc" type="reset" value="Wyczysc" />
  30. </form>
  31. </div>
  32. </div>
  33. <div id="wynik" style="width:800px; min-height:300px; background:#0FF; margin: 0 auto">
  34. </div>
  35.  
  36. </body>
  37. </html>



CODE
  1. <?php
  2. $produkt1 = $_POST['produkt1'];
  3. $produkt2 = $_POST['produkt2'];
  4. $produkt3 = $_POST['produkt3'];
  5. $produkt4 = $_POST['produkt4'];
  6. $produkt5 = $_POST['produkt5'];
  7. // polaczenie z serwerem
  8. if ( !mysql_connect('localhost','root','1234') )
  9. {
  10. echo 'Nie moge polaczyc sie z baza danych';
  11. exit (0);
  12. }
  13. // polaczenie z baza danych
  14. if ( !mysql_select_db('przepisy') )
  15. {
  16. echo 'Blad otwarcia bazy danych';
  17. exit (0);
  18. }
  19. // pobieramy wszystkie dane z tabeli
  20. if (isset($produkt1) && empty($produkt2))
  21. {$zapytanie = "SELECT * FROM skladniki where produkt1='$produkt1' or produkt2='$produkt1' or produkt3='$produkt1'
  22. or produkt4='$produkt1' or produkt5='$produkt1'";}
  23. elseif (isset($produkt1) && isset($produkt2) && empty($produkt3))
  24. {$zapytanie = "SELECT * FROM skladniki where (produkt1='$produkt1' or produkt2='$produkt1' or produkt3='$produkt1'
  25. or produkt4='$produkt1' or produkt5='$produkt1')
  26. && (produkt1='$produkt2' or produkt2='$produkt2' or produkt3='$produkt2'
  27. or produkt4='$produkt2' or produkt5='$produkt2')";}
  28. elseif (isset($produkt1) && isset($produkt2) && isset($produkt3) && empty($produkt4))
  29. {$zapytanie = "SELECT * FROM skladniki where (produkt1='$produkt1' or produkt2='$produkt1' or produkt3='$produkt1'
  30. or produkt4='$produkt1' or produkt5='$produkt1')
  31. && (produkt1='$produkt2' or produkt2='$produkt2' or produkt3='$produkt2'
  32. or produkt4='$produkt2' or produkt5='$produkt2')
  33. && (produkt1='$produkt3' or produkt2='$produkt3' or produkt3='$produkt3'
  34. or produkt4='$produkt3' or produkt5='$produkt3')
  35. ";}
  36. elseif (isset($produkt1) && isset($produkt2) && isset($produkt3) && isset($produkt4) && empty($produkt5))
  37. {$zapytanie = "SELECT * FROM skladniki where (produkt1='$produkt1' or produkt2='$produkt1' or produkt3='$produkt1'
  38. or produkt4='$produkt1' or produkt5='$produkt1')
  39. && (produkt1='$produkt2' or produkt2='$produkt2' or produkt3='$produkt2'
  40. or produkt4='$produkt2' or produkt5='$produkt2')
  41. && (produkt1='$produkt3' or produkt2='$produkt3' or produkt3='$produkt3'
  42. or produkt4='$produkt3' or produkt5='$produkt3')
  43. && (produkt1='$produkt4' or produkt2='$produkt4' or produkt3='$produkt4'
  44. or produkt4='$produkt4' or produkt5='$produkt4')
  45. ";}
  46. elseif (isset($produkt1) && isset($produkt2) && isset($produkt3) && isset($produkt4) && isset($produkt5))
  47. {$zapytanie = "SELECT * FROM skladniki where (produkt1='$produkt1' or produkt2='$produkt1' or produkt3='$produkt1'
  48. or produkt4='$produkt1' or produkt5='$produkt1')
  49. && (produkt1='$produkt2' or produkt2='$produkt2' or produkt3='$produkt2'
  50. or produkt4='$produkt2' or produkt5='$produkt2')
  51. && (produkt1='$produkt3' or produkt2='$produkt3' or produkt3='$produkt3'
  52. or produkt4='$produkt3' or produkt5='$produkt3')
  53. && (produkt1='$produkt4' or produkt2='$produkt4' or produkt3='$produkt4'
  54. or produkt4='$produkt4' or produkt5='$produkt4')
  55. && (produkt1='$produkt5' or produkt2='$produkt5' or produkt3='$produkt5'
  56. or produkt4='$produkt5' or produkt5='$produkt5')
  57. ";}
  58. // zpytanie do mysql
  59. $wynik = mysql_query($zapytanie);
  60. // wyswietlanie danych
  61. while($row = mysql_fetch_array($wynik))
  62. {
  63. echo $row['danie']."<br />";
  64. }

trueblue
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. $('#form').on('submit',function(e){
  4. e.preventDefault();
  5. $.post( "dane.php",
  6. $( "#form" ).serialize(),
  7. function(data){
  8. $('#wynik').html(data);
  9. }
  10. );
  11. });
  12. });
kaminki
Nic nie zmieniło się. Nadal otwiera się na nowej pustej stronie. Restartowałem serwer i też nic
trueblue
Sprawdź nowy kod, edytowałem.

EDIT: jQuery 1.5.0 więc:
  1. $('#form').submit(function(e){
kaminki
Teraz wszystko ładnie wygląda. Dzięki
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.