PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
ronni10
Отправлено: 27 Января, 2018 - 11:43:12
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Янв. 2018  


Помог: 0 раз(а)




Есть форма в которой цикл перебирает массив и записывает каждый товар в определенные поля(название,значение ...).
Дело в том,что при передаче в обработчик ,в $_POST попадает только последний товар. Как передать все товары ,которые перебирает foreach?
 
 Top
Строитель
Отправлено: 27 Января, 2018 - 12:36:21
Post Id



Участник


Покинул форум
Сообщений всего: 1374
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 55 раз(а)




ronni10, нужно перед циклом объявить новый массив, а в теле цикла сохранять в этот массив необходимые значения. После выхода из цикла в этом массиве будут доступны все необходимые элементы.
 
 Top
ronni10
Отправлено: 27 Января, 2018 - 12:50:13
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Янв. 2018  


Помог: 0 раз(а)




Строитель пишет:
ronni10, нужно перед циклом объявить новый массив, а в теле цикла сохранять в этот массив необходимые значения. После выхода из цикла в этом массиве будут доступны все необходимые элементы.


Потом в инпуте можно будет отправить массив?
 
 Top
Строитель
Отправлено: 27 Января, 2018 - 12:53:32
Post Id



Участник


Покинул форум
Сообщений всего: 1374
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 55 раз(а)




ronni10 пишет:
Потом в инпуте можно будет отправить массив?
Да, но только в атрибуте name="" этого инпута нужно "указать", что предполагается отправка массива, добавив после названия пост-переменной квадратные скобки: name="var[]"
 
 Top
ronni10
Отправлено: 27 Января, 2018 - 12:55:18
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Янв. 2018  


Помог: 0 раз(а)




Строитель пишет:
ronni10 пишет:
Потом в инпуте можно будет отправить массив?
Да, но только в атрибуте name="" этого инпута нужно "указать", что предполагается отправка массива, добавив после названия пост-переменной квадратные скобки: name="var[]"


спасибо. ща попробую
(Добавление)
Строитель пишет:
ronni10 пишет:
Потом в инпуте можно будет отправить массив?
Да, но только в атрибуте name="" этого инпута нужно "указать", что предполагается отправка массива, добавив после названия пост-переменной квадратные скобки: name="var[]"


все записывается в этот массив ,но когда распечатываю $_POST['var'] в обработчике вот что выдает
array(4) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" } 
 
 Top
Строитель
Отправлено: 27 Января, 2018 - 13:49:25
Post Id



Участник


Покинул форум
Сообщений всего: 1374
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 55 раз(а)




ronni10, продолжая гадание на кофейной гуще, можно предполжить, что в атрибуте value="" у вас пусто. Массив, который вы получили в цикле, надо подставлять в этот атрибут.

(Отредактировано автором: 27 Января, 2018 - 13:50:47)

 
 Top
ronni10
Отправлено: 27 Января, 2018 - 14:01:46
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Янв. 2018  


Помог: 0 раз(а)




Строитель пишет:
ronni10, продолжая гадание на кофейной гуще, можно предполжить, что в атрибуте value="" у вас пусто. Массив, который вы получили в цикле, надо подставлять в этот атрибут.


дело в том ,что внутри формы делая var_dump я убеждаюсь ,Что там не пусто ,а есть многомерные массивы....понимаю нужен пример кода

<?php $post_mass =[]; ?>
<?php foreach($value as $about_skill => $this_skill): ?>


<tr>

<td>
<input type="text" name="about_name" class="about_name_input" value="<?php echo $this_skill['about_name']?>">

</td>
<td>
<input type="number" name="about_val" class="input_val" value="<?php echo $this_skill['about_val']?>">

</td>

</tr>
<input type="hidden" name="post_mass" value="<?php $post_mass ;?>">
<?php $post_mass = $this_skill;?>
<?php var_dump($post_mass);?>
<?php endforeach ; ?>



if (isset($_POST['skills_update'])) {

var_dump($_POST['post_mass']);

}

(Отредактировано автором: 27 Января, 2018 - 14:18:21)

 
 Top
Строитель
Отправлено: 27 Января, 2018 - 14:36:13
Post Id



Участник


Покинул форум
Сообщений всего: 1374
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 55 раз(а)




ronni10, попробуйте инпут записать вот таким образом, и посмотрите что придёт в массив $_POST после отправки формы:
PHP:
скопировать код в буфер обмена
  1. <input type="hidden" name="post_mass[]" value="<?= $this_skill ?>" />
 
 Top
ronni10
Отправлено: 27 Января, 2018 - 14:47:52
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Янв. 2018  


Помог: 0 раз(а)




Строитель пишет:
ronni10, попробуйте инпут записать вот таким образом, и посмотрите что придёт в массив $_POST после отправки формы:
PHP:
скопировать код в буфер обмена
  1. <input type="hidden" name="post_mass[]" value="<?= $this_skill ?>" />


пробовал -также ничего..3й день разные варианты пробую
 
 Top
Строитель
Отправлено: 27 Января, 2018 - 14:55:23
Post Id



Участник


Покинул форум
Сообщений всего: 1374
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 55 раз(а)




ronni10, а массив $value, который вы передаёте в цикл, вообще существует? Он не пустой?
(Добавление)
ronni10, это же не полный код вы привели? Напечатайте для ясности весь код.
 
 Top
ronni10
Отправлено: 27 Января, 2018 - 15:03:42
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Янв. 2018  


Помог: 0 раз(а)




Строитель пишет:
ronni10, а массив $value, который вы передаёте в цикл, вообще существует? Он не пустой?
(Добавление)
ronni10, это же не полный код вы привели? Напечатайте для ясности весь код.


неполный конечно .есть контроллер и э тот вид :

<?php include ROOT.'/views/layouts/admin_header.php'; ?>
<body>
<header>
<div class="container">
<div class="row">
<div class="col-md-12">
<strong>Email: </strong>info@yourdomain.com
&nbsp;&nbsp;
<strong>Support: </strong>+90-897-678-44
</div>

</div>
</div>
</header>
<!-- HEADER END-->
<div class="navbar navbar-inverse set-radius-zero">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.html">

<img src="/assets/img/logo.png" />
</a>

</div>

<div class="left-div">
<div class="user-settings-wrapper">
<ul class="nav">

<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#" aria-expanded="false">
<span class="glyphicon glyphicon-user" style="font-size: 25px;"></span>
</a>
<div class="dropdown-menu dropdown-settings">
<div class="media">
<a class="media-left" href="#">
<img src="/assets/img/64-64.jpg" alt="" class="img-rounded" />
</a>
<div class="media-body">
<h4 class="media-heading">Jhon Deo Alex </h4>
<h5>Developer & Designer</h5>

</div>
</div>
<hr />
<h5><strong>Personal Bio : </strong></h5>
Anim pariatur cliche reprehen derit.
<hr />
<a href="#" class="btn btn-info btn-sm">Full Profile</a>&nbsp; <a href="login.html" class="btn btn-danger btn-sm">Logout</a>

</div>
</li>


</ul>
</div>
</div>
</div>
</div>
<!-- LOGO HEADER END-->
<?php include ROOT.'/views/layouts/admin_menu.php'; ?>
<!-- MENU SECTION END-->
<div class="content-wrapper">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1 class="page-head-line">Data Tables</h1>
</div>
</div>
<div class="row">
<?php foreach ($about_skills as $key => $value): ?>
<div class="col-md-6">
<!-- Context Classes -->
<div class="panel panel-default">
<form action="/admin/about" method="post">
<div class="panel-heading">
<input type="text" name="skill_name" class="skill_name_input" value="<?php echo $key?>">
</div>
<div class="panel-body">
<div class="table-responsive">
<table class="table table-striped table-bordered table-hover">
<tbody>
<?php $post_mass =[]; ?>
<?php foreach($value as $about_skill => $this_skill): ?>


<tr>

<td>
<input type="text" name="about_name" class="about_name_input" value="<?php echo $this_skill['about_name']?>">

</td>
<td>
<input type="number" name="about_val" class="input_val" value="<?php echo $this_skill['about_val']?>">

</td>

</tr>

<?php array_push($post_mass,$this_skill['about_name'],$this_skill['about_val'] );?>

<?php var_dump($post_mass);?>
<?php endforeach ; ?>
<input type="hidden" name="post_mass[]" value="<?php $post_mass ;?>">
</tbody>
</table>
</div>
<input type="submit" name="skills_update" class="btn btn-warning about_change" value="upd">
</div>
</form>
</div>

<!-- end Context Classes -->
</div>
<?php endforeach ; ?>
</div>

</div>
</div>
<!-- CONTENT-WRAPPER SECTION END-->
<?php include ROOT.'/views/layouts/admin_footer.php'; ?>
(Добавление)
в $value несколько таких массивов :

array(4) {
[0]=>
array(5) {
["skills_id"]=>
string(1) "1"
["skill_name"]=>
string(8) "frontend"
["about_id"]=>
string(1) "1"
["about_name"]=>
string(4) "html"
["about_val"]=>
string(2) "60"
}
[1]=>
array(5) {
["skills_id"]=>
string(1) "1"
["skill_name"]=>
string(8) "frontend"
["about_id"]=>
string(1) "2"
["about_name"]=>
string(3) "css"
["about_val"]=>
string(2) "60"
}
[2]=>
array(5) {
["skills_id"]=>
string(1) "1"
["skill_name"]=>
string(8) "frontend"
["about_id"]=>
string(1) "3"
["about_name"]=>
string(11) "js & jquery"
["about_val"]=>
string(2) "20"
}
[3]=>
array(5) {
["skills_id"]=>
string(1) "1"
["skill_name"]=>
string(8) "frontend"
["about_id"]=>
string(1) "4"
["about_name"]=>
string(4) "sass"
["about_val"]=>
string(2) "50"
}
}

(Отредактировано автором: 27 Января, 2018 - 15:05:41)

 
 Top
Строитель
Отправлено: 27 Января, 2018 - 15:15:19
Post Id



Участник


Покинул форум
Сообщений всего: 1374
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 55 раз(а)




ronni10, а почему у вас инпут <input type="hidden" name="post_mass[]" value="<?php echo $post_mass; ?>"> вынесен за пределы цикла? Переместите его во второй цикл, и вроде бы этого должно быть достаточно.
(Добавление)
Или же если этот инпут должен быть именно в теле первого цикла, тогда собирайте массив, как я говорил выше, и подставляйте его в атрибут value, только не забывайте про оператор echo (у вас его как раз там и нет): value="<?php echo $post_mass; ?>">
 
 Top
ronni10
Отправлено: 27 Января, 2018 - 15:19:31
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Янв. 2018  


Помог: 0 раз(а)




Строитель пишет:
ronni10, а почему у вас инпут <input type="hidden" name="post_mass[]" value="<?php echo $post_mass; ?>"> вынесен за пределы цикла? Переместите его во второй цикл, и вроде бы этого должно быть достаточно.
(Добавление)
Или же если этот инпут должен быть именно в теле первого цикла, тогда собирайте массив, как я говорил выше, и подставляйте его в атрибут value, только не забывайте про оператор echo (у вас его как раз там и нет): value="<?php echo $post_mass; ?>">


он там был ,я его для теста вынес
 
 Top
Строитель
Отправлено: 27 Января, 2018 - 15:20:36
Post Id



Участник


Покинул форум
Сообщений всего: 1374
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 55 раз(а)




ronni10, прочитайте добавление из моего поста выше.
 
 Top
ronni10
Отправлено: 27 Января, 2018 - 15:24:53
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Янв. 2018  


Помог: 0 раз(а)




echo ощибку выдает..массив в строку
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB