Проблема с эхом массива PHP - PullRequest
0 голосов
/ 23 июля 2010

Извините, я немного новичок.

У меня есть форма с некоторыми входами, которые являются массивами, а некоторые не

<input type="text" name="name" value="name1111" />
<input type="text" name="email" value="email1111" />

<input type="text" name="model[]" value="model1111" />
<input type="text" name="serial[]" value="serial1111" />
<input type="text" name="read[]" value="read1111" />

<input type="text" name="model[]" value="model2222" />
<input type="text" name="serial[]" value="seria2222" />
<input type="text" name="read[]" value="read2222" />

<input type="text" name="model[]" value="model3333" />
<input type="text" name="serial[]" value="serial3333" />
<input type="text" name="read[]" value="read3333" />

<!-- model4444 etc.. dynamically added with jquery as needed -->

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

это то, что я пытаюсь

$name = $_POST['name'];
$email = $_POST['email'];
$model = $_POST['model'];
$serial = $_POST['serial'];
$read = $_POST['read'];

$a = "Meter Readings From Customer - $name with contact $email";

foreach ( $model as $key => $n ) {
$b = "Model - " . $n . "with Serial No. " . $serial[$key] . " has a Reading of - " .    $read[$key] . ". End of Reading\n";

echo $a . $b;
}

я хочу, чтобы это вышло вот так

показания счетчика у клиента - name1111 с контактом email1111

Модель - модель1111 с серийным номером serial1111 имеет показание read1111 . Конец чтения

Модель - модель2222 с серийным номером serial2222 имеет показание read2222 . Конец чтения

Модель - модель3333 с серийным номером serial3333 имеет показание read3333 . Конец чтения

с конечной целью получить его в $ msg , затем отправить по почте и вернуть сообщение об успехе с этим

if(mail($address, $e_subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n")) {

    echo "<fieldset>";          
    echo "<div id='success_page'>";
    echo "<h1>Email Sent Successfully.</h1>";
    echo "<p>Thank you <strong>$name</strong>, your message has been submitted to us.</p>";
    echo "</div>";
    echo "</fieldset>";

    } else {

    echo 'ERROR!';

    }
}

Буду очень признателен, если кто-нибудь сможет мне помочь с этим

Ответы [ 2 ]

1 голос
/ 23 июля 2010

Я бы построил $msg следующим образом:

$msg = "Meter Readings From Customer - $name with contact $email\n\n";

foreach ($model as $key => $n) {
  $msg .= "Model - " . $n . "with Serial No. " . $serial[$key] . " has a Reading of - " . $read[$key] . ". End of Reading\n";
}

Если вы не знаете оператора .=, он добавляет строку справа к переменной $msg влевый.После завершения цикла ваш $msg должен быть завершен и готов к отправке.

1 голос
/ 23 июля 2010

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

Что-то вроде:

<input type="text" name="model1" value="model1111" />
<input type="text" name="serial1" value="serial1111" />
<input type="text" name="read1" value="read1111" />

И:

$b = "Model - " . $n . "with Serial No. " . $_POST["serial".$key] . " has a Reading of - " .    $_POST["read".$key] . ". End of Reading\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...