PHP + Ajax: система добавления друзей - PullRequest
0 голосов
/ 23 октября 2010

Я пытаюсь сделать небольшой проект для добавления друзей.Когда вы нажимаете кнопку добавления друга, вы отправляете Ajax-вызов с идентификатором друга и именем пользователя (они являются атрибутами id и имени каждой кнопки добавления) в файл add.php.(Структура mysql: 1 таблица пользователей + X таблиц с именем пользователя (столбцы: friendid, ispending)) В файле PHP есть только 2 запроса MySQLi: Вот код для файла добавления:

session_start();
$friendid = $_POST['id'];
$myname = $_SESSION['username'];
$friendname = $_POST['name'];
$myid = $_SESSION['id'];
$add = new Mysqlconnect();
$add->db->query("INSERT INTO $myname VALUES($friendid, 'yes')");
$add->db->query("INSERT INTO $friendname VALUES ($myid, 'yes')");
$add->db_Close();

Требуется класс Mysqlconnect. Я просто не хотел, чтобы код здесь был слишком длинным.Вот вызов Ajax:

$('.add').click(function(){
 var name = $(this).attr("name");
 var id = $(this).attr("id");
   $.ajax({
      type: "POST",
      data: "&name="+name+"&id="+id,
      url: 'add.php',
      success: function(){
         alert("success");
      }
   });
});

ПРОБЛЕМА: Когда я нажимаю «добавить друга», он предупреждает об «успехе», но каждый раз обновляется только одна таблица или даже вообще нет таблицы.Хотя однажды я нажал на нее, и она сработала (я не менял код в тот раз, я пытался нажимать каждые 20 секунд).

Как мне решить эту проблему?

1 Ответ

1 голос
/ 23 октября 2010

если я правильно вас понял, вы, похоже, создаете новую таблицу для друзей каждого пользователя (1 таблица пользователей + X таблиц с именем пользователя), это не очень хороший подход, и вам будет лучше всего с двумя таблицами: пользователии user_friends следующим образом:

drop table if exists users;
create table users
(
user_id int unsigned not null auto_increment primary key,
username varbinary(32) unique not null
)
engine=innodb;

drop table if exists user_friends;
create table user_friends
(
user_id int unsigned not null,
friend_user_id int unsigned not null,
created_date datetime not null,
primary key (user_id, friend_user_id) -- note clustered composite PK (innodb only)
)
engine=innodb;

Полный пример сценария можно найти здесь: http://pastie.org/1242699

Надеюсь, это поможет.

...