PHP foreach с динамическими клонированными полями jquery

#php #jquery

#php #jquery

Вопрос:

У меня есть скрипт, в котором jquery клонирует поле набора полей со зданием, этажом и крылом (полями ввода) Пользователь может создать столько наборов полей, сколько ему нужно. Что я пытаюсь выяснить, так это это.

Мне нужно объединить области вместе, иначе я мог бы просто выполнить цикл через aray вот так.

    foreach ($_POST[$key] as $itemvalue)       { 
         $message .= "n".$key. " : ".$itemvalue; 
      }
  

Моей первой мыслью было сделать это, но, конечно, это было глупо с моей стороны

 foreach ($_POST['building'] as $value) {
    $count  ;
    $message .="n Area" . $count;
    $message .= "n Building: ". $value;
    foreach ($_POST['floor'] as $value2){
    $message .= "n Floor: ". $value2;
        }
    foreach ($_POST['wing'] as $value3){
    $message .= "n Wing: ". $value3;
        }
    }
  

поскольку это просто приводит к размещению каждого этажа и крыла под каждым зданием вместо того, чтобы держать их отдельно.

моей следующей мыслью было объединить их в один long для каждого, разделенный символом и amp;amp;, но, по-видимому, foreach так не работает.

Есть ли у кого-нибудь предложения о том, как я могу это сделать?

@stewie Я внес предложенные вами изменения, но я почти уверен, что это не сработает.

 foreach ($_POST['floor'] as $value)
    { $floor = $value; }
foreach ($_POST['wing'] as $value2) { $wing = $value2; }
foreach ($_POST['building'] as $value3)
    { $building = $value3; $building .= $floor; $building .= $wing; }
  

Это весь мой код, результат, который я пытаюсь получить, таков

Район # 1 Здание: Здание 1 Этаж : 2 Крыло: восточное

Район № 2 Здание: Корпус 2 Этаж : 5 Крыло: северное

 <?php 
if(isset($_POST['submit'])) {

$mailto = "me@myemail.com"; 
$subject = "form"; 
$message = "Values submitted from web site form:"; 
$header = "From: Jeremiah <Jeremiah@myemail.com>"; 

foreach ($_POST['floor'] as $value)
  

{

 $floor = "nFloor : " . $value;
}

 foreach ($_POST['wing'] as $value2)
 {
$wing = "nWing : ".$value2;
 }

 foreach ($_POST['building'] as $value3)
 {
$building = "nnBuilding " . $value3;
$building .= $floor ;
$building .= $wing;
$message .= $building;
}




 mail($mailto, $subject, $message, $header); 
 }
  

?>

Комментарии:

1. В чем здесь проблема? Этот код работает нормально? Какой результат вы получаете и какой результат вы хотите?

2. @stewie, @rocket Я опубликовал весь скрипт и пример того, чего я пытаюсь достичь.

3. Я думал о $ floor и wing в виде массивов, но это просто возвращает меня в тупик.

4. Вот ссылка на форму, которую я использую, если это поможет thatmediaguy.com/keyform/index.php

Ответ №1:

грязно, но соответствует вашему оригинальному дизайну!

   foreach ($_POST['building'] as $value) {
        $count  ;
        $message ="n Area" . $count;
        $message .= "n Building: ". $value;
        $message2='';
        foreach ($_POST['floor'] as $value2){
        $message2 .= "n Floor: ". $value2;
            }
        foreach ($_POST['wing'] as $value3){
        $message2 .= "n Wing: ". $value3;
          }
    echo $message;
    echo $message2;
            }

        }
  

Что вам следует сделать, так это:

 foreach(floor){set  $floor} 
foreach(wing) {set $wing}
  

Основной foreach

 foreach(building)
{
   $building = ...
   $building .= $floor
   $building .= $wing
}
  

Комментарии:

1. Прошу прощения, я новичок в PHP и не слежу. Мне все еще нужен способ объединить каждую группу в одном поле. Допустим, у меня есть поле под названием area, под каждой областью есть здание, этаж и крыло.

2. Есть более простой способ сделать это, исходя из того, что я рассматриваю в коде, который вы предоставляете, заключается в том, что мне все еще нужно создать массив из данных, которые я собирал из каждого цикла foreach.

3. Все, что в итоге получается, это получение первого введенного значения для floor и wing. Сборка, конечно, работает нормально.

4. вы не объединили переменные floor и wing.

5. Я не понимаю, о чем вы говорите