Как создать многомерный массив для моего списка воспроизведения?

#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()
Удачи 🙂