2013-02-11 2 views
1

Итак, у меня есть страница, которая строит таблицу базы на столе MYSQL с использованием PHP:Как обновить таблицу, удалить записи из таблицы асинхронно с помощью jquery, ajax, php и mysql?

tables.php

$page .='<form method="POST" action="processing.php">'; 
$page .= "<table> \n"; 
$page .= "<tr>\n"; 
$page .= "<th>ID</th> \n <th>First Name</th> \n <th>Last Name</th> \n <th>PhoneNumber</th> \n <th>Email</th> \n"; 

//Loops through each contact, displaying information in a table according to login status 
$sql2="SELECT cID, firstName, lastName, phoneNum, email FROM Contact WHERE oID=".$_GET['orgID']; 
$result2=mysql_query($sql2, $connection) or die($sql1); 
while($row2 = mysql_fetch_object($result2)) 
{ 
    $page .= "<tr>\n"; 
    $page .= "<td>".$row2->cID."</td>\n"; 
    $page .= "<td>".$row2->firstName."</td>\n"; 
    $page .= "<td>".$row2->lastName."</td>\n"; 
    $page .= "<td>".$row2->phoneNum."</td>\n"; 
    $page .= "<td>".$row2->email."</td>\n"; 
    //Will only display these buttons if logged in 
    $page .= '<td><input type="checkbox" name="checkedItem[]" value="'.$row2->cID.'"></input></td>'."\n"; 
    $page .= "<td>".makeLink("addEditContact.php?cID=".$row2->cID, "Edit")."</td>\n"; 
    $page .="</tr>"; 
} 


$page .= "</table>"; 
//Two buttons sending to processing.php to decide what to do with selected values from there 
$page .= '<input name="addToContacts" type="submit" value="Add Selected Contacts To Contact List" />'."\n" ; 
$page .= '<input name="deleteContacts" type="submit" value="Delete Selected Contacts" />'."\n"; 
$page .= "</form>\n"; 
mysql_close($connection); 

Так база флажков, я могу выбрать, чтобы добавить контакты в другую таблицу или удалять контакты прочь из этой таблицы, первой передачи информации этой формы на страницу processing.php, которая решает, какая кнопка была нажать и перенаправляет на соответствующий PHP скрипт:

processing.php:

if(!empty($_POST['checkedItem'])) 
{ 
    //Because addToContacts and deleteContacts take in GET instead of POST for convinience, it needs to take all of checkItems and implode it 
    $var=$_POST['checkedItem']; 
    ksort($var); 
    $joinedString= implode(',',$var); 
    //Since there are two buttons in orgDetail, it checks for which was pushed and sends it to the correct page 
    if(!empty($_POST['addToContacts'])) 
    { 
     header('Location: addToContacts.php?cID='.$joinedString); 
    } 

    else if($_POST['deleteContacts']) 
    { 
     header('Location: deleteContacts.php?cID='.$joinedString); 
    } 
} 
else 
{ 
    //Error for not selecting any items 
    $page .= makeP("You have not checked off any items. Please click ".makeLink($currentPage, "here")." to return to previous page"); 
} 

И так как меня интересует только случай удаления контакта прямо сейчас. Вот deleteContacts.php

$explodedString=explode(',',$_GET['cID']); 


    foreach($explodedString as $eString) 
    { 
     $sql1="DELETE FROM Contact WHERE cID='".$eString."'"; 
     mysql_query($sql1, $connection) or die($sql1); 
    } 
header('Location: '. $currentPage); 

Так вот, где это усложняется. Это прекрасно работает, когда я хочу, чтобы страница работала синхронно. Он отскакивает от скриптов php, и все хорошо. Что делать, если я хочу удалить непосредственно из tables.php с помощью jquery. Итак, я имею в виду, что он выполнит запрос mysql для удаления записей из фактического db, а также после того, как он обновит представление таблицы в tables.php, чтобы отразить это изменение; все сделано асинхронно?

(Просьба игнорировать тот факт, что все SQL-запросы не избежали строк, я понимаю, что и я должен исправить это позже)

Спасибо заранее.

+0

Я думаю, что вы изобретаете колесо. Взгляните на jQuery dataTables. Это мощный плагин для управления таблицей и делает все, что вам нужно. С помощью этого плагина вам просто нужно обработать серверную часть, все части части/клиентского интерфейса пользователя готовы к использованию. http://www.datatables.net/ – MatRt

+0

Проблема заключается в том, что я должен также заставить ее работать в случае отключения JS. В этом случае я не уверен, обработает ли jQuery dataTables. – user1807404

+0

Вы не сможете обновить и сделать ajax, если JS отключен .. – MatRt

ответ

0

Если вам необходимо поддерживать таблицу без Javascript затем получить эту работу первый

Ваш единственный способ сохранить таблицу в актуальном состоянии без Javascript включен, чтобы обновить страницу и перерисовывать таблицу при каждой загрузке.

Смежные вопросы