Хранение нескольких данных флажка в базе данных MySQL с помощью PHP

Я хочу, чтобы несколько значений флажка сохранялись в одном поле в базе данных. (Пример 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 .

Таким образом, то, как вы их храните, зависит от вас. Взгляните взорваться, чтобы разделить их, когда они хранятся таким образом.