2012-11-09 2 views
0

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

Примечание Pls: в каждой строке вводится пять полей ввода, в зависимости от того, какое число вводит пользователь, и эти поля - это имя, телефон, адрес электронной почты, пол и должность. Ниже приведены имена я хотел бы дать каждое поле ввода:

cand_name, cand_phone, cand_email, cand_sex, cand_pos 

Pls найти вращатель сценарий формы JQuery на ссылку ниже

http://o2decor.com/form_scripts/jquery.fspin.js

Ниже ссылка на HTML

<head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Form Spinner Test</title> 
     <script type="text/javascript" src="jquery-1.7.2.min.js"></script> 
     <script type="text/javascript" src="jquery.fspin.js"></script> 
     <script type="text/javascript"> 
      $(function(){ 
       //you have to use the ID not the name of the fields we're interested in 
       jQ_Form_Spinner('#container','#myrel',jQ_Form_Spinner_data); 
      }); 
     </script> 
    </head> 

<body> 


<form action="course_reg.php" method="post"> 
<p> 
<label><strong>No of Candidates</strong></label> 
<label><input type="text" id="myrel" name="cand_no" placeholder="Type Your Number of Candidates" /></label> 
    <div class="clear"></div> 
</p> 

<div style="width:660px; float: left; border: 1px solid #ccc; padding:3px 3px;" id='container'> 

</div> 


</form> 

Ниже приведена ссылка на страницу формы, на которой работает jscript (она отлично работает)

http://o2decor.com/form_scripts/form.php

К сожалению, я не мог вставить коды Jquery здесь, StackOverflow не будет принимать мой вопрос потому я не форматировать код ну или что-то ... Был бы признателен, если кто-нибудь может помочь с этой проблемой ... Спасибо

ответ

0

Посмотрите на это DEMO.

Код JavaScript ниже (form.php) переименовывает поля, когда форма была отправлена ​​со следующим именования: candidate[X][Y] -, где Х это номер строки и У это имя поля.

Так, например, телефон поле в первой строке будет называться candidate[0][phone] и электронной почты поле во втором ряду будет называться candidate[1][email].

<script> 
$(function(){ 
    var fields = ['name', 'phone', 'email', 'sex', 'pos']; 
    $('form').on('submit', function(e){ 
     $('#container tbody tr').each(function(i){ 
      $(this).find('td').each(function(j){ 
       var field = fields[j]; 
       $(this).find(':input').attr('name', 'candidate[' + i + '][' + field + ']'); 
      }); 
     }); 
    }); 
}); 
</script> 

Что вы получите на PHP стороне (course_reg.php) является одной переменной ($_POST['candidate']), который содержит все данные в структурированном формате, как многомерного массива.

array(2) { 
    [0]=> 
    array(5) { 
    ["name"]=> 
    string(8) "Jane Doe" 
    ["phone"]=> 
    string(12) "123-555-4567" 
    ["email"]=> 
    string(18) "[email protected]" 
    ["sex"]=> 
    string(6) "female" 
    ["pos"]=> 
    string(3) "CEO" 
    } 
    [1]=> 
    array(5) { 
    ["name"]=> 
    string(8) "John Doe" 
    ["phone"]=> 
    string(12) "234-555-6789" 
    ["email"]=> 
    string(18) "[email protected]" 
    ["sex"]=> 
    string(4) "male" 
    ["pos"]=> 
    string(3) "CTO" 
    } 
} 

Что заселена форма выглядела как с выше данными: http://i.imgur.com/6yxbe.gif

Вы можете прочитать в этих данных с помощью PHP ниже. . (Примечание: Это просто демо я уезжаю материал безопасности до вас.)

<?php 

$candidates = array(); 

foreach ($_POST['candidate'] as $i => $can) 
{ 
    $candidates[$i] = array(); 

    foreach ($can as $key => $value) 
    { 
     $candidates[$i][$key] = $value; 
    } 
} 

echo '<pre>'; 
var_dump($candidates); 

Конечно, var_dump($candidates) будет производить точно такой же вывод, как var_dump($_POST['candidate']), так как мы сохраняя ту же структуру ,

Как вы хотите структурировать данные, зависит от вас.

Update:

Я создал этот ZIP архив, содержащий form.php и course_reg.php: [Download]

  1. Upload два файла на вашем сервере.
  2. Доступ form.php через ваш веб-браузер.
  3. Заполните форму.
  4. Нажмите кнопку «Отправить».
  5. course_reg.php должен теперь отображать заполненные данные.

Сообщите мне, как это.

+0

Извините, я не мог ответить раньше ... Спасибо за вашу помощь, я очень благодарен. Но я не могу получить данные формы с массивом «кандидат». Мне кажется, что массив «кандидат» не существует или $ _POST не может найти или подключить его ... Я понимаю, что я бы слишком много думал о том, что вы сделали выше, но это действительно помогло бы, если бы вы могли запустить скрипт, который вы (http://jsfiddle.net/4BEe7/), введя некоторые тестовые данные (John Doe), отправляйте и извлекайте эти данные с помощью php, а затем распечатайте или эхо-данные формы прямо там ... Еще раз спасибо для вашей помощи ... – Sms

+0

@ user1630911 Я обновил свой ответ (в нижней части) с помощью ссылки для скачивания. Пожалуйста, взгляните и вернитесь ко мне. – Coby

+0

@ Кобы ... Ух! Спасибо, триллион ... У сделал большой ... Спасибо ... Просто подумайте, как выразить свою благодарность ... У вас есть сайт проекта, где я могу сделать небольшое пожертвование? или мы могли бы поговорить об этом лучше в частном порядке, если вы не возражаете ... Вы можете отправить мне электронное письмо, мой идентификатор Yahoo - odelesamson 'at' yahoo.com ... Мое имя скайпа - «sam_odele» ... Надежда читать от вас ... Спасибо! – Sms

0

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

name="phone_number"; 

, чтобы вы могли передать его как массив

name="phone_number[]" 

затем цикл через него в PHP отправить страницу.

Я исправлю?

+0

Да, я знаю, что мне нужно использовать цикл for для вставки значения в БД. Но перед запуском цикла мне нужны имена этих полей ввода, а затем используйте $ _POST для их захвата. Проблема, с которой я сталкиваюсь, - это назвать эти поля ввода из jquery-скрипта (jquery.fspin.js) ... Я не могу назвать эти поля ввода в HTML и трудно захватить эти поля в php submit script bcos поля ввода генерируются из сценария jquery выше .... Я не очень хорошо разбираюсь в jquery и надеюсь, что вы сможете помочь с этим ...Спасибо – Sms

0

Проблема у Вас есть то, что плагин jQ_Form_Spinner который вы используете отстой :)

Посмотрите на имя и идентификатор атрибутов, которые он создает для каждого элемента формы:

<input type="text" name="textfield_0" id="textfield_0" placeholder="Enter your full name" style="margin-right: 12px;" class=""> 

Конфигурация Безразлично даже не позволяйте вам менять эти имена ни на что другое. Исходя из этого, вам будет трудно заставить это работать.

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

Мой совет - избавиться от плагина jQ_Form_Spinner. Вам это не нужно. То, что вы пытаетесь сделать (динамически создавать форму), тривиально при написании кода Javascript/jQuery вручную. Если вы только учитесь кодировать, тогда это будет хорошей задачей для начала.

Дайте ему уйти, и задайте еще несколько вопросов, если вы застряли.

+0

@ asgeo1 ... Спасибо за ваше время и усилия, чтобы помочь ... Я очень ценю это. – Sms

Смежные вопросы