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

  • Автор темы Автор темы rolph
  • Дата начала Дата начала

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;
 }
 
 ?>
 
я сначала хотел дать ссылку на свой скрипт, который делает то же самое - думал, человек спрашивает, как это можно сделать покомпактнее.

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

еще вызывает вопросы фраза про "элементы разбил по группам".
 
Что не так? Старые методы или что?

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'а - таблица в БД.
 
что за селекты? что за сущности в этих селектах? почему они сидят в разных таблицах?
 
Автор оригинала: *****
что за селекты? что за сущности в этих селектах? почему они сидят в разных таблицах?
В селектах - обычный текст...
Сделать в разных таблицах - это первое, что пришло на ум. Количество элементов должно меняться.
 
вот умеете вы, ламеры, ответить на вопрос, НИЧЕГО не сказав по сути
 
Куда уж нам до вас - гуру ;)

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