Работа с элементами базы данных посредствам php

rolph

Новичок
Работа с элементами базы данных посредствам php

Делаю вывод из базы данных элементов формы.
Написал скрипт для работы с элементами формы для одной таблицы (добавление/удаление/редактирование).
Добавляет элементы, отображает, но не удаляет, не обновляет, не редактирует.

В таблице два поля - id и name(наименование элемента)

Дополнительный вопросик, можно ли это всё запихнуть в функцию и вызывать из отдельного файла, потому что элементы разбил по группам, для каждой группы - таблица в БД?

Заранее спасибо.

PHP:
<?php

require_once 'connect.php';

$databasename='form_dept'; /*имя базы*/

 if ( !isset( $_GET["action"] ) ) $_GET["action"] = "showlist";
 $action = $_GET["action"];
 $id = $_GET["id"];

 switch ( $action )
 {
     case "showlist":
         show_list();
         break;
     case "delete":
         delete_item( $id );
         show_list();
         break;
     case "update":
	 global $id;
	 update_item( $id );
         show_list();
         break;
     case "editform":
	 	 global $id;
         get_edit_item_form( $id );
         break;
     case "new":
     	 insert_object();
     	 break;
     default:
         show_list();
         break;
 }

 /* вывести список элементов базы данных */
 
 function show_list()
 {
     global $databasename;
	 $query = "SELECT id, name FROM ".$databasename." WHERE 1 ORDER by id";
     $res = mysql_query( $query );
     echo "<h2>Список</h2>";
     echo "<table class=text cellspacing=1 bgcolor=#CCCCCC align=center>";
     echo "<tr><th>ID</th><th>Наименование</th><th>Ред.</th><th>Удл.</th></tr>";
     while ( $item = mysql_fetch_array( $res ) )
     {
         echo "<tr>";
         echo "<td bgcolor=#FFFFFF>".$item["id"]."</td>";
         echo "<td bgcolor=#FFFFFF>".$item["name"]."</td>";
         echo "<td bgcolor=#FFFFFF align='center'><a href='".$_SERVER["PHP_SELF"]."?action=editform&id=".$item["id"]."'><img src='/images/page_white_edit.png'  border=`0` /></a></td>";
         echo "<td bgcolor=#FFFFFF align='center'><a href='".$_SERVER["PHP_SELF"]."?action=delete&id=".$item["id"]."'><img src='/images/cancel.png'  border=`0` /></a></a></td>";
         echo "</tr>";
     }
     echo "</table>";
 }
 
/* редактировать элемент формы */
 function get_edit_item_form($id)
 {
     global $databasename;
	 echo "<h2>Редактировать элемент - ".$id."</h2>";
     $query = "SELECT name FROM ".$databasename." WHERE id=".$id;
     $res = mysql_query( $query );
     $item = mysql_fetch_array( $res );
     echo "<form name='editform' action='".$_SERVER["PHP_SELF"]."?action=update&id=".$id."' method='POST'>";
     echo "<table>";
     echo "<tr>";
     echo "<td>Наименование</td>";
     echo "<td><input type='text' name='name' value='".$item["name"]."'></td>";
     echo "</tr>";
     echo "<tr>";
     echo "<td><input type='submit' value='Сохранить'></td>";
     echo "<td><button type='button' onClick='javascript: history.back();'>Отменить</button></td>";
     echo "</tr>";
     echo "</table>";
     echo "</form>";
 }

/* добавить элемент */ 
 function insert_object()
 {
    global $databasename;
	echo "<h2>Добавить новый элемент</h2>";
    if(!empty($_POST['name']))
	{
		$name=$_POST['name'];
		$query = "INSERT INTO ".$databasename."(name) VALUES ('$name')";
		$res = mysql_query($query);
		echo "Спасибо! ".$name." добавлен(-а)!.\n";
	}
	else
	{
    echo "<form name='editform' action=".$_SERVER['REQUEST_URI']." method='POST'>";
    echo "<table>";
    echo "<tr>";
    echo "<td>Наименование</td>";
    echo "<td><input type='text' name='name'></td>";
    echo "</tr>";
    echo "<td><input type='submit' value='Сохранить'></td>";
    echo "<td><button type='button' onClick='javascript: history.back();'>Отменить</button></td>";
    echo "</tr>";
    echo "</table>";
    echo "</form>";
    }
 }

/* обновить элемент */ 
 function update_item($id)
 {
	 global $databasename; 	
     $name = mysql_escape_string( $_POST['name'] );
     $query = "UPDATE ".$databasename." SET name='".$name."' WHERE id=".$id;
     mysql_query ( $query );
     return true;
 }

/* удалить элемент */ 
 function delete_item($id)
 {
     global $databasename; 
	 $query = "DELETE FROM ".$databasename." WHERE id=".$id;
     mysql_query ( $query );
     return true;
 }
 
 ?>
 

Фанат

oncle terrible
Команда форума
я сначала хотел дать ссылку на свой скрипт, который делает то же самое - думал, человек спрашивает, как это можно сделать покомпактнее.

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

еще вызывает вопросы фраза про "элементы разбил по группам".
 

rolph

Новичок
Что не так? Старые методы или что?

PHP:
$databasename='form_dept'; /*имя базы*/
Это я пробую засунуть весь код в функцию и $databasename передавать функции

PHP:
global $databasename;
- почему-то заработало только с объявлением переменной - глобальной

-~{}~ 27.08.09 15:08:

Автор оригинала: *****
я сначала хотел дать ссылку на свой скрипт, который делает то же самое - думал, человек спрашивает, как это можно сделать покомпактнее.

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

еще вызывает вопросы фраза про "элементы разбил по группам".
Мне интересно посмотреть, как это реализовать по-компактнее, если не трудно - покажите свой код.

с id - разобрался. id не брался get'ом
Сделал так, вроде работает:
PHP:
 if ( !isset( $_GET["action"] ) ) $_GET["action"] = "showlist";
 $action = $_GET["action"];
 $id = $_GET["id"];
Элементы разбил по группам, возможно некорректно сформулировал.
У меня в форме несколько selectbox'ов, для определенного selectbox'а - таблица в БД.
 

Фанат

oncle terrible
Команда форума
что за селекты? что за сущности в этих селектах? почему они сидят в разных таблицах?
 

rolph

Новичок
Автор оригинала: *****
что за селекты? что за сущности в этих селектах? почему они сидят в разных таблицах?
В селектах - обычный текст...
Сделать в разных таблицах - это первое, что пришло на ум. Количество элементов должно меняться.
 

Фанат

oncle terrible
Команда форума
вот умеете вы, ламеры, ответить на вопрос, НИЧЕГО не сказав по сути
 

rolph

Новичок
Куда уж нам до вас - гуру ;)

Есть несколько селектов и в них элементы загружаются из соответствующих таблиц базы. Что сказано не по сути?
 
Сверху