Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Премахване на редове от HTML таблица без използване на база данни
  1. Премахване на редове от HTML таблица без използване на база данни
     
Автор  plamenSm (31.03.2008 14:23)  съобщение до автора
Погледнат  1821 пъти  добави към любими
Оценка  добави коментар
Гласове  1  изпрати на приятел
Коментари  (0)  абонирай се за PHP
    Страница 1 / 1

 



Имаме PHP проект, в който е необходимо да се добавят и изтриват редове в HTML таблица. Проектът не използва никаква база данни. Таблицата изглежда подобно на тази тук:



Когато се кликне „изтриване”, съответния ред трябва да се премахне. Това би било лесно ако данните за HTML таблицата се взимаха от таблица в база данни, но случая не е такъв.


Намиране на решение

Едно от възможните решения е да запишем HTML кода таблицата във файл, като към всеки ред добавим уникален идентификатор в HTML коментар ”<!-- uId -->”.

След това чрез функцията preg_replace(), можем да намерим и променим ред от таблицата по този уникален идентификатор.


Как да подходим

Първо трябва да планираме структурата от файлове. В нашия случай са ни необходими три файла:

1. Файл, който съдържа таблицата (html)
2. Файл, който служи за показване на таблицата (php)
3. Файл, който изпълнява заявките (php)


1. Файл, който съдържа таблицата

Знаем, че с PHP можем да добавяме текст само в края на текстов файл. По тази причина ни е необходим файл, който съдържа само началото на таблицата и позволява добавяне на редовете:


Файл table_include.html:

CODE
1
2
3
4
5
6
7
8
<table width="99%" border="0" cellpadding="5" cellspacing="0">
<
thead>
    <
tr>
        <
th>Column one</th>
        <
th>Column two</th>
    </
tr>
</
thead>
<
tbody>


Така подготвен файлът позволява добавяне на редове в <tbody>. Затварящите тагове </tbody> и </table> няма да записваме във файла, а ще генерираме при показването на таблицата.


2. Файл, който служи за показване на таблицата

Ще трябва да изведем таблицата в елемент <div>.


Файл my_table.php:


CODE
1
2
3
4
5
<div id="my_table">
<?
php include("table_include.html"); ?>
</
tbody>
</
table>
</
div>


Чрез PHP функцията include() вмъкваме файл table_include.html, след което довършваме HTML кода на таблицата като добавяме </tbody> и </table> след include(). В случая редовете на таблицата са генерирани и добавени в друг процес. Важна част от този процес е да добави към всеки ред уникален идентификатор поставен като коментар, за да не се вижда в браузъра. Има различни начини за генериране на уникални стойностти в PHP. Ние ще използваме функцията time().


Кодът за генериране на един ред ще изглежда така:


CODE
1
$table_row = '<!--'.time().'--><tr><td><a href="метод за изтриване">изтриване</a></td><td>стойност в колона 2</td></tr><!--'.time().'-->';


3. Файл, който изпълнява заявките

Вижте коментарите за детайлни обяснения към кода.


Файл execute.php:


CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
switch ($_REQUEST["action"]) {

case 'add' : // Добавяне на ред (редове)

    // Поставете кода за генериране на редовете тук. 
    // Например стйностите може да са получени от submit на форма.
    // Тук за демонстрация ше генерираме 5 реда чрез FOR цикъл.

   
for ($i = 0; $i < 5; $i++) {

       
// Генериране на HTML кода за един ред маркиран с уникален ID в коментар
       
$table_row = '<!--' . time() . '-->
                        <tr>
                        <td>
                            <a href="execute.php?action=delete&id=
' . time() . '">delete row</a>
                        </td>
                        <td>Column two content</td>
                        </tr>
                      <!--
' . time() . '-->';

       
// Запис на реда в "table_include.html". Използваме параметърът "a" (append).

       
if (!$file_handle = fopen("table_include.html", "a")) {
           
$error = "Cannot open file";
       
}
       
if (fwrite($file_handle, $table_row) === FALSE) {
           
$error = "Cannot write to file";
       
}
       
fclose($file_handle);

       
// Необходима е малка пауза за да не получим еднакви стойностти от time()
       
sleep(1);

   
}

   
break;

case 'delete' : // Премахване на ред

    // Взимаме съдържанието на целия файл

   
$filename = "table_include.html";
   
$handle = fopen($filename, "r");
   
$contents = fread($handle, filesize($filename));
   
fclose($handle);

   
// Формираме шаблона за търсене на реда
   
$parameter = "<!--" . $_REQUEST['id'] . "-->";
   
$replace = "%($parameter)(.*?)($parameter)%is";

   
// Използваме preg_replace() за да премахнем текста, който отговаря

    // на шаблона $parameter

   
$myNewText = preg_replace($replace, "", $contents);

   
// Запис на променения код обратно в "table_include.html"
   
$filename = "table_include.html";
   
if (!$file_handle = fopen($filename, "w")) {
       
$error = "Cannot open file";
   
}
   
if (!fwrite($file_handle, $myNewText)) {
       
$error = "Cannot write to file";
   
}
   
fclose($file_handle);

   
// Пренасочваме към my_table.php за показване на променения файл
   
header("Location: my_table.php");

   
break;
}
?>


Съвети

  • Бихте могли да използвате AJAX jQuery за извикване на execute.php
  • В зависимост от конкретните цели на приложението, задачата може да се реши и изцяло чрез DHTML / JavaScript, което ще намали драстично трафика.



Източник: bewebmaster.com



   


Ключови думи: PHP таблица база данни бази данни


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008