Показать сообщение отдельно
  #1 (permalink)  
Старый 31.08.2018, 13:49
Аспирант
Отправить личное сообщение для AnthonyFink Посмотреть профиль Найти все сообщения от AnthonyFink
 
Регистрация: 14.10.2017
Сообщений: 31

помогите присоеденить апликацию к db.
есть датабейс и серверсайд написанные на php и есть сама апликация написанная на jquery
нужно соеденить это дело
<?php

if(!empty($_GET['404']) || empty($_GET['type']) || !in_array($_GET['type'],array('playlist','songs'))) {
	fail(404);
}
try {
    // db connection
	$servername = "localhost";
	$username = "root";
	$password = "";
	$dbname = "playlist";
	$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  // set the PDO error mode to exception
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // operate request
	if($_GET['type']=='playlist') {
		// playlist
		if(isset($_GET['id'])) {
			playlist_item($_GET['id']);		
		}
		else {
			playlists();		
		}
	}
	else {
		// songs
		playlist_songs($_GET['id']);			
	}
}
catch(PDOException $e) {
  fail(422);
}

// ----- helpers
function playlist_item($id) {
	global $conn;
	switch( $_SERVER['REQUEST_METHOD'] ) {
		case 'GET':
			$data = array();
			$stmt = $conn->prepare("SELECT id,name,image FROM playlists WHERE id=:id");
			if ($stmt->execute(array('id' => $id))) {
				$data = $stmt->fetch(PDO::FETCH_ASSOC);
			}
			response(TRUE,$data,TRUE);		
		break;
		case 'POST':
			$p =& $_POST;
			$update = array();
			if(!empty($p['name'])) $update['name'] = $p['name'];
			if(!empty($p['image'])) $update['image'] = $p['image'];
			if( empty($update) ) {
				response();
			}
			else {
				$update['id'] = $id;
				$stmt = $conn->prepare('UPDATE playlists 
                                                  SET '.implode(", ", array_map(function($v){ return "{$v}=:{$v}"; }, array_keys($update))).' 
                                                  WHERE id=:id');
				$stmt->execute($update);
				response(TRUE);
			}
		break;
		case 'DELETE':
			$stmt = $conn->prepare("DELETE FROM playlists WHERE id=:id");
			$stmt->execute(array(
				'id' => $id
			));
			response(TRUE);
		break;
		default:
			fail(404);
	}		
}

function playlists() {
	global $conn;
	switch($_SERVER['REQUEST_METHOD']) {
		case 'GET':
			$data = array();
			$stmt = $conn->prepare("SELECT id,name,image FROM playlists");
			if($stmt->execute()){
				while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
						$data[] = $row;
				}												
			}			
			response(TRUE,$data,TRUE);
		break;
		case 'POST':
		  $okresult = false;
			$data = NULL;
			$p =& $_POST;
			if( !empty($p['name']) && !empty($p['image']) && !empty($p['songs']) && is_array($p['songs']) ) {					
				$okresult = true;
				$c = count($p['songs']);
				for($i=0;$i<$c && $okresult;$i++) {
					$okresult = !empty($p['songs'][$i]['name']) && !empty($p['songs'][$i]['url']);
				}				
				if($okresult) {
					$stmt = $conn->prepare("INSERT INTO playlists(name,image,songs) VALUES(:name, :image, :songs)");
					$stmt->execute(array(
						'name' => $p['name'],
						'image' => $p['image'],
						'songs' => json_encode($p['songs'],TRUE)
					));
					$data = [
						'id' => $conn->lastInsertId()
					];
				}				
			}
			response($okresult,$data);
		break;
		default:
			fail(404);
		break;
	}	
}
function playlist_songs($id) {
	global $conn;
	switch($_SERVER['REQUEST_METHOD']) {
		case 'GET':
			$data = array();
			$stmt = $conn->prepare("SELECT id,songs FROM playlists WHERE id=:id");
			if ($stmt->execute(array('id' => $id))) {
				$data = $stmt->fetch(PDO::FETCH_ASSOC);
			}
			response(TRUE,[
					'songs' => empty($data['songs']) ? [] : json_decode($data['songs'],TRUE)
			]);
		break;
		case 'POST':
		  $okresult = false;
			$p =& $_POST;
			if( !empty($p['songs']) && is_array($p['songs']) ) {				
				$okresult = true;
				$c = count($p['songs']);
				for($i=0;$i<$c && $okresult;$i++) {
					$okresult = !empty($p['songs'][$i]['name']) && !empty($p['songs'][$i]['url']);
				}
				if($okresult) {
					$stmt = $conn->prepare('UPDATE playlists SET songs=:songs WHERE id=:id');
					$stmt->execute(array(
							'songs' => json_encode($p['songs']),
							'id' => $id));
				}
			}
			response($okresult);
			break;
		default:
				fail(404);	
	}	
}
		
function response($success=FALSE,$payload=array(),$forceResult=FALSE) {
	$status = $success ? 200 : 400;
	$ret = array('success' => $success);
	if($payload || $forceResult) { $ret['data'] = $payload; }
	header('Content-Type: application/json');
	http_response_code($status);
	echo json_encode($ret);
}

function fail($code) {
	header('Content-Type: application/html');
	http_response_code($code);			
}

это сервер сайд к нему прилагается .htaccess
Код:
Options -Indexes

RewriteEngine on
RewriteRule ^playlist$ ./playlist.php?type=playlist [L]
RewriteRule ^playlist/([0-9]+)$ playlist.php?type=playlist&id=$1 [L]
RewriteRule ^playlist/([0-9]+)/songs$ playlist.php?type=songs&id=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./playlist.php?404=$1 [L,QSA]
и код jquery
Ответить с цитированием