Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: редактирование уже записанных в БД данных. Помогите пожалуйсто....
 
 автор: nek-v   (25.09.2008 в 11:17)   письмо автору
 
 

День добрый граждане.
Есть вот такой адский скрипт:
<form method="post" action="add.php?act=add">   
<?php   
$num_on_row 
7
$num 175
$iter $num + ($num_on_row - ($num $num_on_row)); 
print 
'<table border="1" align="center" width="" cellpadding="0" cellspacing="0">
      <tr><td colspan="7" align="center"><b>Название блюда</b></td></tr>
      <tr><td colspan="7"><textarea name="name_blud" cols="100"></textarea></td></tr>
      <tr>
      <td rowspan="2"><b>Наименование продуктов</b></td>
      <td colspan="2">1 порция</td>
      <td>Б</td>
      <td>Ж</td>
      <td>У</td>
      <td>Калл.</td>
      </tr>
   <tr><td>Брутто</td><td>Нетто</td></tr>'

for(
$i=1;$i<=$iter;$i++)   
{   
$ost $i $num_on_row
if(
$ost ==1) print '<tr>'
print 
'<td>'.(($i <= $num)  ? '<input '.(($ost ==1) ? '' 'size="6"  ').'type="text" value="-" name="col_[]" />' '').'</td>';   
if(
$ost ==0) print '</tr>'
}   
print 
'<tr><td colspan="7" align="center"><b>Описание процесса приготовления</b></td></tr>
       <tr><td colspan="7" align="center"><textarea name="opisanie" cols="100"></textarea></td></tr>
        <tr><td colspan="3" align="center">№ рецепта</td><td colspan="3" align="center">Рецептурник</td><td><input type="reset" value="Очистить" onclick="return confirm (\'Вы уверены что хотите очистить форму?\')"/></td></tr>
        <tr><td colspan="3" align="center"><input type="text" name="num"/></td><td colspan="3" align="center"><input type="text" name="rec"/></td><td><input type="submit" value="Записать" mame="add" onclick="return confirm (\'Вы уверены что все правильно заполнено?\')"/></td></tr></table>'

?>    
</form>

это дело генерирует в цикле форму на 170 (или около) того полей.
Генерирует успешно и красиво.
Вот собственно обработчик формы:
<?php
if(empty($_POST['add'])){
require
'../conf/db.php';

if(
is_array($_POST['col_'])){
     
$sql "INSERT INTO `1blud` SET ";
     foreach(
$_POST['col_'] as $key=>$value){
     
$sql .= " `col_".$key."` = '".$value."',";
}
}
@
$sql .= " `name_blud` = '".$_POST['name_blud']."', "." `opisanie` = '".$_POST['opisanie']."',"."`num` = '".$_POST['num']."',"."`rec` = '".$_POST['rec']."';";
mysql_query($sql) or die("ERROR!<br/>".mysql_error());
header("location: index.php");
}else{
header("location: index.php");
?>

обрабатывает тоже так как нужно.
Вопрос собственно в том как это редактировать?
Выводить как то в такую же форму,но как?
Че то я даже не знаю с какого бока подлезть ....
Натолкните на мысль что ли....

  Ответить  
 
 автор: Valick   (25.09.2008 в 11:40)   письмо автору
5.7 Кб
 
   для: nek-v   (25.09.2008 в 11:17)
 

Посмотрите архив

  Ответить  
 
 автор: nek-v   (25.09.2008 в 18:19)   письмо автору
 
   для: Valick   (25.09.2008 в 11:40)
 

архив посмотрел,нашел много чего интересного,но мало подходящего к моей ситуации.

  Ответить  
 
 автор: sim5   (25.09.2008 в 18:24)   письмо автору
 
   для: nek-v   (25.09.2008 в 18:19)
 

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

  Ответить  
 
 автор: nek-v   (25.09.2008 в 18:28)   письмо автору
 
   для: sim5   (25.09.2008 в 18:24)
 

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

  Ответить  
 
 автор: sim5   (25.09.2008 в 18:37)   письмо автору
 
   для: nek-v   (25.09.2008 в 18:28)
 

Вы не ответили кто будет редактировать. Если автор этого рецепта, то автор должен быть авторизован и может редактировать только свое. Ну а в остальном какая может быть проблема. Рецепты как-то у вас же разделены по категориям. Значит можно выбрать из категории нужный рецепт и вывести в точно такую же форму в какой она и добавляется, только после редактирования не INSERT, а UPDATE соответствующей записи (по ID).

  Ответить  
 
 автор: nek-v   (25.09.2008 в 18:51)   письмо автору
 
   для: sim5   (25.09.2008 в 18:37)
 

Там нет авторизаций.
Рецепты пишет один человек.
По категориям они естественно разбиты.
Я просто чет не сооброжу куда в тот запрос WHERE `id` прикрутить, ибо код не весь мой....

  Ответить  
 
 автор: sim5   (25.09.2008 в 18:59)   письмо автору
 
   для: nek-v   (25.09.2008 в 18:51)
 

У вас как связаны категории рецептов и сами рецепты? У вас, по идее, должны быть категории, которые имеют свой уникальный ID, и это просто обеспечить полем с автоинкрементом. Сами рецепты также должны иметь такое поле, и поле ID родителя, то есть по которому определяется принадлежность рецепта к той или иной категории.
Некто "Х" получает список рецептов некой категории (например, через меню) у которых есть ссылка "Редактировать", которая в свою очередь должна указывать ID рецепта, по которому вы находите его в базе и выводите в форму для редактирования. По этому же ID обновляете запись после редактирования.

  Ответить  
 
 автор: nek-v   (25.09.2008 в 19:05)   письмо автору
 
   для: sim5   (25.09.2008 в 18:59)
 

нет. все гораздо проще)))
тупо на каждую категорию своя папка с идентичным скриптом и отдельной таблицей в бд

  Ответить  
 
 автор: sim5   (25.09.2008 в 19:10)   письмо автору
 
   для: nek-v   (25.09.2008 в 19:05)
 

Это не проще, это глупее.

  Ответить  
 
 автор: nek-v   (25.09.2008 в 19:14)   письмо автору
 
   для: sim5   (25.09.2008 в 19:10)
 

когда у тебя есть только один день на создание чего либо подобного при минимальных знаниях
как то не особо думается об "умном" программировании.((

  Ответить  
 
 автор: sim5   (25.09.2008 в 19:30)   письмо автору
 
   для: nek-v   (25.09.2008 в 19:14)
 

Понимаете, вам кажется, что вы "упростили себе жизнь", на самом деле вы ее усложняете. Например, вы можете вывести весь список рецептов некой категории. И пусть даже в этой категории не будет рецептов с одинаковым названием, по которому вы можете обновлять запись (идентификация в таблице). Но если вам во время редактирования придется изменить название рецепта, например, в нем была допущена ошибка, то какую запись в таблице вы будете обновлять? Вы надеетесь на номер? Можно, но ведь номер тоже у вас указывает автор, а значит и тут может произойти сбой.
Один день, это не оправдание для необдуманной структуры таблиц. Именно от этой структуры во многом будет определятся ваш код. Надо было заглянуть в раздел MySQL, почитать...

  Ответить  
 
 автор: nek-v   (25.09.2008 в 19:48)   письмо автору
15.1 Кб
 
   для: sim5   (25.09.2008 в 19:30)
 

sim5 поверьте, я могу вывести и вывожу список категорий и список рецептов в нем.
Есть у меня дурная привычка в любую создоваемую мной таблицу, совать уникальное автоинкрементное id (глядишь и сгодится:)))
Каждая запись имеет свой id и при выводе списка рецептов я ореинтируюсь именно по нем.
Я просто не могу (ну блин не доходит до меня) сгенерировать ТУ ЖЕ ФОРМУ но с готовым рецептом из БД обращаясь по id!
форма генерировалась циклом,впрочем как и записывалась.
Как всунуть вывод из бд в тот же цикл я и не пойму((((((



P.S. Дамп в приложенном файле

  Ответить  
 
 автор: sim5   (25.09.2008 в 19:54)   письмо автору
 
   для: nek-v   (25.09.2008 в 19:48)
 

Ну если есть уникальные ID, то какие проблемы? Получаете весть список рецептов категории. У каждого рецепта ссылка, в которой есть параметр, например, id=12. Получая этот GET параметр, получаете по нему из таблицы все поля рецепта, которые надо редактировать и выводите в форму. В этой форме также добавляете скрытое поле со значеним этого ID. По этому ID и обновите запись с уникальным номером 12. Разница форм только в том, что в первом случае вы выводите поля формы пустыми, во втором случае заполненные значениями полученными из базы. В чем собственно трудность?

  Ответить  
 
 автор: nek-v   (25.09.2008 в 20:08)   письмо автору
 
   для: sim5   (25.09.2008 в 19:54)
 

мда.....
как видно из кода формы запросов там нет никаких.
просто форма.
я не могу упрятать запрос и вывод в код этой формы(((((((((((

  Ответить  
 
 автор: sim5   (25.09.2008 в 20:14)   письмо автору
 
   для: nek-v   (25.09.2008 в 20:08)
 

Вы кроме того, что в связи с одним днем запихали все в разные таблицы и т.д., вы еще хотите изучить РНР и MySQL за один день?

  Ответить  
 
 автор: nek-v   (25.09.2008 в 20:23)   письмо автору
 
   для: sim5   (25.09.2008 в 20:14)
 

ну не за один конечно....
Запись выборку редактирование и удаление(по части SQL запросов) я уж умею делать.
да и вывод вроде тож.
sim5 вы здесь не первый день, да и опыта не мало я думаю.
Можете показать пример чего либо подобного?

  Ответить  
 
 автор: sim5   (25.09.2008 в 20:35)   письмо автору
 
   для: nek-v   (25.09.2008 в 20:23)
 

Пример чего? Если вы знаете как делать выборку из базы значений, а также значений по условию, так какая проблема? Я вам уже рассказал все, как можно сделать, пишите. Я не знаю каким образом у вас пользователь получает все рецепты категорий, но начинайте с этого. Некто кто редактирует все, выбирает в меню "Редактировать", затем категорию и получает список рецептов из которого может выбрать необходимый для редактирования, ну и делее, что я уже писал. Вы что хотите чтобы я весь интерфейс написал для вас? Я этого делать не буду, хотя бы потому, как многого не знаю чего у вас там и как все взаимодействует.
Что касается непосредственно выбора рецепта для редатирования, то напишите единственный запрос для рецепта, например, id=5. Если все поля редактируются, значит получайте все поля, если нет, то только необходимые. Выводите форму - точно такую же какая у вас для добавления рецептов (может быть с меньшим числом полей, если не все редактируются), но атрибутам value полей этой формы присваивайте соответствующие значения полей из таблицы. Знаете как запрос делать - пишите, знаете как форму выводить, выводите... Будут ошибки, помогут исправить, но а догадываться как все это у вас выглядит никто ведь не будет.

  Ответить  
 
 автор: nek-v   (25.09.2008 в 20:54)   письмо автору
 
   для: sim5   (25.09.2008 в 20:35)
 

хм...
логично...(((
чтож,спасибо за помошь....

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования