Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310

Поиск и вывод из базы данных

13.05.2023, 13:35. Показов 1447. Ответов 28

Студворк — интернет-сервис помощи студентам
Добрый день! Не совсем понимаю рабочие моменты. Подскажите как реализовать.
Структура главной страницы:

<body>
input и кнопка поиск с ссылкой на php файл поиска в базе данных
php код первоначального (неотфильтрованного) вывода таблицы из бд
и сама таблица.
Куда мне вставить код чтобы после php файла поиска в базе данных таблица обновилась на главной странице. Если я вставляю код после input то input пустой и код сразу выполняется естественно ошибка будет. А если в php файл поиска в базе данных то как потом все передать на главную страницу и вывести таблицу заново?
HTML5
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
46
47
<body>
<div style="margin-top:35px"></div>
            <form  class="searchinput" method="post" action="do_search.php"> <!--- Вызов поиска в БД-->
            <p><input  type="text" name="search" id="search"> <input type="submit" value="Поиск"></p>
    </form>
</div>  <!------- ПЕРВОЕ ЗАПОЛНЕНИЕ ТАБЛИЦЫ ------>
        <?php
                $sql = pdo()->prepare("SELECT * FROM `details`");
                $sql->execute();
                $result = $sql->fetchAll();
        ?>
<div style="margin-top:10px">
    
    <table class="tablekassa">
        <tr>
          <th></th>
          <th>Артикул</th>
          <th>Производитель</th>
          <th>Название</th>
          <th>Кол-во</th>
          <th>Цена</th>
          <th>Партия</th>
          <th>Магазин</th>
          <th style="background:red">Стеллаж №</th>
          <th style="background:red">Полка №</th>
          <th style="background:red">Коробка №</th>
          <th>Состояние</th>
          <th>Комментарий</th>
          <th></th>
        </tr>
            <?php foreach ($result as $value) { ?>
        <tr>
            <td><?=$value['id'] ?></td>
            <td><?=$value['articul'] ?></td>
            <td><?=$value['manufacturer'] ?></td>
            <td><?=$value['detail'] ?></td>
            <td><?=$value['quantity'] ?></td>
            <td><?=$value['price'] ?></td>
            <td><?=$value['partiya'] ?></td>
            <td><?=$value['stellazh'] ?></td>
            <td><?=$value['magazine'] ?></td>
            <td><?=$value['polka'] ?></td>
            <td><?=$value['korobka'] ?></td>
            <td><?=$value['sostoyanie'] ?>
            <td><?=$value['comment'] ?></td>
            <td>
   </table>
код файла do_search.php
PHP
1
2
3
4
5
6
<?php
require_once __DIR__.'/boot.php';
$sql = pdo()->prepare("SELECT * FROM `details` WHERE `articul` = :search");
$sql->execute(['search' => $_POST['search']]);
$result = $sql->fetchAll();
?>
Вот мы нашли в базе строку соответствующую условию а дальше что с этими данными делать? Как передать назад в основной код или где этот код прописать чтобы страница перезаполнилась когда строка найдена?
Миниатюры
Поиск и вывод из базы данных  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.05.2023, 13:35
Ответы с готовыми решениями:

Поиск и вывод из базы данных
&lt;form action=&quot;search.php&quot; method=&quot;post&quot;&gt; &lt;input type=&quot;text&quot; name=&quot;nickname&quot; placeholder=&quot;Поиск по никнейму:&quot;&gt; &lt;input...

Поиск и вывод из базы данных
Есть у нас следующая форма: &lt;form class=&quot;form&quot; method=&quot;post&quot;&gt; &lt;div...

Базы данных. Поиск и вывод информации из базы.
Вопрос к уважаемым знатокам в работе в ИСР Delphi. Имеется простая база данных(поле1-название\поле2-параметр), созданная в MS Access...

28
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
13.05.2023, 15:22  [ТС]
не понятно как вывести второй раз уже отсортированную таблицу на эту же страницу
0
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
15.05.2023, 11:07
Сделать отправку формы на страницу с формой, а выборку из базы заменить на что-то типа этого:
PHP
1
2
3
4
5
6
7
8
9
$sql = '';
$execute = [];
if(!empty($_POST['search'])){
    $sql =  ' WHERE `articul` = :search';
    $execute = ['search' => $_POST['search']];
} 
$sql = pdo()->prepare("SELECT * FROM `details`" . $sql);
$sql->execute($execute);
$result = $sql->fetchAll();
0
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
15.05.2023, 11:11  [ТС]
Цитата Сообщение от MadHatter Посмотреть сообщение
PHP
Добрый день! Вчера сделал как смог поиск по базе и вывод таблицы по кнопке. Сильно не ругайте за пробный вариант.
Не подскажите почему выводит в таблице искомый результат когда нажал кнопку Поиск?
Code
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<form  class="searchinput" method="post" >
            <p><input  type="text" name="search" id="search"> <input type="submit" value="Поиск"></p>
    </form>
</div>  
<?php
                $sql = pdo()->prepare("SELECT * FROM `details`");
                $sql->execute();
                $result = $sql->fetchAll();
                if( isset( $_POST['search'] ) )
                {
                $sql = pdo()->prepare("SELECT * FROM `details` WHERE `articul` = :search");
                $sql->execute(['search' => $_POST['search']]);
                $result = $sql->fetchAll();
                if($sql->rowCount()==0){
                $sql = pdo()->prepare("SELECT * FROM `details`");
                $sql->execute();
                $result = $sql->fetchAll();    
                flash('Деталь не найдена!');
                }
  
    }
   ?>
<table class="tablekassa">
        <tr>
          <th>№</th>
          <th>Артикул</th>
          <th>Производитель</th>
          <th>Название</th>
          <th>Кол-во</th>
          <th>Цена</th>
          <th>Партия</th>
          <th>Магазин</th>
          <th style="background:red">Стеллаж №</th>
          <th style="background:red">Полка №</th>
          <th style="background:red">Коробка №</th>
          <th>Состояние</th>
          <th>Комментарий</th>
          <th></th>
           
        </tr>
            <?php foreach ($result as $value) { ?>
        <tr>
            <td><?=$value['id'] ?></td>
            <td><?=$value['articul'] ?></td>
            <td><?=$value['manufacturer'] ?></td>
            <td><?=$value['detail'] ?></td>
            <td><?=$value['quantity'] ?></td>
            <td><?=$value['price'] ?></td>
            <td><?=$value['partiya'] ?></td>
            <td><?=$value['stellazh'] ?></td>
            <td><?=$value['magazine'] ?></td>
            <td><?=$value['polka'] ?></td>
            <td><?=$value['korobka'] ?></td>
            <td><?=$value['sostoyanie'] ?>
            <td><?=$value['comment'] ?></td>
            <td><table class="t1"><tr><td>
 <form  action='delete.php' method='post'>
<input type='hidden' name='prodano' value=<?=$value['id']?>>
<input type='submit' value='Продать' style="background:#32a842; color:white; border-radius:5px; border: 1px solid #32a842">
</form>
 </td><td>
<form  action='delete.php' method='post'>
<input type='hidden' name='delete' value=<?=$value['id']?>>
<input type='submit' value='Х' style="background:red; color:white; border-radius:5px; border: 1px solid red">
</form>
 
</table>
<?php
foreach($_POST AS $k => $v)
{
    echo $k.' => '.$v.'<br>';
}
?>
</td></tr> <?php } ?>
    </table>        
            
</div>
   <? flash()?>
Может надо было использовать
Code
1
<form action="<?= $_SERVER['SCRIPT_NAME'] ?>">
Миниатюры
Поиск и вывод из базы данных  
0
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
15.05.2023, 11:20  [ТС]
Цитата Сообщение от MadHatter Посмотреть сообщение
if(!empty($_POST['search'])){
    $sql =  ' WHERE `articul` = :search';
    $execute = ['search' => $_POST['search']];
}
ваше условие правильное . У меня не правильное. Но вот почему выводит в строку текст запроса непонятно. Может потому что все в одной странице делаю а не в отдельном файле методом POST
Всетаки условие у меня правильное. Если количество строк в базе 0 то таблица отображается также полная и снизу надпись что деталь не найдена.
0
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
15.05.2023, 12:47
Возможно дело в этом куске кода?
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
foreach($_POST AS $k => $v)
{
    echo $k.' => '.$v.'<br>';
}
?>
</td></tr> <?php } ?>
    </table>        
            
</div>
   <? flash()?>
0
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
15.05.2023, 12:52  [ТС]
Цитата Сообщение от MadHatter Посмотреть сообщение
Возможно дело в этом куске кода?
в конце таблицы мне нужно две кнопки удалить запись и редактировать, но две кнопки submit как мне объяснили могут быть только в разных формах иначе они обе будут выполнять одно действие. Если они в разных формах то тогда они встают друг за другом. Поэтому мне подсказали такой код. Как тогда сделать ссылочный текст чтобы они были друг за другом и переходили на файл php c передачей параметра (переменной)? Читаю мануал вот сижу

Сначала они были типа такого
Code
1
2
3
4
<td>
<a href="?edit=<?=$value['id'] ?>" class="btn btn-success btn-sm"><i class="fa fa-edit"></i></a> 
<a href="?delete=<?=$value['id'] ?>" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
</td><
Но здесь ссылочный тип на модальное окно а мне надо ссылкой id передать в файл
Code
1
<a href="/delete.php=<?=$value['id'] ?>
так как-то
0
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
15.05.2023, 12:57
Я сейчас не про кнопки, а про цикл, который идет после кнопок. Думаю что он влияет на вывод кода после кнопок.
Конечно, две кнопки сабмит не могут быть в одной форме. То что вы сделали 2 формы это вполне нормально. Если хотите, можете сделать как-то так:
PHP/HTML
1
<a href="delete.php?id=".$value['id'].">X</a>
1
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
15.05.2023, 13:16  [ТС]
Цитата Сообщение от MadHatter Посмотреть сообщение
Если хотите, можете сделать как-то так:
Спасибо за помощь, буду пробовать!

Добавлено через 6 минут
Цитата Сообщение от MadHatter Посмотреть сообщение
<a href="delete.php?id=".$value['id'].">X</a>
сейчас я поставил
HTML5
1
2
<a href="delete.php?id=".$value['id'].">Продать</a>
<a href="delete.php?id=".$value['id'].">Удалить</a>
а в файле delete у меня уже код ля кнопок. А как мне теперь от разных ссылок получить переменную?
Сейчас так
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
<?php
require_once __DIR__.'/boot.php';
 
 
if(isset($_POST['delete']))
{
 
    $sql = "DELETE FROM details WHERE id=:id";
    $stmt = pdo()->prepare($sql);
    $stmt->bindValue(':id', $_POST['delete']);
    $stmt->execute();
    header("Location: Stock.php");
}
else if (isset($_POST['prodano'])) {
    $sql = "INSERT INTO prodano SELECT * FROM details WHERE id=:id";
    $stmt = pdo()->prepare($sql);
    $stmt->bindValue(':id', $_POST['prodano']);
    $stmt->execute();
    $sql = "DELETE FROM details WHERE id=:id";
    $stmt = pdo()->prepare($sql);
    $stmt->bindValue(':id', $_POST['prodano']);
    $stmt->execute();
    header("Location: Stock.php");
}
?>
Одна кнопка просто удаляет позицию из таблицы
Вторая сначала заносит эту строку в другую таблицу а потом удаляет из первой. Какбы перемещает строку в другую таблицу
0
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
15.05.2023, 13:35
вам лучше сделать другой файл, например sell.php. И в первую ссылку добавить этот файл. Чтобы не было путаницы и ненужных проверок. И не забывайте проверять имеет ли пользователь возможность сделать данное действие.
0
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
15.05.2023, 13:40  [ТС]
Цитата Сообщение от MadHatter Посмотреть сообщение
вам лучше сделать другой файл, например sell.php.
Вы имеете ввиду сделать две ссылки на два файла?
Цитата Сообщение от MadHatter Посмотреть сообщение
И не забывайте проверять имеет ли пользователь возможность сделать данное действие.
Это о том что надо делать POST запрос?
Вот один из примеров
HTML5
1
<a href='delete.php?id=".$row['id']."' id=".$row['id']."'>Delete</a></td>";
И получите значение id на delete.php, как показано ниже
PHP
1
$id = $_GET['id'];
Значит просто надо поменять GET на POST? или я не так понимаю о проверке действий пользователя? Или вы имеете ввиду?
HTML5
1
2
3
4
5
6
if (check_auth()) {
    $stmt = pdo()->prepare("SELECT * FROM `users` WHERE `id` = :id");
    $stmt->execute(['id' => $_SESSION['user_id']]);
    $user = $stmt->fetch(PDO::FETCH_ASSOC);
}
else header('Location: login.php');
0
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
15.05.2023, 13:52
Лучший ответ Сообщение было отмечено gena8208 как решение

Решение

Цитата Сообщение от gena8208 Посмотреть сообщение
Вы имеете ввиду сделать две ссылки на два файла?
Да
PHP/HTML
1
2
<a href="sell.php?id=".$value['id'].">Продать</a>
<a href="delete.php?id=".$value['id'].">Удалить</a>
Цитата Сообщение от gena8208 Посмотреть сообщение
Это о том что надо делать POST запрос?
Нет. Нужно обязательно проверять права пользователя. Например, если данные процедуры может проводить только администратор, то нужно проверить является ли текущий пользователь администратором. Например так:
PHP
1
2
3
if(!$_SESSION['isAdmin']){
    header('Location: error.php');
}
Это только одна из всех возможных проверок. Пост запрос так же легко подделать как и гет запрос.
1
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
15.05.2023, 14:38  [ТС]
Цитата Сообщение от MadHatter Посмотреть сообщение
Нет. Нужно обязательно проверять права пользователя.
У меня допущено 3 человека кк данному журналу, заранее зарегистрированных , имеющих логин и пароль
HTML5
1
2
3
4
5
6
if (check_auth()) {
    $stmt = pdo()->prepare("SELECT * FROM `users` WHERE `id` = :id");
    $stmt->execute(['id' => $_SESSION['user_id']]);
    $user = $stmt->fetch(PDO::FETCH_ASSOC);
}
else header('Location: login.php');
данной проверки я думаю будет достаточно?
И на этом сайте просто список Б/У деталей хранящихся на складе. Я думаю он хакерам не нужен))). Это просто мой первый проект с совместным доступом из разных магазинов к списку. Раньше я делал на ASPX но потом reg.ru сказал что windows сервера прикрыли. Так что MSSQL скоро будут недоступны. Спасибо за помощь. Надеюсь доделаю ))

Добавлено через 38 минут
Цитата Сообщение от MadHatter Посмотреть сообщение
<a href="delete.php?id=".$value['id'].">Удалить</a>
сделал
в файле delete написал
PHP
1
2
3
4
5
6
7
8
9
10
<?php
require_once __DIR__.'/boot.php';
$id = $_GET['id'];
echo $id;
    $sql = "DELETE FROM details WHERE id=:id";
    $stmt = pdo()->prepare($sql);
    $stmt->bindValue(':id', $id);
    $stmt->execute();
    header("Location: Stocktable.php");
?>
id не передается наверное потому что echo $id; не выдает ни чего на экран
0
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
15.05.2023, 15:50
Цитата Сообщение от gena8208 Посмотреть сообщение
Это просто мой первый проект
Ну я вам эту информацию даю к размышлению. Я ведь не знаю что у вас за проект. Просто имейте ввиду необходимость этих проверок.
Цитата Сообщение от gena8208 Посмотреть сообщение
id не передается наверное потому что echo $id; не выдает ни чего на экран
Ну попробуйте удалить эту строку. А так то конечно. Функция header() сработает только если у вас еще не было никакого вывода на экран.

Добавлено через 1 минуту
Что означает предупреждение "headers already sent"
0
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
15.05.2023, 15:56  [ТС]
Цитата Сообщение от MadHatter Посмотреть сообщение
Ну попробуйте удалить эту строку. А так то конечно. Функция header() сработает только если у вас еще не было никакого вывода на экран.
HTML5
1
 <a href="delete.php?id=".$value['id'].">Удалить</a>
PHP
1
2
3
4
5
6
7
require_once __DIR__.'/boot.php';
$id = $_GET['id'];
    $sql = "DELETE FROM details WHERE id=:id";
    $stmt = pdo()->prepare($sql);
    $stmt->bindValue(':id', $id);
    $stmt->execute();
    header("Location: Stocktable.php");
При нажатии ни чего не происходит. Просто обновляется страница
0
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
15.05.2023, 16:10
Ну так сказать сложно. Вроде в запросе проблем не видно. Нужно смотреть какой id передается, соответствует ли он тому что в базе, проверить результат удаления.
0
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
15.05.2023, 16:32  [ТС]
Цитата Сообщение от MadHatter Посмотреть сообщение
Нужно смотреть какой id передается
$id = $_GET['id'];
$sql = "DELETE FROM details WHERE id=:id";
$stmt = pdo()->prepare($sql);
$stmt->bindValue(':id', $id);
$stmt->execute();
echo $id;
?>
Пустой экран. Значит id вообще не передается
0
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
15.05.2023, 17:00
Скорее всего.
0
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
15.05.2023, 17:14  [ТС]
Цитата Сообщение от MadHatter Посмотреть сообщение
Ну так сказать сложно. Вроде в запросе проблем не видно.
PHP
1
2
3
4
5
6
7
8
9
<?php
require_once __DIR__.'/boot.php';
$id = $_GET['id'];
$sql = "DELETE FROM details WHERE id=:id";
$stmt = pdo()->prepare($sql);
$stmt->bindValue(':id', $id);
$stmt->execute();
header("Location: Stocktable.php");
?>
ТАК БЫЛО
HTML5
1
<a href="delete.php?id=".$value['id'].">Удалить</a>
А ТАК НАДО.
HTML5
1
<a href="delete.php?id=<?=$value['id']?>">Удалить</a>
Как только сделал строку в таком виде, то сразу при наведении отображалось id
УРА! Спасибо за помощь. По чуть чуть и проект скоро заработает. Удаление сделал
0
165 / 150 / 58
Регистрация: 15.06.2013
Сообщений: 1,107
15.05.2023, 20:02
А, ну да, точно, так правильно. Не за что. Хорошо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.05.2023, 20:02
Помогаю со студенческими работами здесь

поиск и вывод на странице из локальной базы данных
Доброго времени суток! Пишу диплом и столкнулся с такой проблемой. На сайте под Joomla хочу организовать поиск по авторам из моей базы...

Не получается осуществить вывод данных товаров из базы данных через цикл for
Изначально код принимал следующий вид &lt;!-- letest product section --&gt; &lt;section class=&quot;top-letest-product-section&quot;&gt; ...

Xamarin android C#. Вывод данных из таблицы базы данных phpMyAdmin
Добрый день. Не могу найти ответ на вопрос &quot;В какой элемент Xamarin.Android выводить данных из таблицы базы данных и как выводить?&quot;...

Вывод данных из базы данных MySQL в PHP в виде дерева.
У нас в сети решили сделать портал-базу по рефератам. Все я сделал остались две траблы, про первую я здесь и пишу. Итак, имеется база с...

Вывод данных из таблицы базы данных на View в проекте MVC
Добрый день! Дано: SQL-база с таблицами, &quot;начинающийся&quot; проект на VS по типу MVC. Необходимо вывести все данные из таблицы базы данных на...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru