Как вставить в MySQL несколько файлов из поля текстовой области - PullRequest
2 голосов
/ 16 октября 2011

Мне нужна помощь, чтобы понять, как добавить несколько полей в базе данных mysql из текстовой области с несколькими строками. Я хотел бы, чтобы каждая строка была разбита на 6 значений (по одному для каждого поля моего БД).

например, у меня есть следующие строки:

info1|info2|info3|info4|info5|info6

info1|infob|infoc|infod|infoe|infof

info1|info8|info9|info0|info1|info2

info1|info4|info4|info5|info6|info7

каждое поле отделено "|" (вот из-за примера, который я нашел в Интернете, я опубликую здесь несколько .:)

тогда у меня есть следующий файл: insert_form.php

<form action="insert_engine.php" method="post">
  <p>
    <textarea name="pctext" id="pctext" cols="100" rows="10"></textarea>
  </p>
  <p>
    <input type="submit" />
  </p>
</form> 

и у меня есть insert_engine.php:

<?php
$con = mysql_connect("localhost","USER","PASS");
if (!$con)
{
  die('Could not connect: ' . mysql_error());
}

mysql_select_db("DBNAME", $con);

// assuming the text area value is in $_GET["pctext"]
$lines = explode("\n", $_GET["pctext"]);
foreach($lines as $line) {
  list($FIELD1, $FIELD2, $FIELD3, $FIELD4, $FIELD5, $FIELD6) = explode(" | ", $line);
    $sql="INSERT INTO TABLENAME (FIELD1, FIELD2, FIELD3, FIELD4, FIELD5, FIELD6)
      VALUES
      ('$_POST[FIELD1]', '$_POST[FIELD2]', '$_POST[FIELD3]','$_POST[FIELD4]', '$_POST[FIELD5]', '$_POST[FIELD6]')";

    if (!mysql_query($sql,$con))
    {
          die('Error: ' . mysql_error());
    }
    echo "record added";
}
mysql_close($con)
?> 
<meta http-equiv="refresh" content="2;URL=confirmation.php" />

Честно говоря, я почти ничего не знаю о php, я учусь принудительно, просматривая примеры в Интернете, тестирую их на моем Linux и т. Д. Я получил это из другой ветки здесь: Вставка текста из textarea в базу данных MySQL без потери форматирования , и я пытаюсь заставить его работать.

Я понимаю, что я подключаюсь к MySQL, выбираю БД, получаю содержимое из pctext (textarea), взрываю каждую строку и разбиваю на "|" (труба), а затем, используя цикл (foreach), вставьте в СТОЛ.

Когда я нажимаю кнопку отправки в форме, я перехожу на страницу движка и через 2 секунды я попадаю на страницу подтверждения, в моей БД ничего не вставляется, но у меня есть пустой реестр, поэтому что-то происходит.

Может ли кто-нибудь помочь мне с этим сценарием?

заранее спасибо

PC

Ответы [ 2 ]

1 голос
/ 16 октября 2011
$lines = explode("\n", $_GET["pctext"]);

должно быть

$lines = explode("\n", $_POST["pctext"]);

Потому что ваш метод формы установлен на 'post', а не 'get'

Также изменить

list($FIELD1, $FIELD2, $FIELD3, $FIELD4, $FIELD5, $FIELD6) = explode(" | ", $line);

до

list($FIELD1, $FIELD2, $FIELD3, $FIELD4, $FIELD5, $FIELD6) = explode("|", $line);

Поскольку текст вашего примера не имеет пробелов вокруг |

Также .. список не превращает элементы в переменные $ _POST

('$_POST[FIELD1]', '$_POST[FIELD2]', '$_POST[FIELD3]','$_POST[FIELD4]', '$_POST[FIELD5]', '$_POST[FIELD6]')";

Должно быть

('$ FIELD1', '$ FIELD2', '$ FIELD3', '$ FIELD4', '$ FIELD5', '$ FIELD6') ";

0 голосов
/ 16 октября 2011

Мало того, что вы используете $ _GET вместо $ _POST, но вам также не хватает поведения языка для констант, ключи массива должны быть заключены в кавычки, но в вашем случае вы используете $ _POST ["FIELD1"] вместо $ FIELD1

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