Intereting Posts
php условный оператор: не равен оператору Получить категории детей magento На PHP мне нужно избегать обратной косой черты? Laravel 4 удаление нескольких моделей, связанных с внешними ключами Вставка NOW () в базу данных с активной записью CodeIgniter «Использование неопределенного постоянного» уведомления, но константа должна быть определена Как $ _GET ) работает в разбивке по страницам php Как дважды отобразить запись данных на одной странице? Передача массива PHP через jQuery Ajax время работы ресторана с таблицей базы данных в формате для чтения человеком с использованием php Есть ли функция в Django / Python, похожая на PHP flush (), которая позволяет мне отправлять часть ответа HTTP клиентам? Как использовать именованные каналы в PHP между различными функциями или даже разными процессами без fork? curl slow connect_time CodeIgniter большая партия вставки Получить данные из mysql по php для создания графического графика

Как обрабатывать данные «друг друга»?

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

Например:

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

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

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

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

И тогда, что лучший способ обработки данных?

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

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

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

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

Solutions Collecting From Web of "Как обрабатывать данные «друг друга»?"

Я бы рекомендовал массив. Вы можете сделать 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] } 

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

Деннис М.

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

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

 <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 будут из одного и того же набора полей в форме, хотя они все еще могут быть пустыми.