まず、下記のコードを参照していただきたいのですが、「elseif (isset($_POST['direct_send']))」はしっかり機能するのですが、「if (isset($_POST['reservation_send']))」の方が機能しません。「<input type="submit" name="reservation_send" value="登録">」で、送信しても、「if (isset($_POST['reservation_send']))」の部分で、「$_POST['reservation_send']」がないので、以下データベースへの処理が実行されません。検証したところ、「$_POST['reservation_send']」がそもそもセットされないようでした。何故これだけ機能しないのかわかりません。
PHP
1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4 <meta charset="utf-8"> 5 <title>メール配信スタンド尾</title> 6 <link rel="stylesheet" href="style.css"> 7 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 8 <?php 9 $message = $_POST['reservation_send']; 10 if (isset($_POST['reservation_send'])) { 11 // メール配信予約時の処理 12 $message = "if文で判定できています。"; 13 $mysqli = new mysqli('mysql*****', '**********', 14 '*********', '********_magazin'); 15 if ($mysqli->connect_errno) { 16 $message = $mysqli->connect_errno . ' : ' . $mysqli->connect_error; 17 }else { 18 $message = "接続成功!"; 19 } 20 $mysqli->set_charset('utf8'); 21 22 $title = htmlspecialchars($_POST['title']); 23 $content = htmlspecialchars($_POST['content']); 24 25 $sql = "INSERT INTO reservation_mail ( 26 subject, message, send_date 27 ) VALUES ( 28 $title, $content, '2019-05-27 00:00:00' 29 )"; 30 $flag = $mysqli->query($sql); 31 $message += $flag; 32 if ($flag) { 33 $message += "<br/>登録処理が完了しましあ。"; 34 }else { 35 $message += "<br/>登録に失敗しました。"; 36 } 37 $mysqli->close(); 38 39 }elseif (isset($_POST['direct_send'])) { 40 // ダイレクトメール送信時の処理 41 require_once 'PHPMailer_setting.php'; 42 43 //メール本体 44 $message = htmlspecialchars($_POST['content']);//メール本文 45 $mailer->From = 'magazin@*******'; //差出人の設定 46 $mailer->FromName = mb_convert_encoding("メール配信スタンド","UTF-8","AUTO");//表示名おまじない付… 47 $mailer->Subject = mb_convert_encoding($_POST['title'],"UTF-8","AUTO");//件名の設定 48 $mailer->Body = mb_convert_encoding($message,"UTF-8","AUTO");//メッセージ本体 49 $mailer->AddAddress('********@yahoo.co.jp'); // To宛先 50 51 //送信する 52 if($mailer->Send()){ 53 $message = "メールが送信されました。"; 54 } 55 else{ 56 $message = "メール送信失敗"; 57 echo "送信に失敗しました" . $mailer->ErrorInfo; 58 } 59 } 60 ?> 61 </head> 62 <body> 63 <header> 64 <div class="header_content"> 65 <h1>メール配信スタンド</h1> 66 </div> 67 <ul class="navi_menu"> 68 <li><a href=".">メール配信予約</a></li> 69 <li><a href="?list=2">配信メールの一覧・編集</a></li> 70 <li><a href="?direct=3">ダイレクトメール</a></li> 71 </ul> 72 </header> 73 <div class="main-wrapper"> 74 <?php if (isset($_GET['direct'])): ?> 75 <?php require_once('direct_mail.php'); ?> 76 <?php elseif (isset($_GET['list'])): ?> 77 <?php require_once('mail_list.php'); ?> 78 <?php else: ?> 79 <?php require_once('reservation_mail.php'); ?> 80 <?php endif; ?> 81 </div> 82 <footer> 83 84 </footer> 85 <script type="text/javascript" src="script.js"></script> 86 </body> 87</html>
「require_once('reservation_mail.php')」で読み込むファイル
PHP
1<div class="main_content"> 2 <?php if ($message != ""): ?> 3 <span><?php echo "メッセージ:".$message; ?></span> 4 <?php endif; ?> 5 <h2>メール配信予約</h2> 6 <form action="" method="post"> 7 <p><label>予約配信の設定: 8 <input type="number" min="<?php echo date('Y'); ?>" placeholder="ここに年の入力" max="9999" value="2019" name="year"> 年  9 <input type="number" min="1" max="12" placeholder="ここに月の入力" value="1" name="month"> 月  10 <input type="number" min="1" max="31" placeholder="ここに日にちの入力" value="1" name="date"> 日  11 <input type="number" min="0" max="23" placeholder="ここに時間の入力" value="0" name="hour"> 時  12 </label></p> 13 <p><label>メールタイトル<br/> 14 <input type="text" name="title" placeholder="ここにメールタイトルの入力"></label></p> 15 <p><label>メール本文<br/> 16 <textarea name="content" placeholder="ここにメール本文の入力"></textarea></label></p> 17 <center><p><input type="submit" name="reservation_send" value="登録"></p></center> 18 </form> 19</div>
「require_once('direct_mail.php');」で読み込んでいるファイル。
PHP
1<div class="main_content"> 2 <?php if ($message != ""): ?> 3 <span><?php echo $message; ?></span> 4 <?php endif; ?> 5 <h2>ダイレクトメール</h2> 6 <form action="" method="post"> 7 <p><label>メールタイトル<br/> 8 <input type="text" name="title" placeholder="ここにメールタイトルの入力"></label></p> 9 <p><label>メール本文<br/> 10 <textarea placeholder="ここにメール本文の入力" name="content"></textarea></label></p> 11 <center><p><input type="submit" name="direct_send" value="送信"></p></center> 12 </form> 13</div>
他「require_once('mail_list.php');」ですが、まだ処理を記述していない状態です。
また、アクセスしているディレクトリーとファイル一覧は下記の通りになります。
PHPMailer // メールライブラリ
PHPMailer_setting.php // メールライブラリの設定に使用。
direct_mail.php
mail_list.php // まだファイル自体は空です。
reservation_mail.php
index.php
主には、index.php内で処理を完結している形になるでしょうか。
かなり複雑なコードになってしまいますが、問題点がありましらご教授いただきたいです。
回答4件
あなたの回答
tips
プレビュー