У меня проблема с моим кодом. Согласно другому сообщению: (Создание нескольких разделов на основе числа, выбранного в раскрывающемся меню) Я взял некоторые идеи для своего кода, но у меня есть проблема. Я хочу вставить в свою базу данных все входные данные из созданных div, но он записывает только последние входные данные div. Это моя настройка контроллера:
$generals= new Instance;
$generalsnames=implode("",$_POST['generalname']);
$generalstime=implode("",$_POST['generaltime']);
$generals->Name= $generalsnames;
$generals->Time= $generaltime;
$generals->save();
Вы можете помочь мне? Спасибо за совет
Я ответил в другом комментарии. Спасибо, сэр! :)






В коде HTML (blade) добавьте «[]» к именам полей. Таким образом, ваши имена полей должны быть следующими:
<input type = "text" name = "generalname[]">
<input type = "text" name = "generaltime[]">
вместо
<input type = "text" name = "generalname">
<input type = "text" name = "generaltime">
потому что только последнее значение добавленных div с такими именами будет включено в ваш POST-запрос к вашему маршруту, если вы не указали массив для имен ваших полей.
Затем в вашем контроллере:
public function store(Request $request)
{
$input = $request->all();
//you might want to combine your arrays for easier saving
$general_time = array_combine($input['generalname'], $input['generaltime']);
//then you will use foreach statement to save all of your data
foreach($general_time as $general => $time)
{
$generals = new Instance;
$generals->Name = $general;
$generals->Time = $time
$generals->save();
}
}
Я сделал это! Теперь проблема в том, что все результаты помещаются в одну строку, а не в несколько строк... Как я могу написать разные строки для каждого блока div?
Используйте оператор foreach и не сжимайте массив, потому что в результате его схлопывания получится строка, поэтому в базу данных будет записана только одна запись.
Мне нужно настроить оператор foreach на другой стороне HTML и php?
как упомянул @rkg, вам нужно [] в вашем лезвии, тогда на вашем контроллере это будет ваш код.
$input = $request->all();
for($i=0; $i<count($input['generalname']); $i++)
{
$generals= new Instance;
$generals->Name= $input['generalname'][$i];
$generals->Time= $input['generaltime'][$i];
$generals->save();
}
вы добавили [] к вашему входному имени?
да. Я сделал. Например: <input class = "form-control" name='generalname[]' id = "generalname" placeholder = "Имя генерала"/><br>
о, я думаю, потому что тот, который вы получаете, - это идентификатор, а не имя. Попробуйте сделать это с именем входа, а не с идентификатором.
извините не совсем понял. Мне тоже нужно добавить «[]» в идентификатор?
Нет, ваш jquery передает данные в контроллер или у вас есть форма, которая передает их в контроллер?
Я думаю, что мой jquery просто добавляет несколько div, и разные формы передают данные в контроллер. Я не очень разбираюсь в jquery и т. д. Я скопировал код jquery из другого сообщения, просто чтобы создать разные элементы div.
попробуйте использовать dd(request->all()); и посмотреть, получает ли ваш ввод все это
Ой. На самом деле я вижу две разные строки для каждого общего имени и общего времени: «экземпляры» => массив: 1 [▼ 0 => «Тест»] «общее имя» => массив: 2 [▼ 0 => «1111» 1 => «2222 " ] "generaltime" => array:2 [▼ 0 => "-10" 1 => "-6" ] Думаю, я разобрался. Что мне не хватает..? Спасибо
На самом деле данные вставляются в базу данных. Каждый раз, когда я перезагружаюсь, я получаю разные строки в базе данных с правильными данными, которые я вставил. Но у меня все еще есть проблема с преобразованием массива в строку... Почему?
Я заработал.
Я смешал решения @Jovs и @rkg. После нескольких настроек и перезапуска сервера у меня все заработало. Выполненные шаги:
[] в теги имен в файле blade.php.$input = $request->all();
for($i=0; $i<count($input['generalname']); $i++){
$generals= new Instance;
$generals->Name= $input['generalname'][$i];
$generals->Time= $input['generaltime'][$i];
$generals->save();
}
У меня возникла проблема с преобразованием массива в строку. Я действительно ничего не трогал. Я только что перезапустил сервер, но позже у меня все заработало.
Вы можете предоставить данные, которые хотите сохранить? и код того, откуда придет div.