Autor | Zpráva | ||
---|---|---|---|
luboxxx Profil |
Dobrý den,
narazil jsem na problém, při kterém se mi nedaří uložit proměnné z formuláře do mysql db. Zaslání e-mailu mi pomocí phpmaileru funguje .. jen ještě potřebuju, aby se email s dalšími proměnnými uložily do db.. <?php if( isset($_POST) ){ //form validation vars $formok = true; $errors = array(); //form data $jmeno = mysql_real_escape_string($_POST['jmeno']); $email = mysql_real_escape_string($_POST['email']); //validate form data //validate jmeno is not empty if(empty($jmeno)){ $formok = false; $errors[] = "Nevyplnili jste svoje jméno."; } //validate email address is not empty if(empty($email)){ $formok = false; $errors[] = "Nevyplnili jste položku email."; //validate email address is valid }elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){ $formok = false; $errors[] = "Vložený email není platný."; } //send email if all is ok if($formok){ require "phpmailer/class.phpmailer.php"; $mail = new PHPMailer(); $body = file_get_contents('contents.html'); $body = eregi_replace("[\]",'',$body); $mail->IsSMTP(); // telling the class to use SMTP $mail->Host = "localhost"; // SMTP server $mail->SMTPDebug = 1; // enables SMTP debug information (for testing) // 1 = errors and messages // 2 = messages only $mail->SMTPAuth = true; // enable SMTP authentication $mail->SMTPSecure = "tls"; // sets the prefix to the servier $mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server $mail->Port = 587; // set the SMTP port for the GMAIL server $mail->Username = ""; // GMAIL userjmeno $mail->Password = ""; // GMAIL password $mail->CharSet="utf-8"; $mail->SetFrom('jmeno@yourdomain.com', 'neco'); $mail->AddReplyTo("jmeno@yourdomain.com","neco"); $mail->Subject = "subejctí"; $mail->AltBody = "Pokud se obsah emailu nezobrazil, zkuste prosím použít jiný komatibilní prohlížeč emailu."; // optional, comment out and test $mail->MsgHTML($body); $address = $email; $mail->AddAddress($address, "adresnanejaka"); // jon doe if(!$mail->Send()) { // odešleme e-mail $formok = false; $errors[] = "Došlo k chybě při odeslání e-mailu.<br>" . $mail->ErrorInfo; } else{ //echo 'E-mail byl v pořádku odeslán.'; mysql_connect("localhost", "", "")or die(mysql_error()); // Connect to database server(localhost) with username and password. mysql_select_db("db_email_adres")or die(mysql_error()); // Select registration database. //sumbission data $ip= $_SERVER['REMOTE_ADDR']; $datum = date('d/m/Y'); $cas = date('H:i:s'); $kod=md5(uniqid(rand())); // ulozeni dat z pormenycha inputu do MySQL DB mysql_query("INSERT INTO zaslat_info (zi_datum, zi_cas, zi_ip, zi_kod, zi_na_email) VALUES ('$datum','$cas','$ip','$kod','$email')"); } } //what we need to return back to our form $returndata = array( 'posted_form_data' => array( 'jmeno' => $jmeno, 'email' => $email, ), 'form_ok' => $formok, 'errors' => $errors ); //if this is not an ajax request if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest'){ //set session variables session_start(); $_SESSION['cf_returndata'] = $returndata; //redirect back to form header('location: ' . $_SERVER['HTTP_REFERER']); } } struktura db tabulky: -- ---------------------------- -- Table structure for `zaslat_info` -- ---------------------------- DROP TABLE IF EXISTS `zaslat_info`; CREATE TABLE `zaslat_info` ( `zi_id` int(11) NOT NULL AUTO_INCREMENT, `zi_datum` date NOT NULL, `zi_cas` time NOT NULL, `zi_ip` varchar(30) NOT NULL, `zi_kod` varchar(100) NOT NULL, `zi_souhlas` varchar(1) NOT NULL DEFAULT '0', `zi_na_email` varchar(50) NOT NULL DEFAULT '', PRIMARY KEY (`zi_id`,`zi_na_email`,`zi_kod`,`zi_ip`,`zi_souhlas`) ) ENGINE=MyISAM AUTO_INCREMENT=38 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of zaslat_info -- ---------------------------- INSERT INTO `zaslat_info` VALUES ('1', '2012-02-13', '19:42:41', '127.0.0.1', 'valid=snca9a93db544202bea5af5a4e13ab8979e5198f16', '0', 'test@test.cz'); Kdyby se někomu podařilo najít v čem je problém a mohl by mi napsat řešení byl bych velice vděčný. I když ten hlavní problém je mezi židlí a klávesnicí:/ |
||
Keeehi Profil |
Vypíše se někde nějak chyba? Dostanete se vůbec do příslušného bloku?
Můžete zkusit za mysql_query přidat ještě: echo mysql_errno() . ": " . mysql_error(). "\n"; |
||
luboxxx Profil |
Keeehi:
Děkuji za odpoveď.. tak jsem to teď zkoušel přidal jsem <?php error_reporting(E_ALL); //vyzaduje php 5.3+ nastaveni casoveho spasma, jinak vypisuje chybu date_default_timezone_set("Europe/Prague"); if( isset($_POST) ){ a pod mysql_query().. echo mysql_errno($link) . ": " . mysql_error($link). "\n"; , ale přesto nehlasi a ani nevypisuje žádnou chybu.. a když aktulizuju tabulku zaznamu tak se neprida do db.. i kdyz na email dojde odpoveď
takže problém přetrvává.. jinak k db mam local pristup .. jiné formuláře co jsme zkoušel tak se mi normálně uloží do db.. ale u tohohle opravdu netuším.. zkoušel jsem hodně možností a ani google mi nejak nemuze pomoct tak už jsem zoufalý.. nerad bych kvuli tomu uložení do db přepisoval vetšinu z kodu to si myslim ze by bylo zbytecny ale opravdu nedaří se mi dojít na to v čem by mohl být zakopaný pes.. |
||
Keeehi Profil |
#4 · Zasláno: 11. 3. 2012, 23:58:28
luboxxx:
Buď se povede INSERT a tudíž data budou v tabulce, nebo se objeví nějaká chyba v mysql_error(); Pokud se neobjeví, tak kontrolujete třeba tabulku ve špatné databázi, nebo má prohlížeč nacachovanou stránku, kde jste ještě výpis mysql_error(). |
||
luboxxx Profil |
Keeehi:
Deprecated: Function eregi_replace() is deprecated in C:\web\www\HTML5FORM_DB\process.php on line 41 Deprecated: Function set_magic_quotes_runtime() is deprecated in C:\web\www\HTML5FORM_DB\phpmailer\class.phpmailer.php on line 1471 Deprecated: Function set_magic_quotes_runtime() is deprecated in C:\web\www\HTML5FORM_DB\phpmailer\class.phpmailer.php on line 1475 Incorrect date value: '12/03/2012' for column 'zi_datum' at row 1 AAA Tak už jsem to opravil... děkuju ti mnohokrát| Keeehi | za čas a nervy :) fakt thx přikládám opravený řešení <?php error_reporting(E_ALL); //error_reporting(E_STRICT); //vyzaduje php 5.3+ nastaveni casoveho spasma, jinak vypisuje chybu date_default_timezone_set("Europe/Prague"); if( isset($_POST) ){ //form validation vars $formok = true; $errors = array(); //form data $jmeno = mysql_real_escape_string($_POST['jmeno']); $email = mysql_real_escape_string($_POST['email']); //validate form data //validate jmeno is not empty if(empty($jmeno)){ $formok = false; $errors[] = "Nevyplnili jste svoje jméno."; } //validate email address is not empty if(empty($email)){ $formok = false; $errors[] = "Nevyplnili jste položku email."; //validate email address is valid }elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){ $formok = false; $errors[] = "Vložený email není platný."; } //send email if all is ok if($formok){ require "phpmailer/class.phpmailer.php"; $mail = new PHPMailer(); $body = file_get_contents("contents.html"); $body = eregi_replace("[\]","",$body); $mail->IsSMTP(); // telling the class to use SMTP $mail->Host = "localhost"; // SMTP server $mail->SMTPDebug = 1; // enables SMTP debug information (for testing) // 1 = errors and messages // 2 = messages only $mail->SMTPAuth = true; // enable SMTP authentication $mail->SMTPSecure = "tls"; // sets the prefix to the servier $mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server $mail->Port = 587; // set the SMTP port for the GMAIL server $mail->Username = ""; // GMAIL userjmeno $mail->Password = ""; // GMAIL password $mail->CharSet="utf-8"; $mail->SetFrom("jmeno@yourdomain.com", "nazev"); $mail->AddReplyTo("jmeno@yourdomain.com","nazev"); $mail->Subject = "predmet"; $mail->AltBody = "Pokud se obsah emailu nezobrazil, zkuste prosím použít jiný komatibilní prohlížeč emailu."; // optional, comment out and test $mail->MsgHTML($body); $address = $email; $mail->AddAddress($address, "nazev"); // jon doe if(!$mail->Send()) { // odešleme e-mail $formok = false; $errors[] = "Došlo k chybě při odeslání e-mailu.<br>" . $mail->ErrorInfo; } else{ //echo 'E-mail byl v pořádku odeslán.'; mysql_connect("localhost", "root", "error404")or die(mysql_error()); // Connect to database server(localhost) with username and password. mysql_select_db("db_email_adres")or die(mysql_error()); // Select registration database. $ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']); $datum = mysql_real_escape_string(date("Y-m-d")); $cas = mysql_real_escape_string(date("H:i:s")); $kod = mysql_real_escape_string(md5(uniqid(rand()))); // ulozeni dat z pormenycha inputu do MySQL DB mysql_query("INSERT INTO zaslat_info (zi_datum, zi_cas, zi_ip, zi_kod, zi_jmeno, zi_na_email) VALUES ('$datum','$cas','$ip','$kod','$jmeno','$email')")or die(mysql_error()); } } //what we need to return back to our form $returndata = array( 'posted_form_data' => array( 'jmeno' => $jmeno, 'email' => $email, ), 'form_ok' => $formok, 'errors' => $errors ); //if this is not an ajax request if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest'){ //set session variables session_start(); $_SESSION['cf_returndata'] = $returndata; //redirect back to form header('location: ' . $_SERVER['HTTP_REFERER']); } } |
||
Keeehi Profil |
#6 · Zasláno: 12. 3. 2012, 00:15:56
No a je to. Na řádku 70 má být:
$datum = date('Y-m-d'); nebo datum a čas můžete vynechat a v dotazu mít jen: mysql_query("INSERT INTO zaslat_info (zi_datum, zi_cas, zi_ip, zi_kod, zi_na_email) VALUES (NOW(),NOW(),'$ip','$kod','$email')"); |
||
luboxxx Profil |
#7 · Zasláno: 12. 3. 2012, 00:24:03
Keeehi:
jasně no ten zkrácený zápis se mi líbí ještě víc vidíš.. to se hodí :) super děkuju ještě to předělám .. zasluhuješ pochvalu před nastoupeným sborem :) thx |
||
Keeehi Profil |
#8 · Zasláno: 12. 3. 2012, 00:31:27
luboxxx:
Ještě by šlo jeden sloupeček ubrat a z toho druhého vytvořit sloupeček s typem datetime. |
||
luboxxx Profil |
Keeehi:
no já bych právě pak chtěl 2sloupce zvlášť, aby se to dalo filtrovat zvlaš podle data a zvlášť podle času.. proto pro mě bude snadnější to mít takhle odělený než to mít v jednom a potom to třeba pomocí regex složitě kombit, abych to moch filtrovat.. ale rozumím jak to myslíš kdybych to chtěl zjednošit určitě to použiju:) Každopádně cenný rady si cením nad sůl:) |
||
Keeehi Profil |
#10 · Zasláno: 12. 3. 2012, 00:49:40
luboxxx:
I v jednom sloupci se to dá dobře filtrovat. A to bez použití regulárů. MySQL má řadu funkcí na práci s datem a časem. |
||
luboxxx Profil |
Keeehi:
Díky.. přidávám do oblíbených záložek :) prostuduju MySQL víc do hloubky... |
||
Časová prodleva: 12 let
|
0