У меня есть массив с данными, который выглядит так:
01 | organization_1 | email_A | publication_A1 | pubID_A1
02 | organization_1 | email_A | publication_A2 | pubID_A2
03 | organization_1 | email_A | publication_A3 | pubID_A3
04 | organization_2 | email_B | publication_B1 | pubID_B1
05 | organization_2 | email_B | publication_B2 | pubID_B2
06 | organization_3 | email_C | publication_C1 | pubID_C1
07 | organization_4 | email_D | publication_D1 | pubID_D1
08 | organization_4 | email_D | publication_D2 | pubID_D2
Массив устроен так:
array('org' => organization_x, 'email' => email_x, 'title' => publication_x, 'pub_id' => pubID_x).
Что мне нужно сделать, так это вывести этот массив, чтобы он отображался как отдельные сообщения электронной почты с кнопкой отправки после каждого. Человек, просматривающий эту страницу, просматривает отображаемое сообщение, и у него или у нее будет возможность нажать кнопку «Отправить», чтобы отправить сообщение на соответствующий адрес электронной почты. Вот начальный дисплей, который нам нужно создать:
<!-- Message #1 -->
<form>
<input type="hidden" name="pub_ids" value="pubID_A1;pubID_A2;pubID_A3">
<input type="hidden" name="recipient" value="email_A">
<input type="hidden" name="organization" value="organization_1">
<!-- start on-screen text display -->
To: email_A
Your account contains the following publication titles:
* publication_A1
* publication_A2
* publication_A3
You can edit these publications after logging into our system. Your email
address, email_A, serves as your username.
Thanks!
<!-- end on-screen text display -->
<input type="submit" name="submit" value="submit">
</form>
<!-- Message #2 -->
<form>
<input type="hidden" name="pub_ids" value="pubID_B1;pubID_B2">
<input type="hidden" name="recipient" value="email_B">
<input type="hidden" name="organization" value="organization_2">
<!-- start on-screen text display -->
To: email_B
Your account contains the following publications:
* publication_B1
* publication_B2
You can edit these publications after logging into our system. Your
email address, email_B, serves as your username.
Thanks!
<!-- end on-screen text display -->
<input type="submit" name="submit" value="submit">
</form>
...и так до тех пор, пока не будут обработаны все элементы массива.
Я слишком долго пробовал какую-то версию следующего кода. Идея состоит в том, чтобы пройтись по каждому элементу, объединяя данные pub_id и title в текстовые строки, которые будут передаваться через форму или отображаться на экране по мере необходимости. Когда сценарий достигает нового имени организации, он должен собрать все части воедино, а затем приступить к работе со следующим сообщением электронной почты организации.
$current_org = '';
$pub_ids = '';
$titles = '';
foreach ($array AS $value)
{
$pub_ids .= $value['pub_id'] . ';';
$titles .= '* ' . $value['title'] . '<br />';
if ($current_org != $value['org'])
{
echo '<form>';
echo '<input type="hidden" name="pub_ids" value="' . $pub_ids . '">';
echo '<input type="hidden" name="recipient" value="' . $value['email'] . '">';
echo '<input type="hidden" name="organization" value="' . $value['org'] . '">';
echo 'To: ' . $value['email'];
echo '<br /><br />';
echo 'Your account contains the following publication titles:';
echo '<blockquote>';
echo $titles;
echo '</blockquote>';
echo 'You can edit these publications after logging into our system. Your email address, ' . $value['email'] . ', serves as your username.';
echo '<br /><br />';
echo 'Thanks!';
echo '<input type="submit" name="submit" value="submit">';
echo '</form>';
echo '<br /><br />';
$pub_ids = '';
$titles = '';
$current_org = $value['org'];
}
}
Но на самом деле я получаю, например, , pub_id, которые выглядят так:
1-е сообщение: ‹input type="hidden" name="pub_ids" value="pubID_A1"›
2-е сообщение: ‹input type="hidden" name="pub_ids" value="pubID_A1;pubID_A2"›
3-е сообщение: ‹input type="hidden" name="pub_ids" value="pubID_A1;pubID_A2;pubID_A3"›
4-е сообщение: ‹input type="hidden" name="pub_ids" value="pubID_A1;pubID_A2;pubID_A3;pubID_B1"›
5-е сообщение: ‹input type="hidden" name="pub_ids" value="pubID_A1;pubID_A2;pubID_A3;pubID_B1;pubID_B2"›
Редактировать: добавлены $pub_ids = '' и $titles = '' всякий раз, когда сценарий начинается заново. Теперь это отражено в приведенном выше коде ближе к концу foreach().
Теперь проблема, похоже, заключается в том, что первая организация с более чем одной публикацией получает только одну публикацию в списке. Затем следующая организация получает в списке публикацию последней организации, а также свою собственную. Потом остальные скидываются. Что-то делать с первым оператором if()? Поскольку $current_org начинается с NULL, первый цикл никогда не будет установлен в $value['org']. Я не могу понять, как это исправить, хотя. Где/как я могу проверить, изменилось ли значение организации?
Любое понимание этой проблемы очень ценится!