Как обработать данные "расскажи другу"? - PullRequest
1 голос
/ 14 декабря 2010

Я работаю над сценарием, который, по сути, имеет функцию «Расскажи другу», но я пытаюсь найти лучший способ сбора и обработки данных.

Например:

  1. Отображать ли 5 ​​пар полей, запрашивающих имя и адрес электронной почты, каждая из которых представляет собой $ friend_name1 / $ friend_email1, $ friend_name2 / $ friend_email2 и т. Д., Что позволяет отправлять по электронной почте 5 друзьям одновременно?

  2. Отображать ли одну пару и использовать JavaScript, чтобы позволить пользователю добавлять новых друзей, используя соглашение об именах переменных как # 1?

  3. Отображать ли их, как предложено в # 1 или # 2, но затем отправлять массив, например, $ friend_email [] / $ friend_name [] и т. Д.data?

    А каков наилучший способ обработки данных?

    Если вы получаете массив, такой как в # 3, вы затем просматриваете каждый $ friend_name $ _POST?Вы храните это в другом массиве?Как обеспечить правильную комбинацию имени и адреса электронной почты, если, например, пользователь не добавил «имя» для третьего друга?

    Как большинство людей делают это, чтобы оставаться гибкимиво время захвата и точно во время обработки?Я действительно ищу здесь логику, хотя пример кода высоко ценится.

    Одна из вещей, которые я отслеживаю, - это кто на кого ссылается.Например, если A ссылается на B, а B покупает что-то, то выиграет A.Поэтому точность и безопасность очень важны для меня.

    Спасибо, Райан

Ответы [ 2 ]

1 голос
/ 14 декабря 2010

Я бы порекомендовал массив.Вы можете сделать javascript или иным способом, но убедитесь, что конечный обработчик может видеть, сколько рефералов существует.Чтобы убедиться, что адрес электронной почты и имя остаются вместе, попробуйте что-то вроде

<input type="text" name="friend_name[0]" />
<input type="text" name="friend_email[0]" />
<input type="text" name="friend_name[1]" />
<input type="text" name="friend_email[1]" />

и так далее.Оттуда ваш PHP-скрипт будет просто соответствовать индексам массива в переменной $ _POST.Например, если бы эта форма была отправлена ​​(как указано выше) с некоторыми произвольными данными, она бы отформатировалась следующим образом (это print_r ($ _ POST); данные)

Array
(
    [friend_name] => Array
        (
            [0] => test_name
            [1] => test_name2
        )

    [friend_email] => Array
        (
            [0] => email@something.com
            [1] => email@two.com
        )

)

Идея прохождения через них (если бы вы реализовали javascript с потенциалом для «бесконечного» количества рефералов), было бы использовать count ();функция.Реализация будет выглядеть примерно так:

for($i=0;$i<count($_POST['friend_name']);++$i)
{
    if($_POST['friend_email'][$i] == NULL) continue; // Ignore NULL e-mails
    // Process data blah
}

Или, если эти имена введены не по порядку, функция foreach () в PHP очень полезна и может выполнить то же самое (возможно, более эффективно для ошибок такого типа).проверка)

foreach($_POST['friend_name'] as $key => $val)
{
    if($_POST['friend_email'][$key] == NULL) continue; // Ignore NULL e-mails
    // Process $val and $_POST['friend_email'][$key]
}

Надеюсь, это поможет!Удачи!

Денис М.

1 голос
/ 14 декабря 2010

Это вопросы по пользовательскому интерфейсу, и ответ на них - какой пользовательский интерфейс, по вашему мнению, лучше всего подходит для вашего сайта.У вас может быть дизайн, в котором фиксированное число полей подходит лучше, или у вас может быть демографическая модель, где кнопка «добавить другое поле» слишком запутанная.В любом случае код, обрабатывающий форму, не обязательно должен быть связан с тем, как вы представляете пользовательский интерфейс.

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

<input type="text" name="name[0]" value="First Friend's Name" />
<input type="text" name="email[0]" value="First Friend's E-mail" />

<input type="text" name="name[1]" value="Second Friend's Name" />
<input type="text" name="email[1]" value="Second Friend's E-mail" />

Тогда в вашем коде

foreach ($_POST['email'] as $index => $value) {
    $name = $POST['name'][$index];
    $email = $_POST['email'][$index];
}

В цикле $name и $email будут изтот же набор полей в форме, хотя они могут быть пустыми.

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