Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pobranie danych z MySQL do formularza.
Forum PHP.pl > Forum > Przedszkole
Tuomi
Witam ponownie.
Mam pytanie, jak zrobić, by w wysyłanym do mnie formularzu, były dane wpisywane przez wysyłającego, a także informacje pobrane z bazy.
Przykładowo na stronie jest link
  1. <a href=zamow.php?a=zamow&amp;id={$r[0]} target=_blank><button>ZAMÓW</button></a>

no i jest OK. Otwiera mi podstronę zamow.php z danymi pobranymi z MySQL.
  1. <?php
  2. include 'log.php'; //plik konfiguracyjny bazy
  3. mysql_connect ("$host","$user","$password");
  4. /*
  5.   odbieramy zmienne przekazane w linku jak w poradzie
  6.   <a href="http://www.kess.com.pl/?sid=10&pid=43" target="_blank">http://www.kess.com.pl/?sid=10&pid=43</a>
  7. */
  8. $a = trim($_REQUEST['a']);
  9. $id = trim($_GET['id']);
  10. if($a == 'zamow' and !empty($id)) {
  11. /* zapytanie do tabeli */
  12. $wynik = mysql_query("SELECT * FROM spis WHERE
  13. id='$id'")
  14. or die('Błąd zapytania');
  15. /*
  16.   wy?wietlamy wyniki, sprawdzamy,
  17.   czy zapytanie zwróciło warto?ć większ? od 0
  18.   */
  19. if(mysql_num_rows($wynik) > 0) {
  20. /* odczytujemy zawarto?ć wiersza z tabeli */
  21. $r = mysql_fetch_assoc($wynik);
  22. /* wczytujemy dane do formularza */
  23. echo 'Tu są dane książek np autor: '.$r['autor'].' tytul: '.$r['tytul'].' nmumer identyfikacyjny książki: '.$r['identyfikator'].'';
  24. }
  25. }?>

Moje pytanie brzmi, jak połączyć powyższy skrypt z tym
  1. <?php
  2. //--- początek formularza ---
  3. if(empty($_POST['submit'])) {
  4. ?>
  5. <table align=center>
  6. <form action="zamow.php" method="post">
  7. <tr><td>Twoje imię:</td><td><input type="text" name="imie"/></td></tr>
  8. <tr><td>Twoje nazwisko:</td><td><input type="text" name="nazwisko"/></td></tr>
  9. <tr><td>Twój e-mail:</td><td><input type="text" name="mail"/></td></tr>
  10. <tr><td>Twój telefon (opcjonalnie):</td><td><input type="text" name="telefon"/></td></tr>
  11. <tr><td colspan=2 align=center>
  12. <input type="hidden" name="autor"/>
  13. <input type="hidden" name="tytul"/>
  14. <input type="hidden" name="identyfikator"/>
  15. <input type="submit" name="submit" value="Zamów"/></td>
  16. </tr>
  17. </form>
  18. </table>
  19. <?php
  20. } else {
  21. //twoje dane
  22. $email = 'marko_hietala@o2.pl';
  23. //dane z formularza
  24. $imie = $_POST['imie'];
  25. $nazwisko = $_POST['nazwisko'];
  26. $mail = $_POST['mail'];
  27. $telefon = $_POST['telefon'];
  28. $autor = $_POST['autor'];
  29. $tytul = $_POST['tytul'];
  30. $identyfikator = $_POST['identyfikator'];
  31. if(!empty($imie) && !empty($nazwisko) && !empty($mail)) {
  32. //--- początek funkcji weryfikującej adres e-mail ---
  33. function checkMail($checkmail) {
  34. if(filter_var($checkmail, FILTER_VALIDATE_EMAIL)) {
  35. if(checkdnsrr(array_pop(explode("@",$checkmail)),"MX")){
  36. return true;
  37. }else{
  38. return false;
  39. }
  40. } else {
  41. return false;
  42. }
  43. }
  44. //--- koniec funkcji ---
  45. if(checkMail($mail)) {
  46. //dodatkowe informacje: ip i host użytkownika
  47. $ip = $_SERVER['REMOTE_ADDR'];
  48. $host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
  49. //tworzymy szkielet wiadomości
  50. //treść wiadomości
  51. $mailText = "$imie $nazwisko chce pozyczyc ksaizke: $autor - $tytul ($identyfikator)\nDane: $imie $nazwisko / $mail / $telefon";
  52. //adres zwrotny
  53. $mailHeader = "From: $imie $nazwisko <$mail>";
  54. //funkcja odpowiedzialna za wysłanie e-maila
  55. @mail($email, 'Formularz kontaktowy', $mailText, $mailHeader) or die('Błąd: wiadomość nie została wysłana');
  56. //komunikat o poprawnym wysłaniu wiadomości
  57. echo 'Wiadomość została wysłana';
  58. } else {
  59. echo 'Adres e-mail jest niepoprawny';
  60. }
  61. } else {
  62. //komunikat w przypadku nie powodzenia
  63. echo 'Wypełnij wszystkie pola formularza';
  64. }}?>

Zależy mi głównie na tym, bym w e-mailu dostawał info:
  1. "$imie $nazwisko chce pozyczyc ksiazke: $autor - $tytul ($identyfikator)\nDane: $imie $nazwisko / $mail / $telefon"

Poniżej podaję skrypt (nie działający), który napisałem próbując połączyć powyższe skrypty
  1. <?php
  2. //--- początek formularza ---
  3. if(empty($_POST['submit'])) {
  4. ?>
  5. <?php
  6. include 'log.php';
  7. mysql_connect ("$host","$user","$password");
  8. /*
  9.   odbieramy zmienne przekazane w linku jak w poradzie
  10.   <a href="http://www.kess.com.pl/?sid=10&pid=43" target="_blank">http://www.kess.com.pl/?sid=10&pid=43</a>
  11. */
  12. $a = trim($_REQUEST['a']);
  13. $id = trim($_GET['id']);
  14. if($a == 'zamow' and !empty($id)) {
  15. /* zapytanie do tabeli */
  16. $wynik = mysql_query("SELECT * FROM spis WHERE
  17. id='$id'")
  18. or die('Błąd zapytania');
  19. /*
  20.   wy?wietlamy wyniki, sprawdzamy,
  21.   czy zapytanie zwróciło warto?ć większ? od 0
  22.   */
  23. if(mysql_num_rows($wynik) > 0) {
  24. /* odczytujemy zawarto?ć wiersza z tabeli */
  25. $r = mysql_fetch_assoc($wynik);
  26. /* wczytujemy dane do formularza */
  27. /*
  28.   w formularz znajduj? się ukryte pola "a"
  29.   z warto?ci? "save" i pole "id" z warto?ci?
  30.   zmiennej id
  31.   */
  32. echo '<table align=center>
  33. <form action="zamow.php" method="post">
  34. <tr><td>Twoje imię:</td><td><input type="text" name="imie"/></td></tr>
  35. <tr><td>Twoje nazwisko:</td><td><input type="text" name="nazwisko"/></td></tr>
  36. <tr><td>Twój e-mail:</td><td><input type="text" name="mail"/></td></tr>
  37. <tr><td>Twój telefon (opcjonalnie):</td><td><input type="text" name="telefon"/></td></tr>
  38. <tr><td colspan=2 align=center>
  39. <input type="hidden" name="autor" value='.$r['autor'].'/>
  40. <input type="hidden" name="tytul" value='.$r['tytul'].'/>
  41. <input type="hidden" name="identyfikator" value='.$r['identyfikator'].'/>
  42. <input type="submit" name="submit" value="Zamów"/></td>
  43. </tr>
  44. </form>
  45. </table>';
  46. }
  47. }?>
  48. <?php
  49. } else {
  50. //twoje dane
  51. $email = 'marko_hietala@o2.pl';
  52. //dane z formularza
  53. $imie = $_POST['imie'];
  54. $nazwisko = $_POST['nazwisko'];
  55. $mail = $_POST['mail'];
  56. $telefon = $_POST['telefon'];
  57. $autor = $_POST['autor'];
  58. $tytul = $_POST['tytul'];
  59. $identyfikator = $_POST['identyfikator'];
  60. if(!empty($imie) && !empty($nazwisko) && !empty($mail)) {
  61. //--- początek funkcji weryfikującej adres e-mail ---
  62. function checkMail($checkmail) {
  63. if(filter_var($checkmail, FILTER_VALIDATE_EMAIL)) {
  64. if(checkdnsrr(array_pop(explode("@",$checkmail)),"MX")){
  65. return true;
  66. }else{
  67. return false;
  68. }
  69. } else {
  70. return false;
  71. }
  72. }
  73. //--- koniec funkcji ---
  74. if(checkMail($mail)) {
  75. //dodatkowe informacje: ip i host użytkownika
  76. $ip = $_SERVER['REMOTE_ADDR'];
  77. $host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
  78. //tworzymy szkielet wiadomości
  79. //treść wiadomości
  80. $mailText = "$imie $nazwisko chce pozyczyc ksaizke: $autor - $tytul ($identyfikator)\nDane: $imie $nazwisko / $mail / $telefon";
  81. //adres zwrotny
  82. $mailHeader = "From: $imie $nazwisko <$mail>";
  83. //funkcja odpowiedzialna za wysłanie e-maila
  84. @mail($email, 'Formularz kontaktowy', $mailText, $mailHeader) or die('Błąd: wiadomość nie została wysłana');
  85. //komunikat o poprawnym wysłaniu wiadomości
  86. echo 'Wiadomość została wysłana';
  87. } else {
  88. echo 'Adres e-mail jest niepoprawny';
  89. }
  90. } else {
  91. //komunikat w przypadku nie powodzenia
  92. echo 'Wypełnij wszystkie pola formularza';
  93. }}?>

Z góry dzięki za pomoc;)

Ok. Poradziłem sobie. Zrobiłem opcję zapisywania danych zamawiającego do nowej tabeli bazy danych:P Ale mam pytanie. Czy jest jakiś skrypt, który będzie mi wysyłał e-mail albo wyświetlał na stronie informację, że dodano nowy rekord do bazy?
b4rt3kk
Jest taka funkcja mail(). Wystarczy, że wstawisz ją w odpowiednim miejscu, np. po wykonaniu zapytania.

  1. if (mysql_query($query)) {
  2. mail($to, $subject, 'Dodano nowy rekord do bazy', $headers);
  3. }


i gotowe.
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.