#php #html #mysql #database #forms
#php #HTML #mysql #База данных #формы
Вопрос:
Я много пытался перенести все данные моей базы данных на другую страницу PHP и в тег form, но у меня не получилось этого сделать Я легко отображаю все данные в теге option, но я не могу отправить их в тег action в теге form вот код.
<?php require "pages/header.php" ?>
<?php
//sesssion_start();
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "apple";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
#include "navbar.php";
$sql = "SELECT * FROM `table_3`";
$result = $conn->query($sql);
?>
<link rel="canonical" href="https://getbootstrap.com/docs/4.3/examples/sign-in/">
<!-- Bootstrap core CSS -->
<link href="https://getbootstrap.com/docs/4.3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<link href="https://getbootstrap.com/docs/4.3/examples/sign-in/signin.css" rel="stylesheet">
<select id="role" name="role" class="form-signin" class="form-control">
<?php
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
#echo $row['model'];
#echo "<option value="'.$row["model"].'">";
#echo "<option value='".$row["model"]."' href='".$row["model"]."'>";
# echo "<a href='".$row["model"]."'>";
#echo $row['model'];
#echo "</a>";
# echo "</option>";?>
<form action="repaired.php?<?php $row['model'] ?> enctype=multipart/formdata">
<select id="role" name="role" class="form-signin" class="form-control">
<option value='<?php $row['model'] ?>' href='<?php $row['model'] ?>'>
</option>
</select>
</form>
<?php
}
} else {
echo "0 results";
}
#$conn->close();
?>
</select>
Комментарии:
1. Во-первых, вы используете form внутри вашего тега select, что совершенно неправильно, во-вторых, нет способа отправить вашу форму, поэтому вы не можете опубликовать свои данные на другой странице php
2. Итак, вы пытаетесь передать данные с текущей страницы на
repaired.php
? Вы получаете какую-то ошибку, когда пытаетесь это сделать? Кроме того, посмотрите комментарий @MuhammadShareyar — Ваша разметка повсюду. Ваш<link>
должен быть в вашей<head>
части, и<select>
элемент ПЕРЕД вашимwhile
циклом тоже очень неуместен
Ответ №1:
Мне не совсем ясно, в чем конкретно заключается ваша проблема. Кажется, вы пытаетесь передать данные с текущей страницы (кодом которой вы поделились) repaired.php
.
Поскольку опубликованный вами код (извините меня за прямоту) представляет собой беспорядок, я попытаюсь добавить к нему некоторую структуру (я, очевидно, не собираюсь его очень тщательно очищать, хотя, это будет ваша работа).
Во-первых, все ваши <link>
теги должны быть где-то внутри вашей <head>
части… Я бы предположил, что на вашем веб-сайте это было бы в header.php
pages/header.php
<!doctype html>
<html>
<head>
<title>Your App</title>
<!-- Place your <link> elements here -->
<link rel="canonical" href="https://getbootstrap.com/docs/4.3/examples/sign-in/">
<link href="https://getbootstrap.com/docs/4.3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<link href="https://getbootstrap.com/docs/4.3/examples/sign-in/signin.css" rel="stylesheet">
</head>
<body>
<!-- Body part begins here
Place for header elements and navigation here, I guess -->
Затем файл, к которому вы подключаетесь, и пытаетесь отправить его через вашу форму, я просто вызываю его action.php здесь. Поскольку я не знаю, что должно отображаться в вашем <option>
элементе, я просто использовал то же самое, что и для value
атрибута. Обратите внимание, там, где находится while
цикл, он находится ВНУТРИ вашего <select>
элемента (который сам находится ВНУТРИ вашего <form>
элемента), поскольку вам нужен только ОДИН из них. Однако у вас будет несколько <option>
элементов, так что это те, которые находятся внутри вашего цикла. Кроме того, я разместил кнопку отправки в конце формы, которая позволит нам отправить форму.
action.php
<?php
include "pages/header.php";
// Database variables and connection
// ...
// Data fetching and displaying
$sql = "SELECT * FROM `table_3`";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo '<form action="repaired.php" method="post">';
echo ' <select id="role" name="role" class="form-signin" class="form-control">';
while ($row = $result->fetch_assoc()) {
echo ' <option value="' . $row['model'] . '">' . $row['model'] . '</option>';
}
echo ' </select>';
echo ' <button type="submit" name="form_send">Send</button>';
echo '</form>';
} else {
echo 'No data found';
}
Теперь в вашем repaired.php
файле вам, очевидно, нужно извлечь размещенные данные. Поскольку я не знаю, что вы хотите сделать со своими данными, я могу просто опубликовать идею того, что вы могли бы сделать. Если вы отправляете форму с помощью post
метода (см. Код выше, method="post"
), вы можете получить доступ к данным вашей формы с помощью $_POST
суперглобального. Это массив, в котором хранятся ваши опубликованные данные… name
Атрибут ваших элементов формы будет ключом для доступа к вашим данным. Итак, если я размещаю форму с одним вводом, и у ввода есть атрибут name="first_name"
, я могу получить доступ к его значению с помощью $_POST['first_name']
на целевой странице ( action
вашего <form>
атрибута). В вашем случае у нас есть <select>
with name="role"
, поэтому вы должны иметь к нему доступ, как описано:
repaired.php
<?php
/*
First we check, if the submit button was pressed... If not,
we echo an error message, if yes, we can proceed to access the posted data
*/
if (!isset($_POST['form_send'])) {
echo 'No data submitted';
} else {
echo $_POST['role'];
}
Мой ответ, если он даже решает вашу проблему, далек от совершенства и не протестирован, поэтому я не знаю, есть ли в нем какие-либо ошибки. Я предлагаю вам продолжать практиковаться и расширять свои знания. Очень хорошая идея — научиться отделять ваш логический код от вашей разметки. Я рекомендую вам ознакомиться с MVC или MOVE или другими архитектурными шаблонами, или, если вы хотите сначала пойти более простым путем, ознакомьтесь с движками шаблонов (такими как Twig). Кроме того, я предлагаю вам расширить свои знания по основам HTML (ИМХО, MDN — хорошее место для этого), поскольку мне кажется, что вы еще не совсем освоили их, судя по тому, как вы структурировали свои <form>
части.
Я все еще надеюсь, что мой ответ помог вам вернуться на правильный путь