Как получить многострочные данные из textarea в mysql

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

Данные вставляются в 13 columns (with some blank), каждый из которых разделен табуляцией и затем переносится на новую строку. Общее количество строк меняется ежедневно с

1 - 100 EG:
Dr Pete    1234567890    anthony    woods    11/11/11    planned visit    12/12/12   dr roger    AMH    13/01/13   planned discharge    usual place of residence    "would be blank"   

ИЛИ ЖЕ

Dr Pete    1234567890    anthony    woods    11/11/11    planned visit    12/12/12   dr roger    AMH    "would be blank"   "would be blank"    "would be blank"    "would be blank" 

html-форма:

<form name = "form1" method = "post" action = "insert.php">
<textarea name = "area"></textarea>
<input type = "submit" name = "submit" value = "submit">
</form>

php insert.php:

$area = preg_split("[\t]", "$textarea");

print_r($area);

$sql = "INSERT INTO admissions (registered_gp, nhs_no, forename, surname, dob, admission_method, admitted_on, consultant, ward, discharge_date, 
discharge_reason, discharged_to, date_of_death)
VALUES ('$area')";

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
490
2

Ответы 2

вы можете изменить свой код вот так и попробовать

$var = 'Dr Pete    1234567890    anthony    woods    11/11/11    planned visit    12/12/12   dr roger    AMH    13/01/13    planned discharge    usual place of residence    "would be blank"';

        $area = explode("    ", $var);

        $registered_gp = $area[0] ;
        $nhs_no = $area[1] ;
        $forename = $area[2] ;
        $surname = $area[3] ;
        $dob = $area[4] ;
        $admission_method = $area[5] ;
        $admitted_on = $area[6] ;
        $consultant = $area[7] ;
        $ward  = $area[8] ;
        $discharge_date = $area[9] ;
        $discharge_reason = $area[10] ;
        $discharged_to = $area[11] ;
        $date_of_death = $area[12] ;


        $sql = mysql_query("INSERT INTO admissions (registered_gp, nhs_no, forename, surname, dob, admission_method, admitted_on, consultant, ward, discharge_date, 
discharge_reason, discharged_to, date_of_death)
VALUES ('$registered_gp','$nhs_no','$forename','$surname','$dob','$admission_method','$admitted_on','$consultant','$ward','$discharge_date','$discharge_reason','$discharged_to','$date_of_death')");

Привет, Спасибо за ответ, но будет ли это работать, если данные будут извлекаться из текстовой области вместо предустановленных данных?

Anthony Woods 21.05.2018 13:33

да, он будет извлекать данные из текстового поля, пожалуйста, убедитесь, что вы указали разделенные табуляцией между каждой отдельной информацией. Например, $ var = 'Dr Pete 1234567890 Anthony Woods 11/11/11 запланированный визит 12/12/12 dr roger AMH "будет пустым" "будет пустым" "будет пустым" "пустым" ';

Girish Ninama 21.05.2018 13:35

Как только я помещаю этот код на страницу, появляется ошибка http 500.

Anthony Woods 21.05.2018 13:38

Я попытался использовать приведенный выше код и снова застрял. Бит $var = #### я вообще не понимаю и, похоже, не работает. Я использую $area1 = preg_replace("[\t]", ',', $textarea); и $area = explode(",", $area1); . Это затем идеально разделяет данные на массив. Пока я не введу более одной строки данных, последнее пустое поле заменяется первым используемым полем следующей строки и вместо этого становится array [13] вернуться к [0] ??? Любые идеи? Я искал в Интернете 8 часов, но ничего не нашел.

Anthony Woods 22.05.2018 19:41

измените вкладки запятыми прямо перед выполнением $ sql = ...

$area = str_replace("[\t]", "','", $area);

это будет использоваться с приведенным выше кодом с комментариями или с моим исходным кодом?

Anthony Woods 21.05.2018 13:49

Должно быть: $ area = str_replace ("[\ t]", ",", $ textarea);

Anthony Woods 21.05.2018 13:54

в файле php, прежде чем вставлять var $ area в строку $ sql. php insert.php: $area = str_replace("[\t]", "','", $area); $sql = "INSERT INTO admissions (registered_gp, nhs_no, forename, surname, dob, admission_method, admitted_on, consultant, ward, discharge_date, discharge_reason, discharged_to, date_of_death) VALUES ('$area')";

calm 21.05.2018 15:11

Другие вопросы по теме