PHPFAQ  
Начинающим   Технологии   MySQL   Ошибки   Ссылки   Юмор   О сайте   Форум   PHP Club  

Пример кода, работающего с MySQL


Самая классическая задача при работе с базой данных - это приложение вида форма-таблица.
Таблица отображает записи, лежащие в БД, а форма служит для их добавледния/редактирования.

Вот код скрипта, который и реализует упрощенную схему такого приложения.
Кроме уникального идентификатора строки id, в таблице имеется только одно текстовое поле name
Удаление в данном примере не предусмотрено, но при желании, его нетрудно добавить. Особенно учитывая тот факт, что записи желательно не удалять, а помечать, как непоказываемые. то есть, удаление сведется к апдейту.


<?  
mysql_connect
(); 
mysql_select_db("new"); 
$table "test"
if(
$_SERVER['REQUEST_METHOD']=='POST') { //form handler part: 
  
$name mysql_real_escape_string($_POST['name']); 
  if (
$id intval($_POST['id'])) { 
    
$query="UPDATE $table SET name='$name' WHERE id=$id"
  } else { 
    
$query="INSERT INTO $table SET name='$name'"
  } 
  
mysql_query($query) or trigger_error(mysql_error()." in ".$query); 
  
header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);  
  exit;  
}  
if (!isset(
$_GET['id'])) { //listing part: 
  
$LIST=array(); 
  
$query="SELECT * FROM $table";  
  
$res=mysql_query($query); 
  while(
$row=mysql_fetch_assoc($res)) $LIST[]=$row
  include 
'list.php'
} else { 
// form displaying part: 
  
if ($id=intval($_GET['id'])) { 
    
$query="SELECT * FROM $table WHERE id=$id";  
    
$res=mysql_query($query); 
    
$row=mysql_fetch_assoc($res); 
    foreach (
$row as $k => $v$row[$k]=htmlspecialchars($v); 
  } else { 
    
$row['name']=''
    
$row['id']=0
  } 
  include 
'form.php'
}  
?>

form.php
<form method="POST">
<input type="text" name="name" value="<?=$row['name']?>"><br>
<input type="hidden" name="id" value="<?=$row['id']?>">
<input type="submit"><br>
<a href="?">Return to the list</a>
</form>

list.php
<a href="?id=0">Add item</a>
<? foreach ($LIST as $row): ?>
<li><a href="?id=<?=$row['id']?>"><?=$row['name']?></a>
<? endforeach ?>


Другие материалы раздела:
\"Кавычки \". Cоставление запросов, слеши, SQL Injection
Как разбить вывод из mysql постранично
Проблемы с кодировкой в MySQL версий 4.1+
Базовые понятия MySQL и отличия от текстовых файлов.


Комментарии

Dev 30.07.10 11:48
Очень много странных вопросов. Мне кажется что прежде чем их задавать следует в начале файла пхп вписать error_reporting(E_ALL); и после sql запросов вписать echo mysql_errno().':'.mysql_error()
Pomaska 01.02.10 00:34
слушай, ты можешь помочь, я бы тебе ссылку дал и код стр... просто я не очень понимаю( я вроде понял, но оп, и мои раздумья улетели(
там чтобы из одной таблицы вычислить, а потом вывести это на странице из другой таблицы, надо же делать 2-3стр с подключениями\соеденениями... я прав?
Ответ: Напиши хотя бы на форум этого сайта.
Здесь комментарии под статьями, а не курсы обучения азам РНР.
Pomaska 01.02.10 00:11
ну а помочь кодом, если я вам скажу название БД и этих двух таблиц?
мне прост очень надо...
Ответ: Думаю, стоит обратиться на какой-нибудь форум.
В любом случае, неработающий этот код и какой-то свой - это две большие разницы.
Pomaska 01.02.10 00:08
В логах ничего нет, в ошибках тоже.. (на веб сервере)

В php скрипте (код) ничего не выводится....(
в чем может быть проблема?

мне просто форма нужна, чтобы при вводе "player_name" высчитавалось "player_id" и после этого по "player_id" выводилось на экран "player_race_1","player_race_2","player_race_3","player_race_4""player_race_5","player_race_6""player_race_7","player_race_8","player_race_9"
но эти "player_race_*" лежат в другой таблице.
Ответ: кроме предыдущей ссылки ничем, увы, помочь не могу
если программа не работает - ее отлаживают
Pomaska 31.01.10 23:47
ну я поставил on, теперь там "Add item", при переходе по ней этой ссылке, появляется форма (!одна!), с кнопкой, и текстом "Return to the list".. я в этой форме ввожу "Pomaska" (в таблице я есть)и меня перекидывает на обычный index.php, тоесть обратно, а изменений я не вижу...(
Ответ: Нвдо смотреть ошибки.
В логе, выводить на жкран значение переменных
http://phpfaq.ru/debug
Pomaska 31.01.10 23:31
short_open_tag
что это означает? и какое значение мне лучше ставить?
(я поражен, над таким быстрым ответом...)))
Ответ: это означает в значение off
Pomaska 31.01.10 23:27
У меня такой вопрос, я там изменяю имя ДБ и ТАБЛИЦЫ, захожу в эту дирректорию, а там вместо формы и т.д.:
$v) $row[$k]=htmlspecialchars($v); } else { $row['name']=''; $row['id']=0; } include 'form.php'; } ?>
Ответ: Думаю, надо заменить все или поменять настройку short_open_tag в php.ini
smoll 19.01.09 15:55
if ($id=intval($_POST['id']))
ничто не мешает id быть к примеру - 0000-101
Ответ: в данном примере - мешает.
в других - квотим по-другому. не вижу проблемы.

Написать комментарий
Пожалуйста, воздержитесь от посылки спама.
Сообщения, содержащие гиперссылки, проходят премодерацию.
Представьтесь:
Вы робот?
Сообщение:

© phpfaq.ru, 2010
Rambler's Top100 0.024 sec.