Sam Vorst Ответов: 2

Если почтовый индекс равен, отправьте человеку в этой провинции


Всем привет,

Я создаю сайт, где важны почтовые индексы. На основании почтового индекса контактная форма перенаправляется на адрес электронной почты. Итак, я живу в Голландии, где у нас есть 12 провинций, и на основе почтового индекса вы можете узнать, где кто-то живет, скажем, у вас есть почтовый индекс: 5233HS вы живете в Норд-Брабанте. Затем он отправляет электронное письмо кому-то там. Но если вы получили почтовый индекс в другой провинции, почта пересылается на другой адрес электронной почты в этой провинции. Я думал о Javascript, который сравнивает все почтовые индексы, пока не нашел тот, который равен. Или есть решение simpeler?

И как это сделать с помощью javascript или другого метода.
Я сделал что-то на php, но это не сработает.

 if (isset($_POST['submit'])) {

 function random_strings($length_of_string)
 {

     $str_result = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';

     return substr(str_shuffle($str_result), 0, $length_of_string);
 }

 $Output = random_strings(10);

 $conn = mysqli_connect("localhost", "...", "...", "...");

 if($conn === false){
     die("ERROR: Could not connect. " . mysqli_connect_error());
 }

 $Zip = $_POST['Zip'];
 $name = $_POST['Name'];
 $Email = $_POST['Email'];
 $Phone = $_POST['Phone'];
 $Subject = $_POST['Problem'];

 //All variables now defined, you can now reference them all...
 $Zip = $_POST['Zip'];
  $Subject = $_POST['Problem'];

  $txt1 = "Noord-Holland";
  $arr1 = range(1000,1299); //Noord-Holland
  $txt2 = "Flevoland";
  $arr2 = range(1300,1379); //Flevoland

if ($arr1 == $Zip) {


  $mailTo = "info@probleeminhuis.nl";
  mail($mailTo, $txt1, $Subject, $Zip);
}
elseif ($arr2 == $Zip) {


  $mailTo = "info@probleeminhuis.nl";
  mail($mailTo, $txt2, $Subject, $Zip);
}


 if ($stmt = mysqli_prepare($conn, "INSERT INTO ID (Id, Name, Email, Phone, Problem, Zip) VALUES (?, ?, ?, ?, ?, ?)")) {
     mysqli_stmt_bind_param($stmt, "ssssss", $Output, $name, $Email, $Phone, $Subject, $Zip);
     if (mysqli_stmt_execute($stmt)) {
       echo ' ';
       echo "<div id=\"PHP-output\"> Succesvol Verstuurd </div>";
     } else{
         echo ' ';
         echo "<div id=\"PHP-output\"> Sorry, Het kon niet worden verstuurd, probeer het later nog eens of neem contact op met de klantenservice. $sql.  </div>" . mysqli_error($conn);
     }
 }

 mysqli_close($conn);


И происхождение переменных величин:

<pre>            <form action="../../PHP/Ticketnumber.php" method="POST">
            <input style="width: 90%;" type="text" name="Name" placeholder="Volledige naam">
            <input style="width: 90%;" type="text" name="Email" placeholder="E-mail">
            <input style="width: 90%;" type="text" name="Phone" placeholder="Telefoon">
            <input style="width: 90%;" type="text" name="Zip" placeholder="Postcode">
            <input style="width: 90%;" type="text" name="Problem" placeholder="Omschrijf je probleem zo simpel mogelijk">
            <button style="margin-bottom: 10px" class="button-probleem" type="submit" name="submit">Verzenden</button>
            <p>Als je op verzenden drukt ga je akkoord met de <a style="text-decoration: underline; cursor: pointer;" href="../../Algemene-voorwaarden.html">algemene voorwaarden!</a></p>
            </form>


Он не отправляет электронное письмо.

Улучшенный код, где elseif не работает:
<pre> 
  $name = $_POST['Name'];
  $Email = $_POST['Email'];
  $Phone = $_POST['Phone'];
  $Subject = $_POST['Problem'];
  $Zip = $_POST['Zip'];


if ($Zip > 999 && $Zip < 1300) {



   $Zip = $_POST['Zip'];

   $txt1 = "Noord-Holland";



   $mailTo = "";

   mail($mailTo, $txt1, $Subject, $Zip);

 }

 elseif ($Zip > 1299 && $Zip < 1380) {



     $txt2 = "Flevoland";

     $Zip = $_POST['Zip'];



     $mailTo = "";

     mail($mailTo, $txt2, $Subject, $Zip);

 }


Спасибо, Сэм

Что я уже пробовал:

Я пытался писать код на PHP. Анс поискал в гугле.

MadMyche

И если у вас есть 5-значный почтовый индекс (например, 99999), вы можете быть в 1 из 76 разных стран; одна из которых-Соединенные Штаты, и они имеют более 80 000 почтовых индексов в использовании.
Суть истории: я бы посмотрел на провинцию/страну части формы, чтобы решить, куда отправить электронное письмо.

2 Ответов

Рейтинг:
7

Andre Oosthuizen

Я согласен с OriginalGriff, есть более простые способы, но, основываясь на вашем коде, он не будет работать, поскольку вы ссылаетесь на $Zip и $arr до того, как он будет определен, измените этот код -

if ($arr == $Zip) {

$arr = range(1000,1299); //Noord-Holland

  $Zip = $_POST['Zip'];
  $Subject = $_POST['Problem'];
  $txt = "Noord-Holland";

$mailTo = "";
mail($mailTo, $txt, $Subject, $Zip);
}

до настоящего времени -
  $Zip = $_POST['Zip'];
  $Subject = $_POST['Problem'];
  $txt = "Noord-Holland";
  $arr = range(1000,1299); //Noord-Holland

//All variables now defined, you can now reference them all...
if ($arr == $Zip) {
  $mailTo = "";
  mail($mailTo, $txt, $Subject, $Zip);
}


Sam Vorst

Спасибо, но есть одна проблема. Если я вставлю ваш код, он не будет отправлен по почте, да, я заполнил почтовый адрес.. Он отправляет почту только в том случае, если я вставляю переменные внутрь if. Но это не очень хорошо, потому что мне тоже нужно иметь заявление else/elseif. Я отредактировал код в своем вопросе. Включая тех. инструкции elseif.

Andre Oosthuizen

Чтобы понять, что вам нужно сделать, мне нужно гораздо больше кода, например, откуда берутся ваши переменные, что происходит перед отправкой почты, во время отправки почты и после отправки почты.

Вы заглядывали в PHPMailer в соответствии с вашим предыдущим постом?

Sam Vorst

Мои переменные поступают из контактной формы, я обновлю ее в вопросе.
Да, но на самом деле я этого не понимаю.

Andre Oosthuizen

Также взгляните на эту страницу, может быть, она вам поможет ... https://www.codeproject.com/Articles/1176482/Send-HTML-mail-with-attachments-using-PHP

Sam Vorst

Спасибо выглядит сложно, но знаете ли вы, в чем проблема с моим php-кодом??

Andre Oosthuizen

Ваши $arr1 и $arr2-это проблема, так как $Zip никогда не будет равен вашему заданному диапазону для $arr, поэтому он выходит из блока if, где находится часть отправки почты, а не отправляет ее вообще. Попробовать это -

if ($Zip > 999 && $Zip < 1300) {  //Noord Holland...  $mailTo = "";  mail($mailTo, $txt, $Subject, $Zip);}

Sam Vorst

Спасибо, но если я заполню форму, то окажусь на пустом экране.. Это была скобка, отсутствующая.. Но у меня все еще есть проблема, между значением 999> & <1300 он отправляет по почте, но если я сделаю еще одно значение, то и другое значение этого не будет. Я редактирую его в своем вопросе.

Sam Vorst

Извините, что произошла ошибка, теперь она работает! Спасибо!

Andre Oosthuizen

Только удовольствие, счастливое кодирование!

Рейтинг:
1

OriginalGriff

- Я? Я бы использовал базу данных и позволил ей обрабатывать ее - вероятно, с сервера, а не с клиента. Делать это в JS немного "глупо" - потому что вы должны загрузить HTML - страницу как с JS для проверки, так и с таблицей кодов для работы JS, а затем заставить JS отправить электронное письмо-через сервер - кому-то в соответствующей провинции. И это должно быть более эффективно, чтобы сделать все это непосредственно на сервере, а также сделать его намного проще!

Другая альтернатива-использовать сайт "декодирования" (я нашел это за считанные секунды: Почтовые индексы Роттердама[^] но есть, вероятно, лучшие из них или даже "основанные на запросах", предоставляемые вашей почтовой службой, которую Google может найти для вас локально), и пусть она беспокоится об обновлениях.

Я предполагаю, что "локальность" или отправка электронной почты должны распределить ее между соответствующей командой продаж или чем-то подобным? Если это так, то БД - определенно лучшая идея: люди уходят, открываются новые офисы и т. д.-И кто-то должен быстро и легко обновлять пункты назначения, что трудно с обновлением веб-сайта.