diff options
author | chai <chaifix@163.com> | 2022-03-22 20:42:48 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2022-03-22 20:42:48 +0800 |
commit | f980b021f1f1df132c4599cb4c1fb127a1ae289a (patch) | |
tree | 55c1cf92b0465e238a5ce99d73e883d860d5ab80 | |
parent | 627b8e416d138112ad20b1299aca21dccebcd11c (diff) |
+ album
-rw-r--r-- | admin.php | 4 | ||||
-rw-r--r-- | admin_add_album.php | 64 | ||||
-rw-r--r-- | admin_albums.php | 51 | ||||
-rw-r--r-- | admin_header.php | 4 | ||||
-rw-r--r-- | admin_modify_music.php | 78 | ||||
-rw-r--r-- | admin_new_album.php | 21 | ||||
-rw-r--r-- | admin_new_music.php | 5 | ||||
-rw-r--r-- | admin_paginate.php | 2 | ||||
-rw-r--r-- | admin_tags.php | 57 | ||||
-rw-r--r-- | admin_template.php | 14 | ||||
-rw-r--r-- | admin_uber.php (renamed from uber.php) | 4 | ||||
-rw-r--r-- | cover/1647698450_764_15683538526.jpg | bin | 0 -> 8794 bytes | |||
-rw-r--r-- | music.php | 129 | ||||
-rw-r--r-- | music/1647697408_705_Erika.mp3 | bin | 0 -> 2013165 bytes | |||
-rw-r--r-- | music/1647698175_317_Erika.mp3 | bin | 0 -> 2013165 bytes | |||
-rw-r--r-- | music/1647698450_399_Erika.mp3 | bin | 0 -> 2013165 bytes | |||
-rw-r--r-- | res/admin.css | 44 | ||||
-rw-r--r-- | res/dachai.png | bin | 320027 -> 6793 bytes | |||
-rw-r--r-- | res/pause_cover.png | bin | 539 -> 539 bytes | |||
-rw-r--r-- | res/play_cover.png | bin | 749 -> 757 bytes | |||
-rw-r--r-- | res/styles.css | 2 | ||||
-rw-r--r-- | sql/musik.sql | 74 | ||||
-rw-r--r-- | template.php | 6 | ||||
-rw-r--r-- | utils.php | 4 |
24 files changed, 549 insertions, 14 deletions
@@ -48,9 +48,9 @@ form .text { <a href="admin_music.php">Music</a> - <a href="admin_add_music.php">Albums</a> + <a href="admin_albums.php">Albums</a> - <a href="admin_add_music.php">Tags</a> + <a href="admin_tags.php">Tags</a> <div> diff --git a/admin_add_album.php b/admin_add_album.php new file mode 100644 index 0000000..022ba27 --- /dev/null +++ b/admin_add_album.php @@ -0,0 +1,64 @@ +<html> + +<head> +<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, target-densityDpi=device-dpi"> +<style type="text/css"> +#container { + margin:0 auto; + max-width: 500px; +} +form .title { + display:block; + font-size:0.8em; + margin-bottom: 3px; +} +form .section{ + margin-bottom: 10px; + padding: 5px; + background: #efefef; +} +form .text { + width: 100%; +} +</style> + +</head> + +<body> + <div id="container"> + +<?php require_once 'utils.php';?> +<?php require_once 'config.php';?> +<?php require_once 'music.php';?> + +<?php + require_once('checkadmin.php'); +?> + +<h1 style="font-size:1.2em;display:block;color:#c5c5c5;" >Add Album</h1> + + <form action="admin_new_album.php" method="post" enctype="multipart/form-data"> + <div class="section"> + <label class="title" for="title" >title:</label> + <input class="text" type="text" name="title" /><br/> + </div> + <div class="section"> + <label class="title" for="description" >description:</label> + <input class="text" type="text" name="description" /><br/> + </div> + <div class="section"> + <label class="title" for="coverImage" >cover:</label> + <input type="file" name="coverImage"/> + </div> + <div class="section"> + <label class="title" for="music_list" >music ids (seprate with comma):</label> + <input class="text" type="text" name="music_list" /><br/> + </div> + <input style="float:right" type="submit" value="Add Album" name="submit"/> + </form> + + <div> + +</body> + +</html>
\ No newline at end of file diff --git a/admin_albums.php b/admin_albums.php new file mode 100644 index 0000000..8858f76 --- /dev/null +++ b/admin_albums.php @@ -0,0 +1,51 @@ +<html> + +<head> +<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, target-densityDpi=device-dpi"> +<style type="text/css"> +#container { + margin:0 auto; + max-width: 500px; +} +form .title { + display:block; + font-size:0.8em; + margin-bottom: 3px; +} +form .section{ + margin-bottom: 10px; + padding: 5px; + background: #efefef; +} +form .text { + width: 100%; +} +</style> + +</head> + +<body> + <div id="container"> + + <?php require_once 'utils.php';?> + <?php require_once 'config.php';?> + <?php require_once 'music.php';?> + <?php require_once 'admin_config.php';?> + <?php require_once 'admin_template.php';?> + + <?php + require_once('checkadmin.php'); + ?> + + <div style="height:auto;"> + <label class="admin-h1">Albums</label> + <a id="add-music-link" href="admin_add_album.php">+ new album</a> + <div style="clear:both;"></div> + </div> + + <?php require_once 'admin_paginate.php';?> + + <div> + +</body> +</html>
\ No newline at end of file diff --git a/admin_header.php b/admin_header.php index d877ef3..9cd27bd 100644 --- a/admin_header.php +++ b/admin_header.php @@ -26,8 +26,8 @@ <a href="index.php">Site</a> <a href="admin.php" style="float:left;">Main</a> <a href="admin_music.php" style="float:left;">Music</a> - <a href="admin.php" style="float:left;">Albums</a> - <a href="admin.php" style="float:left;">Tags</a> + <a href="admin_albums.php" style="float:left;">Albums</a> + <a href="admin_tags.php" style="float:left;">Tags</a> <div style="clear:both"></div> </div> diff --git a/admin_modify_music.php b/admin_modify_music.php new file mode 100644 index 0000000..141db72 --- /dev/null +++ b/admin_modify_music.php @@ -0,0 +1,78 @@ +<html> + +<head> +<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, target-densityDpi=device-dpi"> +<style type="text/css"> +#container { + margin:0 auto; + max-width: 500px; +} +form .title { + display:block; + font-size:0.8em; + margin-bottom: 3px; +} +form .section{ + margin-bottom: 10px; + padding: 5px; + background: #efefef; +} +form .text { + width: 100%; +} +</style> + +</head> + +<body> + <div id="container"> + +<?php require_once 'utils.php';?> +<?php require_once 'config.php';?> +<?php require_once 'music.php';?> + +<?php + require_once('checkadmin.php'); +?> + +<?php + $music_id = $_GET['mid']; + $music = fetch_music_by_id($music_id); +?> + +<h1 style="font-size:1.2em;display:block;color:#c5c5c5;" >Music (Id<?php echo $music->uid;?>)</h1> + +<form action="admin_new_music.php" method="post" enctype="multipart/form-data"> + <input type="hidden" name="mid" value="<?php echo $music->uid;?>"/> + <div class="section"> + <label class="title" for="musicFile" >file:</label> + <input type="file" name="musicFile"/> + </div> + <div class="section"> + <label class="title" for="coverImage" >cover:</label> + <input type="file" name="coverImage"/> + </div> + <div class="section"> + <label class="title" for="musicProj" >project:</label> + <input type="file" name="musicProj"/> + </div> + <div class="section"> + <label class="title" for="title" >title:</label> + <input class="text" type="text" name="title" value="<?php echo $music->title; ?>"/><br/> + </div> + <div class="section"> + <label class="title" for="tags" >tags (seprate with comma):</label> + <input class="text" type="text" name="tags" value="<?php echo get_music_tag_string($music); ?>"/><br/> + </div> + <div class="section"> + <label class="title" for="albums" >albums id (seprate with comma):</label> + <input class="text" type="text" name="albums" value="<?php echo get_music_albums_id_string($music);?>"/><br/> + </div> + <input style="float:right" type="submit" value="Update" name="submit"/> +</form> + + <div> + +</body> + +</html>
\ No newline at end of file diff --git a/admin_new_album.php b/admin_new_album.php new file mode 100644 index 0000000..aed04d6 --- /dev/null +++ b/admin_new_album.php @@ -0,0 +1,21 @@ +<?php require_once 'upload.php'; ?> +<?php require_once 'utils.php';?> +<?php require_once 'config.php';?> +<?php require_once 'music.php';?> + +<?php + +// 靠表单中是否有mid区分是否是修改 + +$album = get_album_from_post(); + +println($album); + +if($album != null) { + write_album_to_db($album); +} + +// 跳转 +//header('Location: '.'index.php'); + +?>
\ No newline at end of file diff --git a/admin_new_music.php b/admin_new_music.php index ceb761e..d084450 100644 --- a/admin_new_music.php +++ b/admin_new_music.php @@ -5,7 +5,12 @@ <?php +// 靠表单中是否有mid区分是否是修改 + $music = get_music_from_post(); + +println($music); + if($music != null) { write_music_to_db($music); } diff --git a/admin_paginate.php b/admin_paginate.php index 9d4f74c..cf1fa5e 100644 --- a/admin_paginate.php +++ b/admin_paginate.php @@ -1,4 +1,3 @@ - <div id="admin-paginate"> <?php @@ -19,7 +18,6 @@ } ?> - <div style="clear:both;"></div> </div>
\ No newline at end of file diff --git a/admin_tags.php b/admin_tags.php new file mode 100644 index 0000000..ce76dba --- /dev/null +++ b/admin_tags.php @@ -0,0 +1,57 @@ +<html> + +<head> +<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, target-densityDpi=device-dpi"> +<style type="text/css"> +#container { + margin:0 auto; + max-width: 500px; +} +form .title { + display:block; + font-size:0.8em; + margin-bottom: 3px; +} +form .section{ + margin-bottom: 10px; + padding: 5px; + background: #efefef; +} +form .text { + width: 100%; +} +</style> + +</head> + +<body> + <div id="container"> + + <?php require_once 'utils.php';?> + <?php require_once 'config.php';?> + <?php require_once 'music.php';?> + <?php require_once 'admin_config.php';?> + <?php require_once 'admin_template.php';?> + + <?php + require_once('checkadmin.php'); + ?> + + <div style="height:auto;"> + <label class="admin-h1">Tags</label> + <div style="clear:both;"></div> + </div> + + <?php + $arr = fetch_all_tags(); + if($arr != null && count($arr) > 0){ + foreach($arr as $tag){ + html_admin_tag($tag); + } + } + ?> + + <div> + +</body> +</html>
\ No newline at end of file diff --git a/admin_template.php b/admin_template.php index b745e44..efbd0bd 100644 --- a/admin_template.php +++ b/admin_template.php @@ -8,12 +8,22 @@ function html_admin_music($music) { echo '<img class="admin-music-cover" src="' . $music->cover . '"/>'; echo '<label class="admin-music-name">' . $music->title .'</label>'; echo '<label class="admin-music-id">' . $music->uid . '</label>'; - echo '<a class="admin-music-delete" href="./uber.php?op=DEL_MUSIC$mid='. $music->uid .'">Delete</a>'; - echo '<a class="admin-music-modify" href="./uber.php?op=MOD_MUSIC$mid=' . $music->uid . '">Modify</a>'; + echo '<a class="admin-music-delete" href="./admin_uber.php?op=DEL_MUSIC&mid='. $music->uid .'">Delete</a>'; + echo '<a class="admin-music-modify" href="./admin_modify_music.php?mid=' . $music->uid . '">Modify</a>'; echo '<div style="clear:both"></div>'; echo '</div>'; } +function html_admin_tag($tag) { + echo '<div id="admin_tags">'; + echo ' <div class="admin_tag">'; + echo ' <a class="admin-tag-name" href="./search.php?type=tag&value=' . $tag->uid . '">' . $tag->name . '</a>'; + echo ' <a class="admin-del-tag" href="./admin_uber.php?op=DEL_TAG&tid=' .$tag->uid. '">X</a>'; + echo ' <div style="clear:both"></div>'; + echo ' </div>'; + echo '</div>'; +} + function html_admin_paginate_link($url, $pagei) { echo '<a href="' . $url . '&p=' . $pagei . '">' . ($pagei + 1) . '</a>'; } diff --git a/uber.php b/admin_uber.php index fee329d..ac34286 100644 --- a/uber.php +++ b/admin_uber.php @@ -23,11 +23,11 @@ switch($op) { } function handle_delete_music($music_id){ - + delete_music($music_id); } function handle_delete_tag($tag_id) { - + delete_tag($tag_id); } function handle_delete_album($album_id) { diff --git a/cover/1647698450_764_15683538526.jpg b/cover/1647698450_764_15683538526.jpg Binary files differnew file mode 100644 index 0000000..b647dba --- /dev/null +++ b/cover/1647698450_764_15683538526.jpg @@ -2,6 +2,7 @@ require_once 'config.php'; require_once 'connect.php'; +require_once 'utils.php'; class Tag { @@ -13,6 +14,9 @@ class Album { public $uid; public $name; + public $cover; + public $description; + public $array_music_ids; // 包含的音乐id(考虑到效率,这里不存为music结构) } class Music @@ -296,6 +300,70 @@ function get_last_id() { } } +function delete_music($music_id) { + $sql = "DELETE FROM ". Config::$tb_music . " WHERE id=" . $music_id; + echo $sql; + execute_sql($sql); + $sql = "DELETE FROM " . Config::$tb_music_tag . " WHERE music_id=" . $music_id; + execute_sql($sql); + $sql = "DELETE FROM " . Config::$tb_album_music . " WHERE music_id=" . $music_id; + execute_sql($sql); + + redirect('admin_music.php'); +} + +function delete_tag($tag_id) { + $sql = "DELETE FROM " . Config::$tb_tags . " WHERE id=" . $tag_id; + execute_sql($sql); + $sql = "DELETE FROM " . Config::$tb_music_tag . " WHERE tag_id=" . $tag_id; + execute_sql($sql); + + redirect('admin_tags.php'); +} + +function delete_album($album_id) { + $sql = "DELETE FROM " . Config::$tb_album . " WHERE id=" . $album_id; + execute_sql($sql); + $sql = "DELETE FROM " . Config::$tb_album_music . " WHERE album_id=" . $album_id; + execute_sql($sql); + + redirect('admin_albums.php'); +} + +// 返回描述music tag的字符串 +function get_music_tag_string($music) { + if($music->array_tags == null || count($music->array_tags) == 0){ + return ""; + } + $tag_str = $music->array_tags[0]->name; + for($i = 1; $i < count($music->array_tags); $i++) { + $tag_str = $tag_str . ',' . $music->array_tags[$i]->name; + } + return $tag_str; +} + +// 返回描述music所属专辑的id字符串 +function get_music_albums_id_string($music) { + if($music->array_albums == null || count($music->array_albums) == 0){ + return ""; + } + $album_str = $music->array_albums[0]->uid; + for($i = 1; $i < count($music->array_albums); $i++) { + $album_str = $album_str . ',' . $music->array_albums[$i]->uid; + } + return $album_str; +} + +function delete_music_tag($music) { + $sql = "DELETE FROM " . Config::$tb_music_tag . " WHERE music_id=" . $music->uid; + execute_sql($sql); +} + +function delete_music_album($music) { + $sql = "DELETE FROM " . Config::$tb_album_music . " WHERE music_id=" . $music->uid; + execute_sql($sql); +} + // 提交上来的表单中构建music function get_music_from_post() { @@ -311,8 +379,9 @@ function get_music_from_post() return null; $music->path = $res_music[1]; } - else // 必须有音乐文件 + else // 必须有音乐文件 { + echo 'Music file is essential.'; return null; } @@ -361,6 +430,10 @@ function get_music_from_post() $music->uid = -1; // 未插入数据库 + if($_POST["mid"] != null) { + $music->uid = $_POST["mid"]; + } + //println($music); return $music; @@ -392,15 +465,67 @@ function write_music_to_db($music) { foreach($music->array_albums as $album){ add_unique_music_album($id, $album->uid); } - } else // 更新 { + $sql = "UPDATE " . Config::$tb_music . " SET " . + "path='" . $music->path ."'," . + "title='" . $music->title ."'," . + "cover='" . $music->cover ."'," . + "project='" . $music->project ."'" . + " WHERE id=" . $music->uid; + //println($sql); + execute_sql($sql); + + delete_music_tag($music); + delete_music_album($music); + $id = $music->uid; + foreach($music->array_tags as $tag){ + add_unique_music_tag($id, $tag->uid); + } + foreach($music->array_albums as $album){ + add_unique_music_album($id, $album->uid); + } } +} + +function get_album_from_post() { + $album = new Album; + + $cover_image = $_FILES["coverImage"]; + + if(is_upload_notempty($cover_image)) { + $res_cover = upload_file(Config::$cover_upload_dir, $cover_image); + if($res_cover[0] == 0) + return null; + $album->cover = $res_cover[1]; + } + + if($_POST["music_list"] != null && $_POST["music_list"] != "") + $music_ids = explode(',', $_POST["music_list"]); + + $album->array_music_ids = array(); + if($music_ids != null && count($music_ids) > 0) { + foreach($music_ids as $music_id){ + array_push($album->array_music_ids, $music_id); + } + } + + $album->title = html_escape_string($_POST["title"]); + $album->description = html_escape_string($_POST["description"]); + + $album->uid = -1; // 未插入数据库 + + if($_POST["aid"] != null) { + $album->uid = $_POST["aid"]; + } + + // println($album); + return $album; } ?>
\ No newline at end of file diff --git a/music/1647697408_705_Erika.mp3 b/music/1647697408_705_Erika.mp3 Binary files differnew file mode 100644 index 0000000..e893114 --- /dev/null +++ b/music/1647697408_705_Erika.mp3 diff --git a/music/1647698175_317_Erika.mp3 b/music/1647698175_317_Erika.mp3 Binary files differnew file mode 100644 index 0000000..e893114 --- /dev/null +++ b/music/1647698175_317_Erika.mp3 diff --git a/music/1647698450_399_Erika.mp3 b/music/1647698450_399_Erika.mp3 Binary files differnew file mode 100644 index 0000000..e893114 --- /dev/null +++ b/music/1647698450_399_Erika.mp3 diff --git a/res/admin.css b/res/admin.css index beca966..d185acf 100644 --- a/res/admin.css +++ b/res/admin.css @@ -111,6 +111,7 @@ body{ width: 100%; position: absolute; bottom: 0; + left: 0; } #admin-paginate a { @@ -122,7 +123,7 @@ body{ text-align: center; line-height: 30px; float:left; - margin-right: 5px; + /*margin-right: 5px;*/ } #admin-paginate a:hover{ @@ -139,3 +140,44 @@ body{ display: block; } +#admin_tags{ + margin: 10px 0; +} + +.admin_tag { + display:inline-block; + height: 20px; + padding: 2px 5px; + box-sizing: border-box; + background: rgb(219, 219, 219); + border: 0px solid; + border-radius: 4px; + float:left; + margin-right: 10px; +} + +.admin_tag:hover { + background-color: black; + color:white; +} + +.admin_tag:hover a{ + color:white; +} + +.admin_tag a { + font-size: 12px; + text-decoration: none; + display: block; + float: left; +} + +.admin-tag-name{ + color:black; +} + +.admin-del-tag { + margin-left: 10px; + color:red; + font-weight: bold; +} diff --git a/res/dachai.png b/res/dachai.png Binary files differindex d30f86d..1db55b9 100644 --- a/res/dachai.png +++ b/res/dachai.png diff --git a/res/pause_cover.png b/res/pause_cover.png Binary files differindex ebf3288..db1ba4d 100644 --- a/res/pause_cover.png +++ b/res/pause_cover.png diff --git a/res/play_cover.png b/res/play_cover.png Binary files differindex c7f8ca6..bc74085 100644 --- a/res/play_cover.png +++ b/res/play_cover.png diff --git a/res/styles.css b/res/styles.css index 6ddcc6e..e1318a0 100644 --- a/res/styles.css +++ b/res/styles.css @@ -234,7 +234,7 @@ body{ text-align: center; line-height: 30px; float:left; - margin-right: 5px; + /*margin-right: 5px;*/ } #paginate a:hover{ diff --git a/sql/musik.sql b/sql/musik.sql new file mode 100644 index 0000000..8d4233b --- /dev/null +++ b/sql/musik.sql @@ -0,0 +1,74 @@ +/* +Navicat MySQL Data Transfer + +Source Server : wod +Source Server Version : 50722 +Source Host : localhost:3306 +Source Database : musik + +Target Server Type : MYSQL +Target Server Version : 50722 +File Encoding : 65001 + +Date: 2022-03-21 02:36:02 +*/ + +SET FOREIGN_KEY_CHECKS=0; + +-- ---------------------------- +-- Table structure for album +-- ---------------------------- +DROP TABLE IF EXISTS `album`; +CREATE TABLE `album` ( + `id` int(32) unsigned NOT NULL AUTO_INCREMENT, + `name` text NOT NULL, + `description` text, + `cover` text, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; + +-- ---------------------------- +-- Table structure for album_music +-- ---------------------------- +DROP TABLE IF EXISTS `album_music`; +CREATE TABLE `album_music` ( + `id` int(32) unsigned NOT NULL AUTO_INCREMENT, + `music_id` int(32) NOT NULL, + `album_id` int(32) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; + +-- ---------------------------- +-- Table structure for music +-- ---------------------------- +DROP TABLE IF EXISTS `music`; +CREATE TABLE `music` ( + `id` int(32) unsigned NOT NULL AUTO_INCREMENT, + `path` text NOT NULL, + `title` text, + `time` int(128) NOT NULL, + `cover` text, + `project` text, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8; + +-- ---------------------------- +-- Table structure for music_tag +-- ---------------------------- +DROP TABLE IF EXISTS `music_tag`; +CREATE TABLE `music_tag` ( + `id` int(32) unsigned NOT NULL AUTO_INCREMENT, + `music_id` int(32) DEFAULT NULL, + `tag_id` int(32) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8; + +-- ---------------------------- +-- Table structure for tags +-- ---------------------------- +DROP TABLE IF EXISTS `tags`; +CREATE TABLE `tags` ( + `id` int(32) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(128) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8; diff --git a/template.php b/template.php index 726bdfe..eb38b54 100644 --- a/template.php +++ b/template.php @@ -1,5 +1,6 @@ <?php require_once 'music.php'?> <?php require_once 'utils.php'?> +<?php require_once 'functions.php'?> <?php @@ -35,6 +36,11 @@ function html_music_player($music) { echo ' Sorry, your browser do not support audio.'; echo '</audio>' ; + if(isLogin()){ + echo '<label class="key">ID:</label>'; + echo '<label class="value">' . $music->uid . '</label><br/>'; + } + echo '<label class="key">Name:</label>'; echo '<label class="value">' . $music->title . '</label><br/>'; @@ -25,5 +25,9 @@ function html_escape_string($str) { return $str; } +function redirect($url){ + header('Location: '.$url); +} + ?> |