Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] formularz sam wysyła maila :O
Forum PHP.pl > Forum > Przedszkole
fakenmr
oneeyedsmiley02.png Witam mam taki problem :

A mianowicie jestem sobie na swojej stronie zrobiłem formularz dodałem kod żeby ten dane z formularza trafiały do bazy danych no jest ok trafiać trafiają ale jest małe ale

mam 3 zakładki Strona główna Kontakt(ten formularz właśnie) i Logowanie Admina

i po kliknięciu na Kontakt automatycznie wysyła mi pusty zbiór mam pytanie czemu tak się dzieje może ktoś pomoże mi to rozwiązać Poniżej zamieszczam swój kodzik smile.gif


  1. <?php
  2. include ('config.php');
  3.  
  4. //dodawanie według typu
  5. if($_GET['typ'])
  6. {
  7. //list polecon dodawanie
  8. if($_GET['typ']=='list_polecony')
  9. {
  10. //dodanie
  11. if($_POST['refresh'] and $_POST['refresh']!=$_SESSION['refresh'])
  12. {
  13. $_SESSION['refresh']=$_POST['refresh'] ;
  14. $date = $_POST['data_nadania']." ".$_POST['data_nadania_g'].":".$_POST['data_nadania_m'];
  15. $data_nadania=strtotime($date);
  16.  
  17. if(mysql_query("INSERT INTO `reklamacja` (`nr_nadania` ,`imie_rekl` ,`nazwisko_rekl` ,`ulica_rekl` ,`kod_poczt_rekl` ,`miasto_rekl` ,`mail`, `tel_rekl` , `temat` ,`tresc`)VALUES ( '".$_POST['nr_nadania']."', '".$_POST['imie_rekl']."', '".$_POST['nazwisko_rekl']."', '".$_POST['ulica_rekl']."', '".$_POST['kod_poczt_rekl']."', '".$_POST['miasto_rekl']."', '".$_POST['mail']."', '".$_POST['telefon']."', '" .$_POST['tresc']."','".$_POST['temat']."');"))
  18. {
  19. Echo "<font color='green'>Wysłano Pomyślnie Wiadomość</font>";
  20. }
  21. else
  22. {
  23. Echo "<font color='red'>Nie udało się wysłać wiadomości - prawdopodobnie zrobiłeś/-aś jakiś mały błąd</font>";
  24. }
  25. ?>



I Formularz
  1. <form action="" method="POST" style="margin-top:10px;" >
  2. <table width="493" id="tbl_insert">
  3. <tr></tr>
  4. <tr>
  5. <th width="149" scope="col"> </th>
  6. <th width="250" scope="col">Proszę wypenić wszystkie pola</th>
  7. </tr>
  8. <tr>
  9. <th scope="row">Numer nadania</th>
  10. <td><input type="text" name="nr_nadania" id="nr_nadania"></td>
  11.  
  12.  
  13. </tr>
  14. <tr>
  15. <th scope="row">Imię </th>
  16. <td><input type="text" name="imie_rekl" id="imie_rekl"></td>
  17.  
  18. </tr>
  19. <tr>
  20. <th scope="row">Nazwisko</th>
  21. <td><input type="text" name="nazwisko_rekl" id="nazwisko_rekl"></td>
  22.  
  23. </tr>
  24. <tr>
  25. <th scope="row">Ulica</th>
  26. <td><input type="text" name="ulica_rekl" id="ulica_rekl"></td>
  27.  
  28. </tr>
  29. <tr>
  30. <th scope="row">Kod Pocztowy</th>
  31. <td><input type="text" name="kod_poczt_rekl" id="kod_poczt_rekl"></td>
  32.  
  33. </tr>
  34. <tr>
  35. <th scope="row">Miasto</th>
  36. <td><input type="text" name="miasto_rekl" id="miasto_rekl"></td>
  37.  
  38. </tr>
  39. <tr>
  40. <th scope="row">E-mail</th>
  41. <td><input type="text" name="mail" id="mail"></td>
  42.  
  43. </tr>
  44. <tr>
  45. <th scope="row">Telefon</th>
  46. <td><input type="text" name="tel_rekl" id="tel_rekl"></td>
  47.  
  48. </tr>
  49. <tr>
  50.  
  51.  
  52. </tr>
  53. <tr>
  54. <th scope="row">Godzina</th>
  55. <td><input size="2" maxlength="2" name="data_nadania_g" type="text" value="<?=date("H");?>"/>
  56. minuta
  57. <input size="2" maxlength="2" name="data_nadania_m" type="text" value="<?=date("i");?>"/></td>
  58. </tr>
  59. <tr>
  60. <tr>
  61. <th scope="row">Temat</th>
  62. <td><select name="temat" id="temat">
  63. asdasdasd
  64. </select></td>
  65.  
  66. </tr>
  67. <tr>
  68. <th scope="row">Treść</th>
  69. <td><textarea name="tresc" id="tresc"></textarea></td>
  70.  
  71. </tr>
  72. <tr>
  73. <th scope="row"> </th>
  74.  
  75. <td><input name="btn" type="image" src="images/menu/wyslij.png" id="btn" style="width: 100px;float:right;" value="Wyślij" /></td>
  76. </tr>
  77. </table>
  78. <input type="hidden" name="MM_insert" value="form">
  79. </form>
Posio
eeeeeee.... ponieważ twój kod jest bez sensu ?
fakenmr
Cytat(Posio @ 17.04.2012, 22:41:18 ) *
eeeeeee.... ponieważ twój kod jest bez sensu ?
zapomniałem zrobić i dodać rodzajów już jest dodane ale ciągle wysyła mi puste pola po kliknięciu na kontakt
Niktoś
Faktycznie,bez sensu.Proponowałbym poczytać o metodach przesyłania danych POST I GET-to są dwie odrębne metody, a Ty u siebie używasz w warunkach raz $_GET ,raz $_POST-najpierw może zdecyduj się czym wysyłasz formularz.
Posio
Przyznam szczerze... nie rozumiem twojego kodu ani troszke ...

wysyła samemu ponieważ jeśli dostanie:
  1. if($_GET['typ']=='list_polecony')


a pola sa tablica POST jest pusta....
-fakenmr-
Oki Poprawiłem tu jest cały kod chyba dobry trochę poczytałem i chyba już ok ale dalej nie wysyła ;/;/;/;/;/;/;/;/;/;/
Insert INTO wpisywałem w tej samej kolejności tak jak w formularzu i nie wiem ocb ;/;/;/

  1. <?php
  2. require("config.php");
  3. connect();
  4. $nrnadania = $_POST['nrnadania'];
  5. $imie_rekl= $_POST['imie_rekl'];
  6. $nazwisko_rekl = $_POST['nazwisko_rekl'];
  7. $ulica_rekl = $_POST['ulica_rekl'];
  8. $kod_poczt_rekl = $_POST['kod_poczt_rekl'];
  9. $miasto_rekl = $_POST['miasto_rekl'];
  10. $mail = $_POST['mail'];
  11. $tel_rekl = $_POST['tel_rekl'];
  12. $temat = $_POST['temat'];
  13. $tresc = $_POST['tresc'];
  14.  
  15. $ins = mysql_query("INSERT INTO `reklamacja` VALUES('$nrnadania','$imie_rekl','$nazwisko_rekl','$ulica_rekl','$kod_poczt_rekl','$miasto_rekl','$mail','$tel_rekl','$temat','$tresc')");
  16.  
  17. if($ins)
  18. echo "Rekord zostal dodany poprawnie";
  19. else {
  20. echo "Blad nie udalo sie dodac nowego rekordu";
  21. }
  22. mysql_close($connection);
  23.  
  24.  
  25. ?>





  1. <form action="" method="POST" style="margin-top:10px;" >
  2. <table width="493" id="tbl_insert">
  3. <tr></tr>
  4. <tr>
  5. <th width="149" scope="col">&nbsp;</th>
  6. <th width="250" scope="col">Proszę wypenić wszystkie pola</th>
  7. </tr>
  8. <tr>
  9. <th scope="row">Numer nadania</th>
  10. <td><input type="text" name="nr_nadania" id="nr_nadania"></td>
  11.  
  12.  
  13. </tr>
  14. <tr>
  15. <th scope="row">Imię </th>
  16. <td><input type="text" name="imie_rekl" id="imie_rekl"></td>
  17.  
  18. </tr>
  19. <tr>
  20. <th scope="row">Nazwisko</th>
  21. <td><input type="text" name="nazwisko_rekl" id="nazwisko_rekl"></td>
  22.  
  23. </tr>
  24. <tr>
  25. <th scope="row">Ulica</th>
  26. <td><input type="text" name="ulica_rekl" id="ulica_rekl"></td>
  27.  
  28. </tr>
  29. <tr>
  30. <th scope="row">Kod Pocztowy</th>
  31. <td><input type="text" name="kod_poczt_rekl" id="kod_poczt_rekl"></td>
  32.  
  33. </tr>
  34. <tr>
  35. <th scope="row">Miasto</th>
  36. <td><input type="text" name="miasto_rekl" id="miasto_rekl"></td>
  37.  
  38. </tr>
  39. <tr>
  40. <th scope="row">E-mail</th>
  41. <td><input type="text" name="mail" id="mail"></td>
  42.  
  43. </tr>
  44. <tr>
  45. <th scope="row">Telefon</th>
  46. <td><input type="text" name="tel_rekl" id="tel_rekl"></td>
  47.  
  48. </tr>
  49. <tr>
  50.  
  51.  
  52. </tr>
  53. <th scope="row">Temat</th>
  54. <td><select name="temat" id="temat">
  55. asdasdasd
  56. </select></td>
  57.  
  58. </tr>
  59. <tr>
  60. <th scope="row">Treść</th>
  61. <td><textarea name="tresc" id="tresc"></textarea></td>
  62.  
  63. </tr>
  64. <tr>
  65. <th scope="row">&nbsp;</th>
  66.  
  67. <td><input name="btn" type="image" src="images/menu/wyslij.png" id="btn" style="width: 100px;float:right;" value="Wyślij" /></td>
  68. </tr>
  69. </table>
  70. <input type="hidden" name="MM_insert" value="form">
  71. </form>
thek
A ja Ci powiem coś... Czemu przypisujesz od razu w skrypcie do zmiennych wartości z $_POST ? Ta tablica jest superglobalna i istnieje ZAWSZE. Jeśli zrobisz jak zrobisz to skrypt łyknie wszystko cacy ale sypnie warningi, że dany index w tablicy $_POST nie istnieje, każdą zmienną ustawi pustą... i wykona INSERT. By temu zapobiec nie wal na pałę skryptu jak masz, ale sprawdzaj, czy został wciśnięty submit! W Twoim wypadku jest to do zrobienia poprzez sprawdzenie, czy w zmiennej $_POST istnieje element 'btn'.
Czyli kod byłby w stylu:
  1. <?php
  2. require("config.php");
  3. connect();
  4. if(array_key_exists('btn', $_POST)) // lub if(isset($_POST['btn'])) czy inny wariantywny
  5. {
  6. $nrnadania = $_POST['nrnadania'];
  7. $imie_rekl= $_POST['imie_rekl'];
  8. $nazwisko_rekl = $_POST['nazwisko_rekl'];
  9. $ulica_rekl = $_POST['ulica_rekl'];
  10. $kod_poczt_rekl = $_POST['kod_poczt_rekl'];
  11. $miasto_rekl = $_POST['miasto_rekl'];
  12. $mail = $_POST['mail'];
  13. $tel_rekl = $_POST['tel_rekl'];
  14. $temat = $_POST['temat'];
  15. $tresc = $_POST['tresc'];
  16.  
  17. $ins = mysql_query("INSERT INTO `reklamacja` VALUES('$nrnadania','$imie_rekl','$nazwisko_rekl','$ulica_rekl','$kod_poczt_rekl','$miasto_rekl','$mail','$tel_rekl','$temat','$tresc')");
  18.  
  19. if($ins)
  20. echo "Rekord zostal dodany poprawnie";
  21. else {
  22. echo "Blad nie udalo sie dodac nowego rekordu";
  23. }
  24. mysql_close($connection);
  25. }
  26. ?>

I takie sprawdzenie da Ci to czego chcesz, czyli wykonanie INSERT jedynie gdy ktoś wysłał formularz, a nie gdy po prostu wszedł na stronę. A na przyszłość włączaj PEŁEN debug w display_errors, włącznie z warningami.
fakenmr
zrobiłem tak jak mi napisałeś jak i również dodałem skrypt sprawdzający błędy (tak jak jest w helpie hostingu )i wyskakuje błąd

  1. "19 Apr 2012 15:31:36","/homepages/0/d343669875/htdocs/przesylkipocztowe/kontakt.php: 96","(Notice) Undefined variable: connection"
  2. "19 Apr 2012 15:31:36","/homepages/0/d343669875/htdocs/przesylkipocztowe/kontakt.php: 96","(Warning) mysql_close(): supplied argument is not a valid MySQL-Link resource"


natomiast mój config.php to

  1. <?
  2.  
  3. function connect() {
  4. //dostep do bazy danych
  5. $User = '********';
  6. $Name = '*******';
  7. $UserPass = '*******';
  8. $dbHandle = mysql_connect("********", $User, $UserPass) or die ("Nie można się połączyć.");
  9. mysql_select_db ($Name, $dbHandle) or die ("Nie można wybrać bazy danych.");
  10. mysql_query("SET NAMES 'utf8'");
  11. }
  12. ?>


ciagle mi nie dodaje nic do bazy poprawiłem błędy tzn. literówki i dalej nic nie mam siły już ;/
Tylko wyskakuje komunikat :
  1. echo "Blad nie udalo sie dodac nowego rekordu";



SKRYPT 1 na pokazywanie błędów
  1. <?php
  2. error_reporting(E_ALL); // poziom raportowania, <a href="http://pl.php.net/manual/pl/function.error-reporting.php" target="_blank">http://pl.php.net/manual/pl/function.error-reporting.php</a>
  3. ini_set('display_errors', 5);
  4. ?>


SKRYPT 2 z Helpa z hostingu
  1. <?php
  2. //error_raporting(0);
  3. $old_error_handler = set_error_handler("userErrorHandler");
  4.  
  5. function userErrorHandler ($errno, $errmsg, $filename, $linenum, $vars) {
  6. $time = date("d M Y H:i:s");
  7. //get error type
  8. $errortype = array ( 1 => "Error",
  9. 2 => "Warning",
  10. 4 => "Parsing Error",
  11. 8 => "Notice",
  12. 16 => "Core Error",
  13. 32 => "Core Warning",
  14. 64 => "Compile Error",
  15. 128 => "Compile Warning",
  16. 256 => "User Error",
  17. 512 => "User Warning",
  18. 1024 => "User Notice");
  19. $errlevel = $errortype[$errno];
  20.  
  21. //write error log
  22. $errfile=fopen("errors.csv","a");
  23. fputs($errfile,"\"$time\",\"$filename: $linenum\",\"($errlevel) $errmsg\"\r\n");
  24. fclose($errfile);
  25.  
  26. if($errno!=2 && $errno!=8) {
  27. //terminate script
  28. die ("fatal error");
  29. }
  30. }
  31. ?>
-Niktoś-
$dbHandle -jest u Ciebie zmienną inicjującą otwarcie połączenie z bazą danych a ty zamykasz te połączenie mysql_close($connection);, jednakże powinnobyć:
mysql_close($dbHandle);

fakenmr
no dodałem tak jak napisałeś mysql_close($dbHandle); no ale dalej nic nie idzie tylko nie dodano do tablicy ;/

i wyswietla
  1. "19 Apr 2012 17:40:23","/homepages/0/d343669875/htdocs/przesylkipocztowe/kontakt.php: 96","(Notice) Undefined variable: dbHandle"
  2. "19 Apr 2012 17:40:23","/homepages/0/d343669875/htdocs/przesylkipocztowe/kontakt.php: 96","(Warning) mysql_close(): supplied argument is not a valid MySQL-Link resource"


nie no dość mam szału dostać można biggrin.gif

jeszcze raz zapodaje co mam pomocy normalnie klnę haha.gif

  1. <?php
  2. include ('skrypt.php');
  3. include ('skrypt1.php');
  4. require('config.php');
  5. connect();
  6.  
  7. if(array_key_exists('btn', $_POST))
  8. {
  9. $nr_nadania = $_POST['nr_nadania'];
  10. $imie_rekl= $_POST['imie_rekl'];
  11. $nazwisko_rekl = $_POST['nazwisko_rekl'];
  12. $ulica_rekl = $_POST['ulica_rekl'];
  13. $kod_poczt_rekl = $_POST['kod_poczt_rekl'];
  14. $miasto_rekl = $_POST['miasto_rekl'];
  15. $mail = $_POST['mail'];
  16. $tel_rekl = $_POST['tel_rekl'];
  17. $tresc = $_POST['tresc'];
  18. $temat = $_POST['temat'];
  19.  
  20.  
  21.  
  22. $ins = mysql_query("INSERT INTO `reklamacja` VALUES ('$nr_nadania','$imie_rekl','$nazwisko_rekl','$ulica_rekl','$kod_poczt_rekl','$miasto_rekl','$mail','$tel_rekl','$tresc','$tem_wiad')");
  23.  
  24. if($ins)
  25. echo "Rekord zostal dodany poprawnie";
  26. else {
  27. echo "Blad nie udalo sie dodac nowego rekordu";
  28. }
  29. mysql_close($dbHandle); // wyskakuje tu blad wrrrr
  30. }
  31. ?>



I Formularz

  1. <form name="form" method="POST" style="margin-top:10px;" >
  2. <table width="493" id="tbl_insert">
  3. <tr></tr>
  4. <tr>
  5. <th width="149" scope="col">&nbsp;</th>
  6. <th width="250" scope="col">Proszę wypenić wszystkie pola</th>
  7. </tr>
  8. <tr>
  9. <th scope="row">Numer nadania</th>
  10. <td><input name="nr_nadania" type="text" class="frmfld" id="nr_nadania"></td>
  11.  
  12.  
  13. </tr>
  14. <tr>
  15. <th scope="row">Imię </th>
  16. <td><input name="imie_rekl" type="text" class="frmfld" id="imie_rekl"></td>
  17.  
  18. </tr>
  19. <tr>
  20. <th scope="row">Nazwisko</th>
  21. <td><input name="nazwisko_rekl" type="text" class="frmfld" id="nazwisko_rekl"></td>
  22.  
  23. </tr>
  24. <tr>
  25. <th scope="row">Ulica</th>
  26. <td><input name="ulica_rekl" type="text" class="frmfld" id="ulica_rekl"></td>
  27.  
  28. </tr>
  29. <tr>
  30. <th scope="row">Kod Pocztowy</th>
  31. <td><input name="kod_poczt_rekl" type="text" class="frmfld" id="kod_poczt_rekl"></td>
  32.  
  33. </tr>
  34. <tr>
  35. <th scope="row">Miasto</th>
  36. <td><input name="miasto_rekl" type="text" class="frmfld" id="miasto_rekl"></td>
  37.  
  38. </tr>
  39. <tr>
  40. <th scope="row">E-mail</th>
  41. <td><input name="mail" type="text" class="frmfld" id="mail"></td>
  42.  
  43. </tr>
  44. <tr>
  45. <th scope="row">Telefon</th>
  46. <td><input name="tel_rekl" type="text" class="frmfld" id="tel_rekl"></td>
  47.  
  48. </tr>
  49. <tr>
  50.  
  51.  
  52. </tr>
  53. <th scope="row">Temat</th>
  54. <td><select name="tem_wiad" class="frmfld"><?
  55. foreach ($_tem_wiad as $k=>$w)
  56. {
  57. echo'<option value="'.$k.'">'.$w.'</option>';
  58. }?>
  59. </select>
  60. <br></td>
  61.  
  62. </tr>
  63. <tr>
  64. <th scope="row">Treść</th>
  65. <td><textarea name="tresc" class="frmfld" id="tresc"></textarea></td>
  66.  
  67. </tr>
  68. <tr>
  69. <th scope="row">&nbsp;</th>
  70.  
  71. <td><input name="btn" type="image" src="images/menu/wyslij.png" id="btn" style="width: 100px;float:right;" value="Wyślij" /></td>
  72. </tr>
  73. </table>
  74. <input type="hidden" name="MM_insert" value="form">
  75. </form>
thek
Błąd masz jak na dłoni w komunikacie... zmienna $dbHandle NIE ISTNIEJE ! Poczytaj o zasięgu zmiennych. Skopałeś funkcję connect(); Po jej wykonaniu nie masz połączenia do bazy wcale, bo zmienna $dbHande jest lokalna i gdy funkcja się kończy, zmienna przestaje istnieć.
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.