У меня есть index.php файл, который содержит некоторые данные клиента, каждый клиентский данные имеет уникальный идентификатор. "Create-a-note" -form (используя ajax) отправляет заметку в таблицу mysql и мгновенно публикует примечание к index.php. Проблема в том, что я не могу передать client_id в файл обработки, чтобы все записи отображались на всех клиентах:
index.php
echo "
<div class='note' id='typenote".$clients_id."'>
<form>*the form*</form>
</div>
<div id="notes"></div>
";
скрипт
$(document).ready(function(){
function showNote(){
$.ajax({
type:"post",
url:"process.php",
data:"action=shownotes",
success:function(data){
$("#notes").hide().html(data).fadeIn('slow');
}
});
}
showNote();
$("#button").click(function(){
var user=$("#user").val();
var note=$("#note").val();
var client_id=$("#client_id").val();
$.ajax({
type:"post",
url:"process.php",
data:"user="+user+"¬e="+note+"&client_id="+client_id+"&action=addnote",
success:function(data){
showNote();
}
});
});
});
process.php
include("connect.php");
$action=$_POST["action"];
if($action=="shownotes"){
$show=mysql_query("Select * from sys_notes order by note_id desc");
etc...
}
}
else if($action=="addnote"){
etc...
ЗДЕСЬ ПРОБЛЕМА... Как получить значение $ client_id
Select * from sys_notes WHERE client_id=$client_is order by note_id desc
в файле process.php, поэтому правильные заметки заполняются в моем showNote() скриптах id (#notes)?
Три вещи:
1 - Никогда не используйте mysql_-функции (никто не должен) использовать mysqli_, если вам нужно или лучше еще взглянуть на PDO
2 - Используйте $ _SESSION global для хранения таких вещей, как user и userID (чтобы они не могли смириться с этим и изменять/отображать данные других пользователей)
3 - для вашей проблемы я вижу, что вы уже отправляете client_id, так почему бы просто не взять ее оттуда?
Надеюсь это поможет
Идентификатор клиента не должен отправляться с формой, так как клиент может манипулировать им. Это означает, что один клиент может добавлять примечания для другого клиента, изменяя число в html.
Я бы предположил, что ваш клиент вошел в систему и что идентификатор хранится в сеансе, поэтому вы просто получите его в своем php файле, как (пример):
$_SESSION['client']['id'];
Почему вы помещаете строку запроса в data
? data
хочет массив объектов или вам нужно поместить строку запроса в url
.
$.ajax({
type:"post",
url:"process.php",
data:{user: user, note: note, client_id: client_id, action: "addnote"},
success:function(data){
showNote();
}
});
или (метод2)
$.ajax({
type:"post",
url:"process.php?user="+user+"¬e="+note+"&client_id="+client_id+"&action=addnote",
success:function(data){
showNote();
}
});
то вы можете получить доступ к client_id с помощью $_POST['client_id']
или (method2) с $_GET['client_id']