Я хочу, чтобы несколько значений флажка сохранялись в одном поле в базе данных. (Пример 1, 24, 56, 100). Я хочу знать, как я могу это сделать, и как PHP читает эти значения из базы данных, если я хочу вызвать переменные в запросе?
В основном я создаю приложение для блога (для удовольствия и опыта), и я хочу, чтобы пользователь мог изменить видимость каждого сообщения в блоге с помощью флажков. Я знаю, что вы, вероятно, думаете, почему у меня нет поля видимости для каждого сообщения в блоге. Я понимаю, почему это не рекомендуется делать, но я не могу придумать другого способа сделать это. Чтобы объяснить немного больше: я хочу приложить это приложение к CMS, который я уже создал, и в основном у меня есть таблица с сообщениями в блоге, а затем я хочу, чтобы пользователь мог перейти на разные страницы на своем сайте и добавить блог. Ну, что, если пользователь хочет использовать один и тот же блог на трех разных страницах, но только хочет, чтобы на каждой странице показывались определенные сообщения. Вот почему я сейчас запутался.
Несмотря на то, что я не сторонник сохранения данных, но вот что вы можете сделать, если вы действительно хотите это сделать. Я предлагаю вам иметь денормализованную таблицу и хранить ваши валы там
в вашем HTML вы можете иметь свои флажки, подобные этому (учитывая, что вы сохраняете идентификаторы какого-то типа)
<input type="checkbox" name="ids[]" value"1" /> <input type="checkbox" name="ids[]" value"24" /> <input type="checkbox" name="ids[]" value"56" /> <input type="checkbox" name="ids[]" value"100" />
На стороне php вы можете использовать функцию implode для формирования идентификаторов в строку, как показано ниже (учитывая, что вы выполняете POST)
$ids = implode(",",$_POST["ids"]);
Где вы читаете из базы данных, вы можете преобразовать значение из db в массив, подобный этому
$ids_array = explode(",",$row->ids);
надеюсь, это поможет
сначала создать базу данных:
create table employee(id int(10) not null, name varchar(20), hobbie varchar(20), worked varchar(20), primary key(id));
после этого создайте такую страницу html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1 /DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <body background="blue"> <form action="check.php" method="post"> Name: <input name="Name" type="text" id="Name" /><br /> <br /> <br /> Which you do you want to likes?<br /> <input type="checkbox" name="Hobbies[]" value="Books" />Books<br /> <input type="checkbox" name="Hobbies[]" value="Movies" />Movies<br /> <input type="checkbox" name="Hobbies[]" value="Sports" />Sports<br /> <input type="checkbox" name="Hobbies[]" value="Games" />Games<br /> <input type="checkbox" name="Hobbies[]" value="Travelling" />Travelling<br /> worked: <input name="Worked" type="text" id="Worked" /><br /> <br /> <input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="reset" /> </form> </body> </html>
после этого у нас есть mysql connect.php
<?php $server="localhost"; $user="root"; $password=""; $database="empcheckbox"; $link=mysql_connect($server,$user,$password) or die("the connection is terminated please check me!".mysql_error()); mysql_select_db($database,$link); ?>
после этого мы должны создать check.php, как это нормально
<?php if(isset($_POST['submit'])) { $name=mysql_real_escape_string($_POST['Name']); $worked=mysql_real_escape_string($_POST['Worked']); $hobb= $_POST['Hobbies']; if(empty($hobb)) { echo("<p>You didn't select any any hobby.</p>\n"); } else { $N = count($hobb); echo("<p>You selected $N Hobbies(s): "); for($i=0; $i < $N; $i++) { $var1=$hobb[$i]; include ('connect.php'); $table = "INSERT INTO employee (name, hobbies, worked) ". "VALUES ('$name', '$var1', '$worked')"; mysql_query($table) or die(mysql_error()); $inserted_fid = mysql_insert_id(); mysql_close(); } echo "successfully uploaded!.."; } } else { echo "error please check ur code"; }
Идеальное решение для этого – задача создания нормализованной таблицы, прокомментированной @OMG и @Michael.
Но вот ответ за то, что вы только что спросили
$ids = implode(", ", $_POST['ids']);
Храните это в таблице MySQL. Вы можете использовать команду LIKE для запроса таблицы и использования разрыва для возврата идентификаторов в массив.
$query = "SELECT * FROM <table> WHERE ids LIKE '%,2, %'"; // get posts having id 2 $id = explode(", ", $result->ids);
Вы захотите ознакомиться с основами PHP и MySQL.
Проверьте tizag.com или w3schools.com, или на некоторых других сайтах (уроки в изобилии).
Вот основные сведения – и помните об этом, так как это поможет вам в вашем понимании.
MySQL – это база данных. База данных обычно используется для хранения данных. PHP – это язык программирования. Он обычно используется для программирования.
Итак, некоторые замечательные разработчики уже позаботились о том, чтобы заговорить с базой данных с PHP. Все, что вам нужно сделать, это установить соединение.
<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } else { echo "Connection made"; } ?>
См. Mysql_connect через W3Schools
Итак, что вы здесь сделали, вы подключились к базе данных SERVER. Вы еще не выбрали базу данных. Подумайте об этом, как в кинотеатре, вам все равно нужно выбрать фильм для просмотра.
Итак, теперь мы подключаемся к нашей базе данных:
mysql_select_db("my_db", $con); //Notice we're using our connection, "$con"
См. Mysql_select_db через W3Schools
После того, как вы подключились к своей базе данных, вы готовы получить от нее некоторую информацию.
Для этого вам нужно создать свой SQL-запрос.
Что-то под мелодию:
$sql = "SELECT article_id FROM user_view_blog_posts WHERE user_id = '$user_id'";
См. Инструкцию SELECT через W3Schools
В зависимости от того, как настроена ваша таблица, вы получите список для текущего пользователя. Я предполагаю, что у вас уже есть идентификатор пользователя (или способ его получения), поскольку они имеют возможность определять свои собственные настройки для сайта.
Теперь, когда у вас есть запрос SQL для получения статей, вам нужно запросить базу данных.
$result = mysql_query($sql); // Now, get the data while($row = mysql_fetch_array($result)) { $articles[] = $row['article_id']; }
Это должно дать вам список идентификаторов, которые вам нужны.
Я дам вам понять остальное. Это довольно прямолинейно, и у вас есть все инструменты, которые вам нужны сейчас. Единственное, что вы, возможно, захотите освежить, – это explode
и foreach
.
Таким образом, то, как вы их храните, зависит от вас. Взгляните взорваться, чтобы разделить их, когда они хранятся таким образом.