Передача переменной из одного файла в другой
Есть файл sent.php:
<?php
require_once "functions/functions.php";
if(isset($_POST["sent-btn"])){
connectDB();
$result = $mysqli->query("SELECT `username`, `e-mail` from `users` where email != ''");
$information = $mysqli->query("SELECT * FROM `mailing` WHERE `id` = '1'");
$from = "ИРБИС";
function getMail() {
global $mysqli;
connectDB();
mysqli_query($mysqli, 'SET NAMES utf8');
$information = $mysqli->query("SELECT * FROM `mailing` WHERE `id` = '1'");
closeDB();
return $information->fetch_assoc();
}
function getInfo () {
connectDB();
global $mysqli;
mysqli_query($mysqli, 'SET NAMES utf8');
$result = $mysqli->query("SELECT `username`, `e-mail` FROM `users` where `e-mail` != ''");
closeDB();
return resultToArr ($result);
}
function resultToArr ($result){
$array = array ();
while (($row = $result->fetch_assoc()) != false)
$array[] = $row;
return $array;
}
$trr = getInfo ();
$mailing_info = getMail();
for ($i = 0; $i < count($trr); $i++){
if (preg_match("^[[:alnum:]][A-Za-z0-9_.-]*@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$^", $trr[$i]['e-mail'])) {
$text_msg="Здравствуйте, ".$trr[$i]['username']."!\n".$mailing_info["text"]."\nВы получили это письмо, потому что Ваш адрес электронной почты был указан на сайте IRBIS.";
$mail = SendMail($trr[$i]['e-mail'], $mailing_info["theme"], $text_msg);
}
}
if($mail == true){
$alert = "Отправлено";
}
else{
$alert = "Ошибка при выполнении рассылки";
}
header("Location: admin-msgsending.php");
}
?>
И файл admin-msgsending.php
<form method="POST" action="sent.php">
<button class="save-btn" type="submit" value="sent" name="sent-btn">Выполнить рассылку</button>
</form>
<?php
include "sent.php";
echo $alert;
?>
В файле admin-msgsending.php не появляется переменная $alertкак решитть проблему? Уже несколько часов пытаюсь сделать сообщение об успешном выполненни рассылки но оно все никак не появляется хотя сообщения отправляются
Ответы (2 шт):
Оно и не будет появляться. Форма сабмитится на sent.php и тогда скрипт отвечает в "никуда". После формы вы просто запускаете рассылку, но так как нет sent-btn и нет else в if(isset($_POST["sent-btn"])) вы ничего и не получаете. Хотите ответа JS вам в помощь, превентите дефаулт на сабмит, аяксом шлете sent-btn и получаете ответ, который выводите в любой блок HTML. Но вообще структура не правильно сделана. Не обязательно форму заводить для этого, достаточно баттон и онклик на JS
Решил добавлением сессий:
<?php
session_start();
require_once "functions/functions.php";
if(isset($_POST["sent-btn"])){
connectDB();
$result = $mysqli->query("SELECT `username`, `e-mail` from `users` where email != ''");
$information = $mysqli->query("SELECT * FROM `mailing` WHERE `id` = '1'");
$from = "ИРБИС";
function getMail() {
global $mysqli;
connectDB();
mysqli_query($mysqli, 'SET NAMES utf8');
$information = $mysqli->query("SELECT * FROM `mailing` WHERE `id` = '1'");
closeDB();
return $information->fetch_assoc();
}
function getInfo () {
connectDB();
global $mysqli;
mysqli_query($mysqli, 'SET NAMES utf8');
$result = $mysqli->query("SELECT `username`, `e-mail` FROM `users` where `e-mail` != ''");
closeDB();
return resultToArr ($result);
}
function resultToArr ($result){
$array = array ();
while (($row = $result->fetch_assoc()) != false)
$array[] = $row;
return $array;
}
$trr = getInfo ();
$mailing_info = getMail();
for ($i = 0; $i < count($trr); $i++){
if (preg_match("^[[:alnum:]][A-Za-z0-9_.-]*@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$^", $trr[$i]['e-mail'])) {
$text_msg="Здравствуйте, ".$trr[$i]['username']."!\n".$mailing_info["text"]."\nВы получили это письмо, потому что Ваш адрес электронной почты был указан на сайте IRBIS.";
$mail = SendMail($trr[$i]['e-mail'], $mailing_info["theme"], $text_msg);
}
}
if($mail == true){
$alert = "Рассылка выполнена успешно!";
}
else{
$alert = "Ошибка при выполнении рассылки";
}
$_SESSION['alert'] = $alert;
header("Location: admin-msgsending.php");
}
?>
<form method="POST" action="sent.php">
<button class="save-btn" type="submit" value="sent" name="sent-btn">Выполнить рассылку</button>
</form>
<?php
session_start();
include "sent.php";
echo $_SESSION['alert'];
unset($_SESSION['alert']);
?>