Я начинающий программист, и я пытаюсь выяснить, как работают x-редактируемые поля, прежде чем я смогу попытаться реализовать их на веб-сайте. Я видел несколько примеров в Интернете и даже здесь, но найденные решения не сработали для меня. У меня есть файл index.php с тестовой страницей, в которой представлены два поля образца (текст и выпадающий селектор). Мне удалось получить данные из определенной строки таблицы, чтобы они отображались в полях. Вот мой код index.php.X-editable простое обновление базы данных не обновляется
<?php
\t $dbCon = mysqli_connect("localhost", "#", "#", "#");
// Check connection
if (mysqli_connect_errno())
{
\t echo "Failed to connect: " . mysqli_connect_error();
}
\t $sql="SELECT * FROM user WHERE id ='7' ";
\t $records=mysqli_query($dbCon,$sql);
\t $user=mysqli_fetch_assoc($records)
?>
<html lang="en">
<head>
<meta charset="utf-8">
<title>X-editable Test Page</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- bootstrap -->
<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet">
<script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
<!-- x-editable (bootstrap version) -->
<link href="//cdnjs.cloudflare.com/ajax/libs/x-editable/1.4.6/bootstrap-editable/css/bootstrap-editable.css" rel="stylesheet"/>
<script src="//cdnjs.cloudflare.com/ajax/libs/x-editable/1.4.6/bootstrap-editable/js/bootstrap-editable.min.js"></script>
<!-- main.js -->
<script src="main.js"></script>
</head>
<body>
<div class="container">
<h1>Sample Editing Page</h1>
<div>
<span>Username:</span>
<a href="#" id="username" data-type="text" data-placement="right" data-url="save.php" data-name="username" data-title="Enter username"><?php echo $user['username'];?> </a>
</div>
<div>
<span>Country:</span>
<a href="#" id="country" data-type="select" data-placement="right" data-url="save.php" data-name="country" data-title="Select country"><?php echo $user['country'];?></a>
</div>
</div>
</body>
</html>
я ссылаться на connection.php файл:
<?php
$dbCon = mysqli_connect("localhost", "#", "#", "#");
if (mysqli_connect_errno()) {
echo "Failed to connect: " . mysqli_connect_error();
}
?>
Я до сих пор оберточной мою голову вокруг сценария JS и как она будет использоваться. В строке «url:» я ссылался на «save.php», который должен обновлять данные таблицы в базе данных. Вот JS скрипт, который в значительной степени взяты прямо из примера файла, загруженного с веб-сайта:
$(document).ready(function() {
//toggle `popup`/`inline` mode
$.fn.editable.defaults.mode = 'inline';
\t
//make username editable
$('#username').editable({
\t \t type: 'text',
\t \t url: 'save.php',
\t \t pk:7
\t \t
} \t
);
//make status editable
$('#country').editable({
type: 'select',
title: 'Select status',
placement: 'right',
value: 1,
source: [
{value: 1, text: 'USA'},
{value: 2, text: 'Australia'},
{value: 3, text: 'Other'}
]
/*
//uncomment these lines to send data on server
\t \t */
,pk: 7
,url: 'save.php'
});
});
Все, кажется, работает нормально. Данные из определенной строки, которую я вызываю (id = 7), отображаются просто отлично. Я могу щелкнуть по полю и стать встроенным редактируемым полем. Он будет содержать изменения, которые я делаю, но он не остается таким, когда я перезагружаю страницу и не обновляется в таблице базы данных. Я уверен, что проблема заключается в моем save.php файле:
<?php
include("connection.php");
if(isset($_POST['username'])){
\t $username=$_POST['username'];
\t $country=$_POST['country'];
}
$mysql_query= "UPDATE user SET username=$username WHERE id='7'";
?>
версия, что я предусмотрел здесь, где я нахожусь. Я пробовал по крайней мере дюжину разных вещей, а затем удалил их, чтобы повторить попытку. Я знаю, что это не сложно сделать, но я еще не вижу этого, потому что я не полностью понимаю язык программирования и его функции, поэтому я и так понял это. В конце концов, это будет реализовано в более крупном проекте для веб-сайта. Я буду беспокоиться о проблемах безопасности, прежде чем я доберусь до этого, сначала мне нужно выяснить, как это работает в первую очередь.
Спасибо за вход. Я не вижу, где я пропустил котировки вокруг $ username в моем коде. Я раньше не использовал подготовленные заявления, поэтому мне нужно узнать об этом. Опять же, я очень новичок в этом, поэтому я все еще не уверен, что все это значит. В любом случае, я внедрил ваши предложения, и при попытке обновить поле имени пользователя я получил «внутреннюю ошибку сервера». –
Я предполагаю, что '$ username' является строкой. Таким образом, вам придется обернуть вашу переменную кавычками, поэтому база данных знает, что это строка. Можете ли вы проверить журналы и сообщить мне, что такое точная ошибка? :) –
Единственное, что я могу найти, это то, что он говорит: «Не удалось загрузить ресурс: http: // localhost: 8888/edit/save.php сервер ответил статусом 500 (Internal Server Error)» –