Jump to content
  • 0

добавление\удаление


egoregor
 Share

Question

Объясните, пожалуйста, реализацию добавления и удаления строки из таблицы, при чем это должно происходить при нажатии на соответствующее слово в конце каждой строки.

Или дайте хотя бы ссылку на статью, где это очень подробно расписано.

Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

SQL запрос на удаление и изменение я знаю. Но как реализовать это через надпись в строке.

Например:

——————————

|имя|возраст|удалить|изменить|

——————————

То есть, нажимая на слово "удалить", удаляется данная строка.

Нажимая на "изменить", данные строки переносятся на страницу с input'ами, где заносятся в них.

При чем в выводимой таблице отсутствует id.

Edited by egoregor
Link to comment
Share on other sites

  • 0

скорее всего вам придётся в выводимой таблице показывать id, это самое простое решение. в ссылке передавать в строке get параметром id. в скрипте удаления/редактирования проверять его и выводить/удалять инфу по нужной строке.

Link to comment
Share on other sites

  • 0

вы таблицу строите циклом надеюсь?

ссылка должна выглядеть следующим образом:

например:

[code class="php"]
<a href="?action=delete&id=1">удалить</a>
<a href="?action=update&id=2">изменить</a>

в вашем скрипте уже условие делаете.


<?php
// если есть в get параметры указывающие на какое-либо действие над данными из таблицы:
if(isset($_GET['action']) && isset($_GET['id']))
$classForTable = new classForTable();

class classForTable{
function __construct(){
// сперва проверяете какое должно быть действие:
$action = $_GET['action'];
$id = (int) $_GET['id'];
switch($action){
case 'delete': $this->delete($id); break;
case 'update': $this->update($id); break;
}
}
function update($id){
// тут действия какие нужны для редактирования
}
// ну и так далее.
}

приведённый код лишь один из множества вариантов реализации вашей затеи.

Edited by Быколай
Link to comment
Share on other sites

  • 0


<a href="?action=delete&id=1">удалить</a>
<a href="?action=update&id=2">изменить</a>

ИМХО: А я не любитель избыточности параметров, я бы переписал ссылки в вид:


<a href="?delete=1">удалить</a>
<a href="?update=2">изменить</a>

Где наличие не пустой переменной свидетельствует о действии, а значение указывает на объект действия.

Link to comment
Share on other sites

  • 0

вообще механизм простой.. Вернее самый простой..

Есть один управляющий файл index.php который будет делать "Просмотр", "Редактирование", "Удаление"

Допустим адрес будет такой

__http://site.ru/index.php?pages=имя_страницы&id=идентификатор_материала

Чтобы определить какой вариант (какая страница) в данный момент сначала получим переменную

$pages = (isset($_GET['page'])) ? $_GET['page'] : '';

и заодно получим идентификатор материала (его конечно нужно вставлять в соответствующий обработчик, но для наглядности пропишем его сначала)

$id = (isset($_GET['id'])) ? intval($_GET['id'] : 0;

далее организуем непосредственно обработку куда идти

switch ($pages) {
case 'edit': // редактирование материала
iEdit($id);
break;
case 'delele': // удаление материала
iDelete($id);
break;
default : // по умолчанию показываем материал
iDefault();
}

ну и теперь сами функции по обработке..

function iDefault(){
// тут вы выводите материал в том числе и кнопки для редактирования и удаления напротив материалов
// например для удаления index.php?pages=delete&id=7
// для редактирования index.php?pages=edit&id=7
}

далее функция для редактирования

function iEdit($id){
// если нужен механизм как организовать редактирование то могу показать
}

ну и удаление..

finction iDelete($id=0){
// проверяем есть ли $id и неравен ли он нулю
if($id){
// если всё хорошо то делаем запрос к базе на удаление
// соответствующего материала с определённым идентификатором
// ........
// и далее перегружаем страницу и возвращаемся на просмотр материалов
header("HTTP/1.1 301 Moved Permanently");
header("Location: "http://site/");
}else{
// если какие-то проблемы с идентификатором то просто открываем страницу просмотра
// т.е. подключаем функцию по умолчанию
iDefault();
}

}

Edited by Gold Dragon
Link to comment
Share on other sites

  • 0

далее функция для редактирования

function iEdit($id){
// если нужен механизм как организовать редактирование то могу показать
}

Буду очень благодарен за механизм редактирования.

Удаление вроде получилось.

Link to comment
Share on other sites

  • 0

Одна из таблиц:

| Id(который не должен выводиться)| Имя | Телефон |

Вот мой код, который обрабатывает введенные в форме данные и записывает их в таблицу:

<?php
include "includes/connect.php";

if (!$conn = mysql_connect($host, $user, $password)){
echo "<p class=\"system_message\">MySQL Error!</p>";
exit;
}
if (!empty($_POST["id"])) {
mysql_select_db($db);
$res=mysql_query("UPDATE customers SET cust_name=".trim($_POST['name']).", phone=".trim($_POST['phone']).
" WHERE id = ".trim($_POST["id"]));
}
else {

$id = "0";
$name = trim($_POST['name']);
$phone= trim($_POST['phone']);

if (isset($_POST['name'], $_POST['phone'])) {
if ((empty($_POST['name'])) or (empty($_POST['phone']))) {
echo "<p class=\"system_message\">Remained empty fields!</p>";
} else if (!is_numeric($phone)){
echo "<p class=\"system_message\">Wrong phone: Invalid characters</p>";
} else if (!is_string($name)){
echo "<p class=\"system_message\">Wrong name: Invalid characters</p>";
} else if (!preg_match("/^[a-zA-Zа-яА-Я\s]+$/u", $name)){
echo "<p class=\"system_message\">Wrong name: Invalid characters</p>";
} else if (iconv_strlen($phone)<10){
echo "<p class=\"system_message\">Wrong phone: Not 10 numbers</p>";
} else {
mysql_select_db($db);
$result = mysql_query("INSERT INTO customers (id, cust_name, phone) VALUES ('$id', '$name', '$phone')");

if ($result== 'true')
{echo "<p class=\"system_message\">The data added to the seller</p>";}
else {echo "<p class=\"system_message\">The data vendor is not added</p>";}

}
echo '<hr>';
}}
mysql_close($connect);
?>

На форме есть невидимый input, куда кидается номер id при редактировании.

Но редактирования не происходит.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy