Любая помощь будет принята с благодарностью. Я пытаюсь, чтобы пользователи добавляли песни в плейлист проигрывателя SCM, который есть у меня на форуме. Так что это поток управления у меня сейчас. Первая часть — получение пользовательского ввода.
<form action="/phpbbauto/scmplayersend.php" method="post">
<?php
echo '<input class="searchbox" type="text" name="liensc" placeholder="Add to Playlist..." /><input class="searchbutton" type="submit" value="" onclick=$onc title="Search" />';
?>
</form>
Это работает отлично. Теперь вот php-файл, в который отправляются данные.
<?php
define('DB_NAME', 'xxxxxxxxxx');
define('DB_USER', 'xxxxxxxxxx');
define('DB_PASSWORD', 'xxxxxxxxxx');
define('DB_HOST', 'xxxxxxxxxx');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link){
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db(DB_NAME, $link);
if(!db_selected){
die('Can\'t find ' . DB_NAME . ': ' . mysql_error());
}
//Connection Established//Data Hander Below This Line//
$valone = $_POST['liensc']; //Data from form stored//
$sql = "INSERT INTO demo (liensc) VALUES ('$valone')";
if(!mysql_query($sql)){
die('Error: '. mysql_error());
}
mysql_close();
?>
Это тоже хорошо работает. Теперь вот две проблемы, которые у меня есть.
<!-- Song Player http://playlist.me -->
<script type="text/javascript" src="http://playlist.me/w/script.js"data-config="{
'skin':'skins/black/skin.css',
'volume':10,
'autoplay':true,
'shuffle':true,
'repeat':1,
'placement':'top',
'showplaylist':false,
'playlist':[
<?php
define('DB_NAME', 'xxxxxxxx');
define('DB_USER', 'xxxxxxxxx');
define('DB_PASSWORD', 'xxxxxxxxxx');
define('DB_HOST', 'xxxxxxxxx');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link){
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db(DB_NAME, $link);
if(!db_selected){
die('Can\'t find ' . DB_NAME . ': ' . mysql_error());
}
$appe = "SELECT liensc FROM demo";
$tshell = ",{'title':'$appe','url':'$appe'}";
$stringco = "{'title':'Eddy Christiani and Frans Poptie - Rythm For You','url':'https://www.youtube.com/watch?v=E3sOnASmR24'},";
echo $stringco . $tshell;
$sql = "DELETE FROM demo WHERE ID=1";
if(!mysql_query($sql)){
die('Error: '. mysql_error());
}
mysql_close();?>
]}" >
</script>
<noscript><a href="http://playlist.me/songs/">player playlist</a></noscript>
<!-- playlist.me script end -->
Первая проблема: да, это на самом деле добавляет. Проблема в том, что значение не добавляется в столбец, а только команда SQL. Как я могу это исправить?
Вторая проблема: он добавляется, но я не уверен, что он будет постоянным при добавлении следующего значения.
Любая помощь будет оценена. Я работал над этим весь день, и потому что я новичок, я просто загнал себя в стену. Я думаю, что я близко, но я также мог бы быть очень далеко от фактического ответа.
Спасибо.
Вот некоторые вещи, которые я заметил в вашем коде:
Самое главное здесь — это использовать PDO и его API, так как это поможет вам предотвратить Атаки SQL-инъекций на Вашем сайте.
Как отмечает @Havenard в комментариях, вы печатаете свой SQL-запрос, а не выполняете и получаете результаты.
Похоже, что ваш плагин playlist.me ожидает название и URL-адрес песни, но ваша форма запрашивает только один из них.
Чтобы получить правильный вывод для вашего плагина, вам нужно получить строки из базы данных и распечатать их с json_encode()
, который будет выводить что-то вроде:
[{'title':'whatever song','url':'http://theaddress'},{'title':...
Я переписал ваш код с учетом этих предложений:
добавить форму песни
<form action="scmplayersend.php" method="post">
<input class="searchbox" type="text" name="title" placeholder="Title of song" />
<input class="searchbox" type="text" name="url" placeholder="Url" />
<input class="searchbutton" type="submit" value="" title="Search" />
</form>
scmplayersend.php
<?php
if (count($_POST)>0) {
$server = "myServer"; $database = "DbName"; $username = "myself"; $password = "secret";
$conn = new PDO("mysql:host=$server;dbname=$database", $username, $password);
$title = $_POST['title'];
$url = $_POST['url'];
$sql = "INSERT INTO demo (title, url) VALUES (:title, :url)";
$statement = $conn->prepare($sql);
$statement->bindValue(":title", $title, PDO::PARAM_STR);
$statement->bindValue(":url", $url, PDO::PARAM_STR);
$success = $statement->execute();
if (!$success) {
exit("<pre>\nPDO error: " . $statement->errorInfo()[2] . "</pre>");
}
exit('Song added successfully. <a href="' . $_SERVER["SCRIPT_NAME"] . '">Go back</a>');
}
?>
player.php
<!-- Song Player http://playlist.me -->
<script type="text/javascript" src="http://playlist.me/w/script.js"data-config='{
"skin":"skins/black/skin.css",
"volume":10,
"autoplay":true,
"shuffle":true,
"repeat":1,
"placement":"top",
"showplaylist":false,
"playlist":<?php
$server = "myServer"; $database = "DbName"; $username = "myself"; $password = "secret";
$conn = new PDO("mysql:host=$server;dbname=$database", $username, $password);
$sql = "SELECT title, url FROM demo";
$statement = $conn->prepare($sql);
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($result);
?>'>
</script>
<noscript><a href="http://playlist.me/songs/">player playlist</a></noscript>
<!-- playlist.me script end -->
Других решений пока нет …