2015-03-25 2 views
-4

Возможно ли получить данные из поля ввода и сохранить их в ассоциативном массиве в PHP?Как хранить данные в ассоциативном массиве из поля ввода?

Например, если у нас есть два поля ввода для формы. Первый - это имя и второе имя. Когда мы вводим данные в оба поля, он должен храниться в ассоциативном массиве. Предположим, мы хотим ввести данные 5 раз, а затем отобразить все 5 первых имен с его соответствующей фамилией в браузере.

+2

форму> отправить> '$ _POST' – Daan

+3

Вы справедливый путь, чтобы быть готовым задать вопрос. Это базовый PHP, о котором вы можете узнать в учебниках. Когда вы знакомы с основами, задайте вопрос о некотором коде, за которым вы застряли. Проверка, конечно, не обман. – James

+0

@ Даан Да, используя метод $ _POST. Тогда как мы храним его и отображать все данные в браузере? –

ответ

0

Использование сессий, как это:

<?php 

    session_start(); 

    if(isset($_POST['lname']) && isset($_POST['marks'])){   

    $_SESSION['info'][] = array($_POST['lname'] => $_POST['marks']); 
    } 

    if(isset($_SESSION['info'])) { 
    for($i = 0; $i < count($_SESSION['info']); $i++) { 
     foreach($_SESSION['info'][$i] as $name => $marks){ 
     echo '<p>' . $name . '<br>'; 
     echo $marks . '</p>'; 
    } 
    } 
    }  

    ?> 

    <form action = "<?php echo $_SERVER['PHP_SELF'];?>" method = "POST"> 

    Name:<br> 
    <input type = "text" name = "lname"><br><br> 
    Marks:<br> 
    <input type = "text" name = "marks"><br><br> 
    <input type = "submit" value = "Submit"> 

    </form> 

Узнайте больше на сайте:

http://php.net/manual/en/intro.session.php

+0

@NileshBhunjun у вас есть продвижение? –

1

Используя имя атрибута

Вы можете использовать имя атрибута в форму, чтобы отправить массив.

Для примера (только 3 первые имена ;-)):

<form action="test.php" method="post"> 
    <input name="first_name[]" value="John"> 
    <input name="first_name[]" value="James"> 
    <input name="first_name[]" value="Jimmy"> 
    <input name="last_name" value="Doe"> 
    <input type="submit"> 
</form> 

Если представить это, $ _POST [ 'first_name'] будет массив (test.php):

echo "$_POST['first_name'][0] $_POST['first_name'][1] $_POST['first_name'][2] $_POST['last_name']"; 

Выход:

John James Jimmy Doe 

Используя взрываются()

Другой способ будет иметь 2 поля ввода и разделить первое имя на сервере:

<form action="test.php" method="post"> 
    <input name="first_name" value="John James Jimmy"> 
    <input name="last_name" value="Doe"> 
    <input type="submit"> 
</form> 

и в test.php:

$first_names = explode(' ',$_POST['first_name']); 

массив будет проиндексирован. Для того, чтобы повторить их, как и в первом примере:

echo "$first_names[0] $first_names[1] $first_names[2] $_POST[last_name]"; 

Выход:

John James Jimmy Doe 
+0

Нет! Я хочу иметь только 2 поля ввода. <входной тип = «текст» имя = «Имя»> <вход Тип = «текст» название = «фамилия»> <входной тип = «отправить» Имя «отправить»> я должен быть в состоянии введите 5 раз имя и фамилию .. Он должен быть сохранен в ассоциативном массиве. –

+2

@NileshBhunjun - нет, это невозможно. Вам нужно использовать синтаксис, который дал Марк. Если вы придумаете другой метод, вернитесь и скажите нам, потому что мы с удовольствием узнаем, как вы это сделали. – DaveyBoy

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