С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 16.01.2020
Сообщений: 12
1

Перебрать массив значений $_POST

17.04.2020, 22:09. Показов 4718. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер, я пытаюсь написать некий опросник. То есть есть 15 вопросов, которых в будущем будет больше, и напротив каждого вопроса пользователь должен поставить оценку и при желании написать комментарий. Все вопросы для опроса и имена для блоков div подтягиваю с базы. Возможно что имена div-ов тянуть с базы это не совсем правильно, но я это делал для того чтобы идентифицировать их в массиве $_POST, думал так легче будет присвоить комментарий первого вопроса к оценке первого вопроса, второго ко второму и записать все это в базу.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
while($myrow = mysqli_fetch_array($result)){
 
echo  "<div class='block_question'><div class='department'>".$myrow["department"]."</div>";
echo  "<div class='question'><p>".$myrow["question"]."</p></div>";
echo  "<div class='score'><select  name='".$myrow["class_question"]."' required>
<option value='' hidden=''>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
</select>
</div> 
<div class='comment_block'><textarea  placeholder='Коммментарий' class='comment' name='".$myrow["comment"]."' cols='100' rows='4' wrap='virtual' maxlength='100'></textarea></div>
  </div>";   
}
Суть вопроса вот в чем, как мне теперь выловить эти значения на другой странице куда они передаются через $_POST, и присвоить их переменным для того чтобы занести в базу комментарии и оценки которые поставил пользователь? Через foreach
PHP
1
2
 foreach( $_POST as $key => $value){
echo "  $key, $value <br />";
получаю это

question1, 1
comment1, Комментарий №1
question2, 2
comment2,
question3, 3
comment3,
question4, 4
comment4,
question5, 5
comment5, Комментарий №5
question6, 6
comment6,
question7, 7
comment7,
question8, 8
comment8,
question9, 9
comment9,
question10, 10
comment10, Комментарий №10
question11, 9
comment11,
question12, 8
comment12,
question13, 7
comment13,
question14, 6
comment14,
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.04.2020, 22:09
Ответы с готовыми решениями:

Запись значений в массив через $_POST
Пожалуйста помогите не могу сделать: С клавиатуры вводятся n чисел. Составьте программу,...

Вывод значений из массива $_POST
Имеется форма значения передаются постом. &lt;form action=&quot;check.php&quot; style=&quot;text-align:center&quot;...

Очистить массив $_POST
Доброго времени суток. Подскажите способы полного очищения массива $_POST, unset($_POST) - не...

Как перезаписать массив из $_POST?
Люди добрые подскажите пожалуйста в $_POST лежит многомерный массив, как вывести его в переменную...

8
2396 / 1396 / 659
Регистрация: 23.08.2015
Сообщений: 3,508
17.04.2020, 22:53 2
WWWPHP, Во-первых нельзя посреди html кода обращаться к базе данных. Вынесете это в область логики формирования данных для вывода. А в html коде используйте foreach. При этому уже используется конструкция с двоеточием, как php играет роль некого шаблонизатора.

Во-вторых вы можете использовать id вопросов из БД. Так же не забудьте прописывать value для всех options

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
 
$questions = [];
 
while($row = mysqli_fetch_array($result)) {
    $questions = $row;
}
 
?>
 
<?php foreach ($questions as $question): ?>
    <div class='block_question'><div class='department'><?= $question["department"]?></div>;
        <div class='question'><p><?= $question["question"] ?></p></div>
        <div class='score'>
            <select  name="[<?= $question["id"] ?>]answer" required>
                <option value='' hidden=''>0</option>
                <option value='1'>1</option>
                <option value='2'>2</option>
                <option value='3'>3</option>
                <option value='4'>4</option>
                <option value='5'>5</option>
                <option value='6'>6</option>
                <option value='7'>7</option>
                <option value='8'>8</option>
                <option value='9'>9</option>
                <option value='10'>10</option>
            </select>
        </div>
        <div class='comment_block'><textarea  placeholder='Коммментарий' class='comment' name='[<?= $question["id"] ?>]comment' cols='100' rows='4' wrap='virtual' maxlength='100'></textarea></div>
    </div>
<?php endforeach ?>
Добавлено через 2 минуты
И для значений аттрибутов используйте двойные кавычки.

Добавлено через 7 минут
Сорян тупанул.
PHP/HTML
1
<select  name="answer[<?= $question["id"] ?>]" required>
PHP/HTML
1
<textarea  name='comment[<?= $question["id"] ?>]' ></textarea>
1
0 / 0 / 0
Регистрация: 16.01.2020
Сообщений: 12
17.04.2020, 23:02  [ТС] 3
sad67man, Спасибо конечно, но эта часть кода у меня отлично работала и данные с базы выводятся, и то что я там обращался в блоке html к базе это тоже все работало так как весь блок div-ов выводился через echo.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 <form action="send.php" method="post"> 
<?php
require_once 'connect.php';
 
$link = mysqli_connect($host, $user, $password, $database) 
    or die("Ошибка " . mysqli_error($link));
 
$query ="SELECT * FROM question";
$result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link)); 
if($result)
{
while($myrow = mysqli_fetch_array($result)){
 
echo  "<div class='block_question'><div class='department'>".$myrow["department"]."</div>";
echo  "<div class='question'><p>".$myrow["question"]."</p></div>";
echo  "<div class='score'><select  name='".$myrow["class_question"]."' required>
<option value='' hidden=''>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
</select>
</div> 
<div class='comment_block'><textarea  placeholder='Коммментарий' class='comment' name='".$myrow["comment"]."' cols='100' rows='4' wrap='virtual' maxlength='100'></textarea></div>
  </div>";   
}
 
    mysqli_free_result($result);
}
mysqli_close($link);
 
?>
 <div class="sub">
   <p><input type="submit" value="Отправить"/></p>
</div>
</div> 
  
 
  </form>
суть вопроса была в получении данных на другой странице из $_POSTа, и записи всего полученного в базу, то есть к примеру ID,Вопрос1,Оценка5,Комментарий к первому вопросу.
0
2396 / 1396 / 659
Регистрация: 23.08.2015
Сообщений: 3,508
17.04.2020, 23:06 4
WWWPHP, Это был лишь комментарий. Далее я написал, что можно использовать id вопросов. С name инпутовк примеру answer[<?= $question["id"] ?>] и т.д.
Тогда вы получите массив ответов и массив комментариев. В каждом из которых ключем будет являться id вопроса. Там далее уже разрулите)
0
0 / 0 / 0
Регистрация: 16.01.2020
Сообщений: 12
17.04.2020, 23:17  [ТС] 5
на другой странице куда я отправляю данные я написал этот код
PHP
1
2
3
4
5
  foreach( $_POST as $key => $value){
    
    echo "  $key,  $value <br />";
}
/*
Данные выводятся, но как их раскидать по полочкам в БД?

Добавлено через 10 минут
Вот именно что не получается разрулить.
0
2396 / 1396 / 659
Регистрация: 23.08.2015
Сообщений: 3,508
17.04.2020, 23:21 6
WWWPHP, Ну во-первых. Для просмотре данных лучше использовать
PHP
1
var_dump($_POST)
Во-вторых в вам нужно определиться со структурой базы данных, как вы будете хранить ответы. Допустим создадим базу данных

answers
id | question_id | answer | comment

Но этого не достаточно. Нужно еще как-то закреплять эти ответы за конкретным пользователем. Иначе БД не имеет особого смысла. Тогда их можно просто сохранить в Сессию.

answers
id | question_id | answer | comment | user_id

Далее покажите, как вы достаете данные из БД, мне нужно знать какими инструментами вы пользуетесь.

Добавлено через 1 минуту
А блин сорян, понял, что уже по mysqli_fetch_array) сейчас попробую что-нибудь накидать)
1
0 / 0 / 0
Регистрация: 16.01.2020
Сообщений: 12
17.04.2020, 23:30  [ТС] 7
Да, регистрацию я сделаю позже и как вы написали структура бд предполагалась такая
id | question_id | answer | comment | user_id
но мне бы для начала записать то что есть, комментарии . оценки и id вопроса в базу записать.
0
2396 / 1396 / 659
Регистрация: 23.08.2015
Сообщений: 3,508
17.04.2020, 23:42 8
Лучший ответ Сообщение было отмечено WWWPHP как решение

Решение

Я с mysqli так давно работал, сейчас конечно разворачивать БД, не особо охота. Вот накидал пример. Не уверен, что он работает. Но надеюсь это вам поможет и натолкнет на правильный путь к решению задачи)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
 
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
 
/* проверка соединения */
if (mysqli_connect_errno()) {
    printf("Не удалось подключиться: %s\n", mysqli_connect_error());
    exit();
}
 
$user_id = 5;
 
$answers = [];
 
if (!empty($_POST)) {
    foreach ($_POST['answer'] as $id => $answer) {
        $answers[$id]['answer'] = $answer;
        $answers[$id]['id'] = $answer;
    }
 
    foreach ($_POST['comment'] as $id => $comment) {
        $answers[$id]['comment'] = $comment;
    }
}
 
if ($stmt = mysqli_prepare($link, 'INSERT INTO answer (`question_id`, `answer`, `comment`, user_id) VALUES (?, ?, ?, ?)')) {
 
    foreach ($answers as $answer) {
        /* связываем параметры с метками */
        mysqli_stmt_bind_param($stmt, "ddsd", $answer['id'], $answer['answer'], $answer['comment'], $user_id);
 
        /* запускаем запрос */
        mysqli_stmt_execute($stmt);
    }
 
    /* закрываем запрос */
    mysqli_stmt_close($stmt);
}
1
0 / 0 / 0
Регистрация: 16.01.2020
Сообщений: 12
18.04.2020, 10:22  [ТС] 9
sad67man, Спасибо тебе большое!
0
18.04.2020, 10:22
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.04.2020, 10:22
Помогаю со студенческими работами здесь

Занесение данных с $_POST в обычный массив
Всем привет. Помогите пожалуста решить проблему. Мне нужно занести дание введений в форму в...

Данные не помещаются в глобальный массив $_POST
Я сижу весь день над этой проблемой... Задача очень простая и раньше не составляла для меня труда....

Форма не отсылает данные в массив $_POST
столкнулся с проблемой, что мне нужно определять какая нажата кнопка, для этого решил предпринять...

Перебрать массив
Подскажите как перебрать массив. есть вот такой массив. как мне сделать что бы он начинался с 0 а...

Построить, перебрать массив
Есть массив, в массиве еще подмасивы. В подмасивых содержится ячейка, в ней time Какой будет...

Перебрать массив сессии
Привет, ребят. Подскажите как перебрать массив, который хранится в сессии. Мне нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Администрирован­­­ие Git, продвинутые техники работы с Git
InfoMaster 11.01.2025
Основы управления репозиторием Эффективное управление Git-репозиторием требует глубокого понимания механизмов контроля доступа и инструментов администрирования. Рассмотрим ключевые аспекты. . .
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru