#php #mysql
#php #mysql
Вопрос:
Я хочу создать раздел плейлиста для сайта текстов песен.
Для создания списка композиций, является ли многомерный массив лучшим способом ввода? У меня есть два входных данных в моем MD-массиве, которые соответствуют песне, а другой — исполнителю. Я могу динамически создавать текстовое поле с помощью JS. Пожалуйста, помогите мне создать MD-массив и ввести данные в БД с помощью цикла. Пожалуйста, предоставьте основную идею вместе с кодом, который я изменю позже.
Tracks | Artist
_____________________
A | ar1
B | ar2
C | ar3
хочу, чтобы этот тип входных данных заполнял базу данных.
Комментарии:
1. таким образом данные сохраняются в вашей базе данных? в двух столбцах
2. Да, это формат.. Я имею в виду два столбца таблицы, в которые я буду вводить данные с помощью MD-array.
Ответ №1:
В PHP нет многомерных массивов, но есть вложенные массивы. они имитируют размеры. существуют также объекты, в которых вы можете хранить наборы данных. итак, вы должны использовать массивы или объекты =)
в вашем массиве могут быть ваши данные во многих формах. например, для
$myarray = array(0=>array('artist'=>'someone','tracks'=>array(tracks...)),
1=>array(...));
Комментарии:
1. Это способы, которые я уже нашел в Google для создания массива, пожалуйста, предоставьте код с правильным способом, который использует цикл и т.д.
2. @Aditii ответа @Headshota должно быть достаточно в качестве начального шага, люди здесь не для того, чтобы писать код для вас, а для того, чтобы помочь вам.
3. Я просто хочу подсказку, чтобы продолжить кодирование.
Ответ №2:
Вот базовый класс, который вы можете использовать для использования результата, возвращаемого вашей базой данных, в виде массива объектов.
<?php
/*
* Default database class, stores connections and queries
* and all does db interaction
*/
class Database {
private static $connection;
private static $current_query;
function __construct() {
// do something
}
public static function open_connection() {
$db_server = 'localhost';
$db_user = 'db_user';
$db_pass = 'db_pass';
$db_name = 'db_name';
$connection = mysql_connect($db_server,$db_user,$db_pass);
if (!$connection){
// throw error
die ("Connection to database failed: ". mysql_error() ." $db_server,$db_user,$db_pass"); // debug
}
$db_select = mysql_select_db($db_name,$connection);
if (!$db_select){
// throw some error
//die("Database selection Failed: " .mysql_error());
}
self::$connection = $connection;
}
public static function close_connection() {
if (isset(self::$connection)){
mysql_close(self::$connection);
unset(self::$connection);
}
}
public function query($sql) {
if (!self::$connection){
self::open_connection();
}
self::$current_query = $sql;
try {
$result = mysql_query($sql,self::$connection);
} catch (Exception $e) {
self::close_connection();
// throw custom error
// The query failed for some reason. here is query :: self::$current_query
}
return $result;
}
private static function instantiate($record) {
$obj = new self;
foreach ($record as $k =>$value){
$obj->$k = $value;
}
return $obj;
}
public static function find_by_sql($sql){
if (!is_string($sql))
return false;
$result_set = self::query($sql);
$obj_arr = array();
while ($row = self::fetch_array($result_set))
{
$obj_arr[] = self::instantiate($row);
}
return $obj_arr;
}
}
теперь для доступа к вашим данным
$playlist = Database::find_by_sql("SELECT * FROM `playlist`");
// loop through your result
foreach($playlist as $play){
echo "<p>$play->tracks : $play->artist</p>";
}
Чтобы вам было проще взаимодействовать с вашим набором результатов, возможно, вам следует изучить методы find_by_sql() и instantiate()
Удачи 🙂