Интерполиране на променливи в низ, идващ от ДБ

C++ JAVA
User avatar
anonimen
Web-tourist
Web-tourist
Posts: 1600
Joined: Mon Jun 11, 2012 6:07 pm
Answers: 165
Location: Parse error: unexpected "}" in /home/index.php on line 26

Re: Интерполиране на променливи в низ, идващ от ДБ

Post by anonimen » Sat Jun 13, 2020 2:49 pm

По-бързо ще е, ако вместо да пращаш мейл, директно печаташ на екрана. И чак като го подкараш, тогава да го пуснеш да праща мейли.

Дай var_dump($parsed_str), че нещо не виждам на око откъде може да е проблемът.

explozen
Турист
Турист
Posts: 420
Joined: Thu Feb 10, 2011 7:15 pm
Answers: 13

Re: Интерполиране на променливи в низ, идващ от ДБ

Post by explozen » Sat Jun 13, 2020 3:15 pm

anonimen wrote:
Sat Jun 13, 2020 2:49 pm
По-бързо ще е, ако вместо да пращаш мейл, директно печаташ на екрана. И чак като го подкараш, тогава да го пуснеш да праща мейли.

Дай var_dump($parsed_str), че нещо не виждам на око откъде може да е проблемът.
$parsed_str връща пълен масив. Това с печатането първо звучи ок но не ми хвумва как да го подкарам така...

User avatar
anonimen
Web-tourist
Web-tourist
Posts: 1600
Joined: Mon Jun 11, 2012 6:07 pm
Answers: 165
Location: Parse error: unexpected "}" in /home/index.php on line 26

Re: Интерполиране на променливи в низ, идващ от ДБ

Post by anonimen » Sat Jun 13, 2020 6:45 pm

explozen wrote:
Sat Jun 13, 2020 3:15 pm
anonimen wrote:
Sat Jun 13, 2020 2:49 pm
По-бързо ще е, ако вместо да пращаш мейл, директно печаташ на екрана. И чак като го подкараш, тогава да го пуснеш да праща мейли.

Дай var_dump($parsed_str), че нещо не виждам на око откъде може да е проблемът.
$parsed_str връща пълен масив. Това с печатането първо звучи ок но не ми хвумва как да го подкарам така...
https://www.php.net/manual/en/function.str-replace.php

Виж, аргументите съм ги дал наобратно. $subject трябва да е последен. Странно :D. Това като оправиш, вече трябва да замества правилно.

explozen
Турист
Турист
Posts: 420
Joined: Thu Feb 10, 2011 7:15 pm
Answers: 13

Re: Интерполиране на променливи в низ, идващ от ДБ

Post by explozen » Sat Jun 13, 2020 9:44 pm

anonimen wrote:
Sat Jun 13, 2020 6:45 pm
explozen wrote:
Sat Jun 13, 2020 3:15 pm
anonimen wrote:
Sat Jun 13, 2020 2:49 pm
По-бързо ще е, ако вместо да пращаш мейл, директно печаташ на екрана. И чак като го подкараш, тогава да го пуснеш да праща мейли.

Дай var_dump($parsed_str), че нещо не виждам на око откъде може да е проблемът.
$parsed_str връща пълен масив. Това с печатането първо звучи ок но не ми хвумва как да го подкарам така...
https://www.php.net/manual/en/function.str-replace.php

Виж, аргументите съм ги дал наобратно. $subject трябва да е последен. Странно :D. Това като оправиш, вече трябва да замества правилно.
Може би не аз не обясних като хората :D
subject и другите са си ок, имам проблем с "$expiryRow[e3_days_notifications_mail_text]".
Тези замествания трябва да се случват в това: $expiryRow[e3_days_notifications_mail_text]...

User avatar
Ticketa
Турист
Турист
Posts: 572
Joined: Mon Feb 27, 2012 1:54 pm
Answers: 24
Location: in /root
Contact:

Re: PHP mail()

Post by Ticketa » Sun Jun 14, 2020 9:25 am

Таблица;

Code: Select all

CREATE TABLE `email_templates` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `type` enum('contact_us','registration') COLLATE utf8_unicode_ci NOT NULL,
 `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
 `content` text COLLATE utf8_unicode_ci NOT NULL,
 `created` datetime NOT NULL,
 `modified` datetime NOT NULL,
 `status` enum('1','0') COLLATE utf8_unicode_ci NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Code: Select all

$userName  = 'Казвам се турист';
$userEmail = 'turist@example.com';

$query = $db->query("SELECT * FROM `email_templates` WHERE type = 'contact_us'"); //вземаш темплейта
$tempData = $query->fetch_assoc();

//правиме замянка на променливите
$token = array(
    'SITE_URL'  => 'http://www.web-tourist.net',
    'SITE_NAME' => 'Аз съм турист',
    'USER_NAME' => $userName,
    'USER_EMAIL'=> $userEmail
);
$pattern = '[%s]';
foreach($token as $key=>$val){
    $varMap[sprintf($pattern,$key)] = $val;
}

$emailContent = strtr($tempData['content'],$varMap);

//изпращаме писмото
$to = $userEmail;
$subject = "Свържете се с нас;
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= 'From: Аз съм турист<sender@example.com>' . "\r\n";
if(mail($to,$subject,$emailContent,$headers)) {
    $successMsg = 'Изпратено';
} else {
    $errorMsg = 'Възникна грешка';
}

Както по-горе стана въпрос:

$msg = str_replace("[NAME]", $sub['name'], $template);
[NAME] - променлива, която се променя
$sub['name'] - променлива , която ще промени горната [NAME]
$template - променлива, която взема текста (HTML) от базата данни.

User avatar
anonimen
Web-tourist
Web-tourist
Posts: 1600
Joined: Mon Jun 11, 2012 6:07 pm
Answers: 165
Location: Parse error: unexpected "}" in /home/index.php on line 26

Re: Интерполиране на променливи в низ, идващ от ДБ

Post by anonimen » Sun Jun 14, 2020 4:12 pm

explozen wrote:
Sat Jun 13, 2020 9:44 pm
anonimen wrote:
Sat Jun 13, 2020 6:45 pm
explozen wrote:
Sat Jun 13, 2020 3:15 pm


$parsed_str връща пълен масив. Това с печатането първо звучи ок но не ми хвумва как да го подкарам така...
https://www.php.net/manual/en/function.str-replace.php

Виж, аргументите съм ги дал наобратно. $subject трябва да е последен. Странно :D. Това като оправиш, вече трябва да замества правилно.
Може би не аз не обясних като хората :D
subject и другите са си ок, имам проблем с "$expiryRow[e3_days_notifications_mail_text]".
Тези замествания трябва да се случват в това: $expiryRow[e3_days_notifications_mail_text]...
Да, този аргумент трябва да го подадеш последен на str_replace(). Просто го махни отпред и го сложи отзад, трябва да тръгне.

explozen
Турист
Турист
Posts: 420
Joined: Thu Feb 10, 2011 7:15 pm
Answers: 13

Re: Интерполиране на променливи в низ, идващ от ДБ

Post by explozen » Mon Jun 15, 2020 3:57 pm

anonimen wrote:
Sun Jun 14, 2020 4:12 pm
explozen wrote:
Sat Jun 13, 2020 9:44 pm
anonimen wrote:
Sat Jun 13, 2020 6:45 pm


https://www.php.net/manual/en/function.str-replace.php

Виж, аргументите съм ги дал наобратно. $subject трябва да е последен. Странно :D. Това като оправиш, вече трябва да замества правилно.
Може би не аз не обясних като хората :D
subject и другите са си ок, имам проблем с "$expiryRow[e3_days_notifications_mail_text]".
Тези замествания трябва да се случват в това: $expiryRow[e3_days_notifications_mail_text]...
Да, този аргумент трябва да го подадеш последен на str_replace(). Просто го махни отпред и го сложи отзад, трябва да тръгне.
Добрееее... Успях да го направя но само за client_name. Другото си е както преди:
Hello, Гошо Георгиев
Your service $$support_service$$ expired. End date: $$date_end$$
Как мога да го направя за всяка променлива да заменя?

Те са 4-5 на брой.

explozen
Турист
Турист
Posts: 420
Joined: Thu Feb 10, 2011 7:15 pm
Answers: 13

Re: Интерполиране на променливи в низ, идващ от ДБ

Post by explozen » Mon Jun 15, 2020 4:37 pm

Справих се :D
Направих го така:

Code: Select all

  $searchArray = array('$$client_name$$', '$$support_service$$', '$$date_start$$', '$$date_end$$', '$$today_date$$');
 
  $replaceArray = array($row["client_name"], $row["support_service"], $row["date_start"], $row["date_end"], $row["today_date"]);
      
  $ready = str_replace($searchArray, $replaceArray, $e3_days_notifications_mail_text2);

User avatar
anonimen
Web-tourist
Web-tourist
Posts: 1600
Joined: Mon Jun 11, 2012 6:07 pm
Answers: 165
Location: Parse error: unexpected "}" in /home/index.php on line 26

Re: Интерполиране на променливи в низ, идващ от ДБ

Post by anonimen » Tue Jun 16, 2020 9:51 am

Е затова беше многоточието, да си попълниш всичките променливи :)

uphero
Потребител
Потребител
Posts: 773
Joined: Mon Feb 20, 2012 12:26 pm
Answers: 32
Location: Казанлък
Contact:

Re: Интерполиране на променливи в низ, идващ от ДБ

Post by uphero » Tue Jun 16, 2020 11:07 am

2020 и има още хора да ползват array() вместо [] :?

Post Reply