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

Форум PHP

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

 

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

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

тема: другие новости по теме 3
 
 автор: hitball   (12.02.2010 в 19:35)   письмо автору
 
 

ну все, я совсем потерялась

таблица единиц измерения units (id, unitname)


CREATE TABLE `units` ( 
  `id` int(11) NOT NULL auto_increment, 
  `unitname` varchar(255) NOT NULL, 
  PRIMARY KEY  (`id`), 
 UNIQUE `unitname`(`unitname`) 
);


изменить таблицу связки, добавив в нее столбик id_unit и столбик qty количества ингредиента.
это поля INT ?

а таблицу book_eda не надо изменять? из нее же скриптом приведенным ниже переносится ключевые слова в Таблицу key_eda

<? for($res my("SELECT * FROM book_eda"); $row mysql_fetch_assoc($res); )  
{  
    
$id $row['id'];  
    
$list explode(','$row['ingridient']);  
    foreach(
$list as $word)   
        
add_key(trim($word), $id"key_eda""book_eda_key");  
}   

function 
add_key($word$id$keytable$linktable)  
{  
    
$word "'".mysql_escape_string($word)."'";  
    
$id intval($id);  
    
$key_id myi("INSERT IGNORE INTO `$keytable` (`word`) VALUES ($word)");  
    if(!
$key_id)   
        
$key_id my1("SELECT id FROM `$keytable` WHERE `word` = $word");  
    
$key_id intval($key_id);  
    
my("INSERT INTO `$linktable` (key_id, obj_id) VALUES($key_id$id)");  
?> 


<?php   
function my($sql)  
{  
    
$res mysql_query($sql);  
    if(!
$res)  
        exit(
"error in: <hr> ".nl2br(htmlspecialchars($sql))."<hr>".mysql_error());  
    return 
$res;  
}  
function 
my0($sql)  
   {    
$res my($sql);    return  mysql_num_rows($res) ?  mysql_fetch_array($res) : 0;}  

function 
my1($sql)  
   {    
$row my0($sql);   return  is_array($row)? $row[0] : 0; }  

function 
myi($sql)  
  {    
$res my($sql);     return  mysql_affected_rows() ? mysql_insert_id() : 0; }  
?> 


сейчас аккуратно?

   
 
 автор: Trianon   (12.02.2010 в 19:44)   письмо автору
 
   для: hitball   (12.02.2010 в 19:35)
 

сейчас аккуратно.

Этот скрипт, который Вы показываете, имеет весьма локальное предназначение.
Разбить записи ключевых слов из неподобающего формата хранения и сформировать содержимое таблицы связки по ключевым словам.
Один раз разбить и сформировать.
После чего столбик этот (где значения ключей через запятую) выкинуть вообще.

Таблицу количества ингредиентов в рецепте вполне возможно построить похожим образом.
Но потребуется какая никакая ручная доводка. Хотя бы потому что единицы измерения в чисто человеческом тексте моггут варьироваться. ст.ложка и столовых ложек к примеру.
Всё же на автомат с искусственным интеллектом этот скрипт не тянет.

   
 
 автор: Trianon   (12.02.2010 в 20:13)   письмо автору
 
   для: Trianon   (12.02.2010 в 19:44)
 

тегами [url] зря брезгуете

   
 
 автор: hitball   (12.02.2010 в 20:15)   письмо автору
 
   для: Trianon   (12.02.2010 в 20:13)
 

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=67298&page=1

   
 
 автор: hitball   (12.02.2010 в 20:05)   письмо автору
 
   для: hitball   (12.02.2010 в 19:35)
 

прошлая тема http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=67298&page=1
эта я для себя, чтобы не потеряться)

   
 
 автор: hitball   (12.02.2010 в 20:13)   письмо автору
 
   для: hitball   (12.02.2010 в 20:05)
 

этот скрипт я уже использовала и он мне наполнил таблицы, я его убрала, но как появляются эти значения в столбиках id_unit и qty?

изменить таблицу связки, добавив в нее столбик id_unit и столбик qty количества ингредиента.

это поля INT ?
как значения будут попадать из таблицы book_eda в таблицу связки book_eda_key???

   
 
 автор: Trianon   (12.02.2010 в 20:27)   письмо автору
 
   для: hitball   (12.02.2010 в 20:13)
 

qty - очевидно, это поле FLOAT
Иначе полкило сметаны будет не задать.
а id - INT(11) как обычно.

>как значения будут попадать из таблицы book_eda в таблицу связки book_eda_key???

Почему именно из этой таблицы?
Какая, в сущности, разница?
Захотят - попадут...
Попали же они в саму таблицу?

   
 
 автор: hitball   (12.02.2010 в 21:11)   письмо автору
 
   для: Trianon   (12.02.2010 в 20:27)
 

талицу units создала

теперь таблица book_eda_key имеет такой вид


key_id    int(11)     AUTO_INCREMENT primary                          
obj_id    int(11)                                       
id_unit    int(11)                                   
qty    float

   
 
 автор: Trianon   (12.02.2010 в 21:22)   письмо автору
 
   для: hitball   (12.02.2010 в 21:11)
 

key_id вовсе не autoincrement и уж всяко не primary key.
пишите в одном стиле - unit_id
По большому счету первичным ключом можно сделать составной из трех чужих -
PRIMARY KEY (obj_id, key_id, unit_id)
Кстати , по смыслу они скорее (recept_id, ingred_id, unit_id)

   
 
 автор: hitball   (12.02.2010 в 21:30)   письмо автору
 
   для: Trianon   (12.02.2010 в 21:22)
 

исправила unit_id
>Кстати , по смыслу они скорее (recept_id, ingred_id, unit_id)
к тем названиям я уже привыкла, можно их оставить как были?

unit_id обязательно делать primari? что-то у меня не получается, надо заново создать таблицу?

   
 
 автор: Trianon   (12.02.2010 в 21:36)   письмо автору
 
   для: hitball   (12.02.2010 в 21:30)
 

>исправила unit_id
>>Кстати , по смыслу они скорее (recept_id, ingred_id, unit_id)
> к тем названиям я уже привыкла, можно их оставить как были?

Вы у меня спрашиваете, можно ли в Вашей базе баддых в Вашей таблице оставить названия Ваших полей, к которым Вы привыкли?


>unit_id обязательно делать primari?
Я такого не советовал.

   
 
 автор: hitball   (12.02.2010 в 21:41)   письмо автору
 
   для: Trianon   (12.02.2010 в 21:36)
 

По большому счету первичным ключом можно сделать составной из трех чужих - 
PRIMARY KEY (obj_id, key_id, unit_id)


это я не правильно поняла)

   
 
 автор: Trianon   (12.02.2010 в 22:08)   письмо автору
 
   для: hitball   (12.02.2010 в 21:41)
 

На самом деле был слегка неправ.
первичным ключом всё же разумно сделать составную пару PRIMARY KEY (obj_id, key_id)
unit_id - не определяющее первичную ключевую зависимость поле.

   
 
 автор: hitball   (12.02.2010 в 22:15)   письмо автору
 
   для: Trianon   (12.02.2010 в 22:08)
 

>первичным ключом всё же разумно сделать составную пару PRIMARY KEY (obj_id, key_id)
так и есть ведь
>unit_id - не определяющее первичную ключевую зависимость поле.
это не понятно(

   
 
 автор: Trianon   (12.02.2010 в 22:37)   письмо автору
 
   для: hitball   (12.02.2010 в 22:15)
 

не может быть двух разных применений ингредиента А в рецепте Б , отличающихся лишь количеством (или единицей измерения этого количества).
Более того. И количество и ед.изм могут отсутствовать (null) ( что называется, соль - по вкусу)

   
 
 автор: hitball   (12.02.2010 в 22:40)   письмо автору
 
   для: Trianon   (12.02.2010 в 22:37)
 

какое значение нужно задать unit_id ?

   
 
 автор: Trianon   (12.02.2010 в 22:48)   письмо автору
 
   для: hitball   (12.02.2010 в 22:40)
 

id из таблицы units

   
 
 автор: hitball   (12.02.2010 в 22:53)   письмо автору
 
   для: Trianon   (12.02.2010 в 22:48)
 

мне совершенно не поятно как будут заполнять эти новые столбцы(

   
 
 автор: Trianon   (12.02.2010 в 22:55)   письмо автору
 
   для: hitball   (12.02.2010 в 22:53)
 

В таблице units Вы можете заполнить их предварительно.

Можно также перепривязать единицу измерения не к связке, а к ингридиенту.
Правда тогда тяжелее будет, если в одном рецепте понадобится полкило муки, а в другом - полтора стакана. Но не смертельно.

   
 
 автор: hitball   (13.02.2010 в 00:15)   письмо автору
 
   для: Trianon   (12.02.2010 в 22:55)
 

хорошо. допустим я буду вручную записывать единицы измерения, как мне связать таблицы units и bool_eda_key скриптом?

я здесь подумала, а не легче ли будет создать в таблице book_eda еще одно поле inger и вставлять туда ингридиенты без единиц измерения? то есть выводить пользователям просто перечень ингридиентов с измерениями из графы ingridient, а в таблицу key_eda заносить значения из графы inger.
Если помните, у меня же нет админки и нормально соединять-выводить значения ингридиентов мне кажеться будет не реально(
Вам это, конечно, покажеться газенвагеном, да?

   
 
 автор: Trianon   (13.02.2010 в 00:37)   письмо автору
 
   для: hitball   (13.02.2010 в 00:15)
 

мне кажется, что если возникнет нужда в админке, Вы её напишете.
Также как и со скриптом.

   
 
 автор: hitball   (13.02.2010 в 00:48)   письмо автору
 
   для: Trianon   (13.02.2010 в 00:37)
 

если бы я сама могла написать, то не мучила бы Вас уже неделю

Так, что? Как думаете, можно я создам еще одну графу в таблице book_eda?

Закончу Вас на сегодня пытать, спокойной ночи)

   
 
 автор: Trianon   (13.02.2010 в 01:08)   письмо автору
 
   для: hitball   (13.02.2010 в 00:48)
 

мне не жалко.

   
 
 автор: hitball   (13.02.2010 в 11:11)   письмо автору
 
   для: Trianon   (13.02.2010 в 01:08)
 

Доброе утро)
Добавила строку inger в book_eda, заполнила в некоторых рецептах эту графу и обновила таблицы с ключевыми словами и связки.
жду дальнейших указаний)

   
 
 автор: oliss   (13.02.2010 в 00:44)   письмо автору
 
   для: hitball   (13.02.2010 в 00:15)
 

Если уж совсем нормализовывать таблицы ,то надо ещё создавать таблицу со значениями и таблицу с размерностью ингредиентов ,но это уже полное КЮ ( хотя в теории и правильно ).

   
 
 автор: oliss   (12.02.2010 в 22:04)   письмо автору
 
   для: hitball   (12.02.2010 в 21:30)
 


Таблица БЛЮДА
id  p_id   title
1    0     Салаты
2    1     Салат "Капрезе"
3    1     Салат с креветками и сыром
4    0     Десерты
5    4     Грушевый пирог
6    4     Яблоки, печенные с изюмом и орехами


Таблица ИНГРЕДИЕНТЫ
id    name_ingr
 1    помидоры
 2    свежемолотый перец
 3    бальзамический уксус
 4    соль
 5    сыр 
 6    креветки
 7    лимон
 8    оливки
 
Таблица связи Ингредиентов и Блюд
id_bludo   id_ ingr
 2           1  // Салат "Капрезе"(помидоры)    
 2           2  // Салат "Капрезе"(свежемолотый перец)
 2           3  // Салат "Капрезе"(бальзамический уксус)
 2           4  // Салат "Капрезе",Салат с креветками и сыром(это соль которая применяется в обеих салатах)
 3           4  // Салат "Капрезе",Салат с креветками и сыром(это соль которая применяется в обеих салатах)
 3           5  // Салат с креветками и сыром(сыр )
 3           6  // Салат с креветками и сыром(креветки)
 3           7  // Салат с креветками и сыром(лимон)

   
 
 автор: Trianon   (12.02.2010 в 22:07)   письмо автору
 
   для: oliss   (12.02.2010 в 22:04)
 

У нас всё то же самое.
Но по таблице связи можно получить информацию о том, сколько того или иного продукта необходимо для приготовления того или иного блюда.

   
 
 автор: oliss   (12.02.2010 в 22:15)   письмо автору
 
   для: Trianon   (12.02.2010 в 22:07)
 

Я знаю,просто более в наглядной форме :)
Да ,нужна четвёртая таблица с размерностью ингредиентов ,т.е. добавить в таблицу связей ещё одно поле (простите ,позднее зажигание:).

   
 
 автор: hitball   (15.02.2010 в 14:50)   письмо автору
 
   для: oliss   (12.02.2010 в 22:15)
 

докладываю
Добавила строку inger в book_eda, заполнила в некоторых рецептах эту графу и обновила таблицы с ключевыми словами и связки.
жду дальнейших указаний)

<? 
echo "<p  class='post_comment'>Выбор ингридиентов:</p><pre>"
$result3 mysql_query ("SELECT * FROM key_eda",$db); 
while (
$myrow3 mysql_fetch_assoc($result3)) 

  
printf (var_dump($myrow3));  
}
?>  


как мне здесь задавать переменную? писать номер id ингридиента? или как?

<?  
echo "<p  class='post_comment'>Выбор ингридиентов:</p>";  
$result3 mysql_query ("SELECT * FROM key_eda",$db);  
while (
$myrow3 mysql_fetch_assoc($result3))  
{  
  
printf ("<div class='post_div'> 
<p class='post_comment_add'><strong>%s </strong> 
</div> 
"
,$myrow3["??????????"]);   

?>


выдает
array(2) {
  ["id"]=>
  string(1) "1"
  ["word"]=>
  string(6) "свeкла"
}
array(2) {
  ["id"]=>
  string(1) "2"
  ["word"]=>
  string(7) "морковь"
}
array(2) {
  ["id"]=>
  string(1) "3"
  ["word"]=>
  string(3) "лук"

   
 
 автор: oliss   (15.02.2010 в 15:03)   письмо автору
 
   для: hitball   (15.02.2010 в 14:50)
 

Забыть о функции printf( в данном случае), есть echo ... . ;
Весь выводимый массив можно посмотреть через print_r( $myrow3)
[ чувствуется твёрдая рука Евгения Попова :) ]

   
 
 автор: Trianon   (15.02.2010 в 15:45)   письмо автору
 
   для: oliss   (15.02.2010 в 15:03)
 

Очень зря между прочим.
В функциях форматного вывода ничего плохого нет.
А структурировать потоки данных с их помощью подчас легче.

Это, самом собой, не повод печатать её прямой результат вызова var_dump :)

   
 
 автор: hitball   (15.02.2010 в 15:56)   письмо автору
 
   для: Trianon   (15.02.2010 в 15:45)
 

так как мне здесь задавать переменную? писать номер id ингридиента? или как?

<?   
echo "<p  class='post_comment'>Выбор ингридиентов:</p>";   
$result3 mysql_query ("SELECT * FROM key_eda",$db);   
while (
$myrow3 mysql_fetch_assoc($result3))   
{   
  
printf ("<div class='post_div'>  
<p class='post_comment_add'><strong>%s </strong>  
</div>  
"
,$myrow3["??????????"]);    
}  
?>

   
 
 автор: Trianon   (15.02.2010 в 21:44)   письмо автору
 
   для: hitball   (15.02.2010 в 15:56)
 

А какое поле Вы хотите вывести из таблицы key_eda в этом месте - внутри тега <strong></strong>?
Имя этого поля и пишите.

Смотрите внимательно , что получается.
строка: $result3 = mysql_query ("SELECT * FROM key_eda",$db);
сервер сайта обращается с SELECT-запросом к серверу SQL.
Последний выдает некоторый ответ, который запоминается в переменной $result3

Поскольку SQL-ответ для запроса SELECT может состоять из множества строк, то все (или некоторые из) эти строки нужно вытащить.

строка: while ($myrow3 = mysql_fetch_assoc($result3))
функция mysql_fetch_assoc пытается вытащить очередную строку, и положить её в виде массива полей в переменную $myrow3. Если ей это удается, выполняется очередной раз тело цикла while

в теле цикла у Вас printf по форматной строке выводит наружу значение элемента массива $myrow3 .
Ключ элемента должен соответствовать имени поля в таблице.

   
 
 автор: hitball   (15.02.2010 в 22:03)   письмо автору
 
   для: Trianon   (15.02.2010 в 21:44)
 

теперь моя страница выгладит так и на ней просто выводится все ингридиенты
Выбор ингридиентов:
свeкла 
морковь 
лук



<?    
echo "<p  class='post_comment'>Выбор ингридиентов:</p>";    
$result3 mysql_query ("SELECT * FROM key_eda",$db);    
while (
$myrow3 mysql_fetch_assoc($result3))    
{    
  
printf ("<div class='post_div'>   
<p class='post_comment_add'><strong>%s </strong>   
</div>   
"
,$myrow3["word"]);     
}   
?>
           
<p><span >Выберите  ингредиенты:</span>
<form action="obrabotchik.php" method="GET"></p> 
<input type=checkbox name="<?php intval($myrow3['id'])?>" /> <?php echo htmlspecialchars($myrow3['word'])?></input >
    <input class="button" name="submit" value="Поиск" type="submit"> 
</form>

   
 
 автор: hitball   (16.02.2010 в 11:25)   письмо автору
 
   для: hitball   (15.02.2010 в 22:03)
 

напомню наш разговор из прошлой темы
эта касается обработчика? ольшая половина из того, что вы объяснили мне совершенно не понятна(

2) значения массива $_REQUEST['ingr'] делаете целочисленными (foreach ) и складываете в массив , к примеру $ingredients
3) делаете из массива список через запятую $ingrlist = implode(',', $ingredients)
4) формируете запрос вида 
SELECT be.*  
 FROM book_eda be  
 JOIN book_eda_key bek ON be.id = bek.obj_id 
WHERE bek.key_id  IN(список)
где список - значение переменной $ingrlist

   
 
 автор: oliss   (16.02.2010 в 18:00)   письмо автору
 
   для: hitball   (15.02.2010 в 22:03)
 

Как один из вариантов вывода данных в форму,не самый лучший (проще оформить вывод функцией)
<?php 
$ingr
='';
$r mysql_query ("SELECT `id` ,`word` FROM `key_eda` ",$db);    
while (
$mr mysql_fetch_assoc($r))    
{    
$ingr.='<label title="'.htmlspecialchars($mr['word']).'"><input name="ingredient['.intval($mr['id']).']" value="1"  type="checkbox">'.htmlspecialchars($mr['word']).'</input ></label><br/>';
}
?>
<span >Выберите  ингредиенты</span>
<form action="" method="post">
<?php echo $ingr?>
<input class="button" name="submit" value="Поиск" type="submit"> 
</form>
           
<?php 
echo'<pre>';
print_r($_POST);
?>

ИМХО ,идеально бы было отсортировать ингредиенты по алфавиту ,но это чуть нагрузит запрос.

   
 
 автор: hitball   (16.02.2010 в 18:31)   письмо автору
 
   для: oliss   (16.02.2010 в 18:00)
 

спасио за то, что отозвались, а то я здесь целый день караулю когда Вы или Трианон появитесь)
вставила код на страницу)

появился красивый список всех ключевых слов (ура), а под ним
Array
(
)            
error in: 

что это значит? что мне делать дальше?

   
 
 автор: oliss   (16.02.2010 в 18:37)   письмо автору
 
   для: hitball   (16.02.2010 в 18:31)
 

В начало скрипта (в самом верху кода) вставьте error_reporting(E_ALL);
и опишите ошибку
И посмотрите ХТМЛ код где косяк.

   
 
 автор: hitball   (16.02.2010 в 18:40)   письмо автору
 
   для: oliss   (16.02.2010 в 18:37)
 

выдает только
Array
(
)

   
 
 автор: oliss   (16.02.2010 в 18:44)   письмо автору
 
   для: hitball   (16.02.2010 в 18:40)
 

(возможно проблема с кавычками.)
Если массив пуст ,значить форма ничего не передаёт 9выложите ХТМЛ код что получается в браузере.

   
 
 автор: hitball   (16.02.2010 в 18:49)   письмо автору
 
   для: oliss   (16.02.2010 в 18:44)
 

 
<span >Выберите  ингредиенты</span> 
<form action="" method="post"> 
<label title="свeкла"><input name="ingredient[1]" value="1"  type="checkbox">свeкла</input ></label><br/><label title="морковь"><input name="ingredient[2]" value="1"  type="checkbox">морковь</input ></label><br/><label title="лук"><input name="ingredient[3]" value="1"  type="checkbox">лук</input ></label><br/><label title="картошка"><input name="ingredient[4]" value="1"  type="checkbox">картошка</input ></label><br/><label title="капуста"><input name="ingredient[5]" value="1"  type="checkbox">капуста</input ></label><br/><label title="помидоры"><input name="ingredient[6]" value="1"  type="checkbox">помидоры</input ></label><br/><label title="чeснок"><input name="ingredient[7]" value="1"  type="checkbox">чeснок</input ></label><br/><label title="сало"><input name="ingredient[8]" value="1"  type="checkbox">сало</input ></label><br/><label title="картофель"><input name="ingredient[9]" value="1"  type="checkbox">картофель</input ></label><br/><label title="томатный соус"><input name="ingredient[10]" value="1"  type="checkbox">томатный соус</input ></label><br/><label title="папперони"><input name="ingredient[11]" value="1"  type="checkbox">папперони</input ></label><br/><label title="грибы"><input name="ingredient[12]" value="1"  type="checkbox">грибы</input ></label><br/><label title="сыр"><input name="ingredient[13]" value="1"  type="checkbox">сыр</input ></label><br/><label title="масло растительное"><input name="ingredient[14]" value="1"  type="checkbox">масло растительное</input ></label><br/><label title="помидор"><input name="ingredient[15]" value="1"  type="checkbox">помидор</input ></label><br/><label title="свекла"><input name="ingredient[16]" value="1"  type="checkbox">свекла</input ></label><br/><label title="маслины"><input name="ingredient[17]" value="1"  type="checkbox">маслины</input ></label><br/><label title="мука пшеничная"><input name="ingredient[18]" value="1"  type="checkbox">мука пшеничная</input ></label><br/><label title="сметана"><input name="ingredient[19]" value="1"  type="checkbox">сметана</input ></label><br/><label title="зелень"><input name="ingredient[20]" value="1"  type="checkbox">зелень</input ></label><br/><label title="рыба"><input name="ingredient[21]" value="1"  type="checkbox">рыба</input ></label><br/><label title="Баранина"><input name="ingredient[22]" value="1"  type="checkbox">Баранина</input ></label><br/><label title="маргарин"><input name="ingredient[23]" value="1"  type="checkbox">маргарин</input ></label><br/><label title="крупа маш"><input name="ingredient[24]" value="1"  type="checkbox">крупа маш</input ></label><br/><label title="рис"><input name="ingredient[25]" value="1"  type="checkbox">рис</input ></label><br/><label title="сельдерей"><input name="ingredient[26]" value="1"  type="checkbox">сельдерей</input ></label><br/><label title="лимон"><input name="ingredient[27]" value="1"  type="checkbox">лимон</input ></label><br/><label title="чеснок"><input name="ingredient[28]" value="1"  type="checkbox">чеснок</input ></label><br/><label title="Щавель"><input name="ingredient[29]" value="1"  type="checkbox">Щавель</input ></label><br/><label title="шпинат"><input name="ingredient[30]" value="1"  type="checkbox">шпинат</input ></label><br/><label title="мука"><input name="ingredient[31]" value="1"  type="checkbox">мука</input ></label><br/><label title="масло"><input name="ingredient[32]" value="1"  type="checkbox">масло</input ></label><br/><label title="лавровый лист"><input name="ingredient[33]" value="1"  type="checkbox">лавровый лист</input ></label><br/><label title="перец черный молотый"><input name="ingredient[34]" value="1"  type="checkbox">перец черный молотый</input ></label><br/> 
<input class="button" name="submit" value="Поиск" type="submit">  
</form> 
            
<pre>Array
(
)

   
 
 автор: oliss   (16.02.2010 в 18:56)   письмо автору
 
   для: hitball   (16.02.2010 в 18:49)
 

А вы пробовали выбирать чекбоксы ,а потом нажать на капу
Array
(
    [ingredient] => Array
        (
            [1] => 1
            [3] => 1
            [6] => 1
            [9] => 1
            [14] => 1
            [15] => 1
            [23] => 1
        )

    [submit] => Поиск
)


В массиве [ingredient] будут выбранные вами чекбоксы(id ингредиентов)

   
 
 автор: hitball   (16.02.2010 в 18:58)   письмо автору
 
   для: oliss   (16.02.2010 в 18:56)
 

уже попробовала
Array
(
    [ingredient] => Array
        (
            [3] => 1
            [8] => 1
            [13] => 1
        )

    [submit] => Поиск
)

   
 
 автор: oliss   (16.02.2010 в 19:05)   письмо автору
 
   для: hitball   (16.02.2010 в 18:58)
 

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

   
 
 автор: hitball   (16.02.2010 в 19:41)   письмо автору
 
   для: oliss   (16.02.2010 в 19:05)
 

я оработчик делала только для комментариев, а когда делала до конца не поняла...
вот что вышло... чудо не рабочее

<? include ("blocks/bd.php");
if (isset(
$_POST['word'])) 
{
$word $_POST['word'];}
if (isset(
$sub_com))
{
if (isset(
$word)) {trim ($word);}
else {
$word "";}
{
exit (
"<p>Вы ввели не всю информацию, вернитесь назад и заполните все поля. 
<br> <input name='back' type='button' value='Назад' onclick='javascript:self.back();'>"
);
}
$word htmlspecialchars($word);
$result mysql_query ("select from book_key (title,description)
 VALUES
('
$word')",$db);
echo 
"<html><head>
<meta http-equiv='Refresh' content='0; URL=recept.php?id=
$id'>
</head></html>"
;
exit();
}
?>

   
 
 автор: oliss   (16.02.2010 в 19:49)   письмо автору
 
   для: hitball   (16.02.2010 в 19:41)
 

всё это выбросите и сделайте запрос к таблице блюда (используя таблицу связи блюдо--> ингредиенты ) где id ингредиентов вам известны (получаете из формы)
Используйте JOIN для объединения таблиц

   
 
 автор: hitball   (16.02.2010 в 20:02)   письмо автору
 
   для: oliss   (16.02.2010 в 19:49)
 

я так и чувствовала, что вы это скажите
вы про это говорите?

2) значения массива $_REQUEST['ingr'] делаете целочисленными (foreach ) и складываете в массив , к примеру $ingredients 
3) делаете из массива список через запятую $ingrlist = implode(',', $ingredients) 
4) формируете запрос вида  
SELECT be.*   
 FROM book_eda be   
 JOIN book_eda_key bek ON be.id = bek.obj_id  
WHERE bek.key_id  IN(список) 
где список - значение переменной $ingrlist


если да, то я не знаю
- как из
$_REQUEST['ingr'] делаете целочисленными (foreach ) и складываете в массив , к примеру $ingredients 
сделать массив
- и как именно должен выглядеть список, как корректно сделать список $ingrlist = implode(',', $ingredients)

   
 
 автор: oliss   (16.02.2010 в 21:51)   письмо автору
 
   для: hitball   (16.02.2010 в 20:02)
 

Не надо оперировать массивом $_REQUEST['ingr']
Вам же подсказали --массив $_POST
Ну, так напишите запрос ( JOIN -ов должно быть больше) ,включите логику :)

   
 
 автор: hitball   (17.02.2010 в 13:11)   письмо автору
 
   для: oliss   (16.02.2010 в 21:51)
 

так использовать post?
if (isset($_POST['word'])) {$word = $_POST['word']; if ($word == '') {unset($word);}}

а зачем join ольше они ведь и так соединяют 2 таблицы из которых необходимо вывести данные?
SELECT be.*  
  FROM book_eda be  
    JOIN book_eda_key bek ON be.id = bek.obj_id 
  WHERE bek.key_id  IN(список)


совершенно не понятно как вывести список...

   
 
 автор: hitball   (18.02.2010 в 00:04)   письмо автору
 
   для: hitball   (17.02.2010 в 13:11)
 

так?
foreach($_POST['word'] as $ID) {
if(mysql_query("select FROM `book_key` WHERE `id` = '".intval($ID)."';")) }

   
 
 автор: hitball   (01.03.2010 в 12:15)   письмо автору
 
   для: hitball   (18.02.2010 в 00:04)
 

Trianon, вопрос к Вам по старой теме "другие новости по теме"...

Я наконец-то переделала все поля kluch в своих 800 статьях. Сделала их более связными с другими статьями.
Попыталась заполнить таблицы key_2, articles_key с помощью Вашего скрипта единоразового вызова, но он вытянул данные из поля kluch только по 4 статьям... Почему так происходит?
<? for($res my("SELECT * FROM articles"); $row mysql_fetch_assoc($res); )   
{   
    
$id $row['id'];   
    
$list explode(','$row['kluch']);   
    foreach(
$list as $word)    
        
add_key(trim($word), $id"key_2""articles_key");   
}    

function 
add_key($word$id$keytable$linktable)   
{   
    
$word "'".mysql_escape_string($word)."'";   
    
$id intval($id);   
    
$key_id myi("INSERT IGNORE INTO `$keytable` (`word`) VALUES ($word)");   
    if(!
$key_id)    
        
$key_id my1("SELECT id FROM `$keytable` WHERE `word` = $word");   
    
$key_id intval($key_id);   
    
my("INSERT INTO `$linktable` (key_id, obj_id) VALUES($key_id$id)");   
?>  


<?php    
function my($sql)   
{   
    
$res mysql_query($sql);   
    if(!
$res)   
        exit(
"error in: <hr> ".nl2br(htmlspecialchars($sql))."<hr>".mysql_error());   
    return 
$res;   
}   
function 
my0($sql)   
   {    
$res my($sql);    return  mysql_num_rows($res) ?  mysql_fetch_array($res) : 0;}   

function 
my1($sql)   
   {    
$row my0($sql);   return  is_array($row)? $row[0] : 0; }   

function 
myi($sql)   
  {    
$res my($sql);     return  mysql_affected_rows() ? mysql_insert_id() : 0; }   
?>             

   
 
 автор: hitball   (02.03.2010 в 15:38)   письмо автору
 
   для: hitball   (01.03.2010 в 12:15)
 

проблема все еще висит, ПОЖАЛУЙСТА, ответьте мне, когда появиться возможность...

   
 
 автор: Trianon   (02.03.2010 в 22:20)   письмо автору
22.5 Кб
 
   для: hitball   (02.03.2010 в 15:38)
 

см самое первое сообщение в этой ветке. И аттач.

   
 
 автор: hitball   (02.03.2010 в 23:22)   письмо автору
 
   для: Trianon   (02.03.2010 в 22:20)
 

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

   
 
 автор: Trianon   (03.03.2010 в 01:33)   письмо автору
 
   для: hitball   (02.03.2010 в 23:22)
 

>я не понимаю почему так происходит

из-за поста (16.02.2010 в 18:49) где строки кода на экран не влазят.
Да, некоторые браузеры их переносят насильно.
Поэтому Вы этого и не видите.

>завести новую тему, да?
Если только из-за меня - не стоит.
Собственно, мне теперь не мешает.

   
 
 автор: hitball   (03.03.2010 в 10:15)   письмо автору
 
   для: Trianon   (03.03.2010 в 01:33)
 

Trianon, как это исправлять?

   
 
 автор: hitball   (04.03.2010 в 09:19)   письмо автору
 
   для: hitball   (03.03.2010 в 10:15)
 

Переделала все поля kluch в своих 800 статьях. Сделала их более связными с другими статьями.
Попыталась заполнить таблицы key_2, articles_key с помощью Вашего скрипта единоразового вызова, но он вытянул данные из поля kluch только по 4 статьям... Почему так происходит?
Вот этот код
<? for($res my("SELECT * FROM articles"); $row mysql_fetch_assoc($res); )   
{   
    
$id $row['id'];   
    
$list explode(','$row['kluch']);   
    foreach(
$list as $word)    
        
add_key(trim($word), $id"key_2""articles_key");   
}    

function 
add_key($word$id$keytable$linktable)   
{   
    
$word "'".mysql_escape_string($word)."'";   
    
$id intval($id);   
    
$key_id myi("INSERT IGNORE INTO `$keytable` (`word`) VALUES ($word)");   
    if(!
$key_id)    
        
$key_id my1("SELECT id FROM `$keytable` WHERE `word` = $word");   
    
$key_id intval($key_id);   
    
my("INSERT INTO `$linktable` (key_id, obj_id) VALUES($key_id$id)");   
?>  


<?php    
function my($sql)   
{   
    
$res mysql_query($sql);   
    if(!
$res)   
        exit(
"error in: <hr> ".nl2br(htmlspecialchars($sql))."<hr>".mysql_error());   
    return 
$res;   
}   
function 
my0($sql)   
   {    
$res my($sql);    return  mysql_num_rows($res) ?  mysql_fetch_array($res) : 0;}   

function 
my1($sql)   
   {    
$row my0($sql);   return  is_array($row)? $row[0] : 0; }   

function 
myi($sql)   
  {    
$res my($sql);     return  mysql_affected_rows() ? mysql_insert_id() : 0; }   
?>             


А с помощью скрипта, выводится название самого сообщения, под которым должен быть список похожик статей(((
<?
$sql 

SELECT t3.*  
  FROM articles_key t1 
    JOIN articles_key t2 ON t1.key_id = t2.key_id 
    JOIN articles t3 ON t2.obj_id = t3.id  
 WHERE t1.obj_id = "
. (int)($myrow['id']). " LIMIT 100
"


// echo "<hr><pre>".htmlspecialchars($sql)."</pre><hr>\r\n"; // эта строка будет показывать текст запроса 
$result46 mysql_query($sql,$db); 


if (!
$result46
{
echo 
"<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору late-maestro@ukr.net <br><strong>Код ошибки:</strong></p>";
exit (
mysql_error());
}
if (
mysql_num_rows($result46) > 0)
{
$myrow46 mysql_fetch_array($result46);
do
{
printf ("<div align='left'>
        
        <a class='h4' style='color:#7f817e; text-align:left; margin-left:23px; font-family:Tahoma; font-size:11px; font-weight:bold;' href='view_articles.php?id=%s'>%s</a><br></div>
"
,$myrow46["id"], $myrow46["title"]);
}
while (
$myrow46 mysql_fetch_array($result46));

}
else
{
echo 
"<p>Информация по запросу не может быть извлечена. В таблице нет записей.</p>";
exit();
}
?>

   
 
 автор: hitball   (05.03.2010 в 14:01)   письмо автору
 
   для: hitball   (04.03.2010 в 09:19)
 

Помогите мне, пожалуйста, когда у вас появится время...
Так хочеться, чтоб уже все получилось)

   
 
 автор: oliss   (05.03.2010 в 15:40)   письмо автору
 
   для: hitball   (05.03.2010 в 14:01)
 

Подождите,мне тут дочка заказала точно такой поиск рецептов, немного освобожусь сделаю её ,вам скину наброски,да пора избавляться от do while и mysql_fetch_array

   
 
 автор: hitball   (05.03.2010 в 16:41)   письмо автору
 
   для: oliss   (05.03.2010 в 15:40)
 

Вот спасибище гиганское) Буду с нетерпением ждать!

   
 
 автор: oliss   (05.03.2010 в 19:45)   письмо автору
 
   для: hitball   (05.03.2010 в 16:41)
 

Тут спасибом не отделаться,работать надо прикрепляю дампы таблиц которые нужны (даже не поленился вручную набить один соус :)

-- 
-- Структура таблицы `dishes`
-- 

CREATE TABLE `dishes` (
  `id_dis` int(10) unsigned NOT NULL auto_increment,
  `p_id_dis` int(10) unsigned default '0',
  `name_dis` varchar(255) default 'NOT NULL',
  PRIMARY KEY  (`id_dis`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='Таблица блюд' AUTO_INCREMENT=12 ;

-- 
-- Дамп данных таблицы `dishes`
-- 

INSERT INTO `dishes` VALUES (11, 1, 'Голландский соус');
INSERT INTO `dishes` VALUES (1, 0, 'Соусы');
INSERT INTO `dishes` VALUES (2, 0, 'Первые блюда');
INSERT INTO `dishes` VALUES (3, 0, 'Вторые блюда');
INSERT INTO `dishes` VALUES (4, 0, 'Салаты');
INSERT INTO `dishes` VALUES (5, 0, 'Закуски');
INSERT INTO `dishes` VALUES (7, 0, 'Десерты');
INSERT INTO `dishes` VALUES (8, 0, 'Напитки');
INSERT INTO `dishes` VALUES (9, 0, 'Запеканки');
INSERT INTO `dishes` VALUES (10, 0, 'Выпечка');


-- 
-- Структура таблицы `Ingredients`
-- 

CREATE TABLE `Ingredients` (
  `id_ingr` int(10) unsigned NOT NULL auto_increment,
  `name_ingr` varchar(255) NOT NULL default 'NOT NULL',
  PRIMARY KEY  (`id_ingr`),
  UNIQUE KEY `name_ingr` (`name_ingr`)
) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='Ингредиенты ( продукты )' AUTO_INCREMENT=15 ;

-- 
-- Дамп данных таблицы `Ingredients`
-- 

INSERT INTO `Ingredients` VALUES (1, 'Яйца');
INSERT INTO `Ingredients` VALUES (2, 'Лук');
INSERT INTO `Ingredients` VALUES (3, 'Картофель');
INSERT INTO `Ingredients` VALUES (4, 'Молоко');
INSERT INTO `Ingredients` VALUES (5, 'Капуста');
INSERT INTO `Ingredients` VALUES (6, 'Крупы');
INSERT INTO `Ingredients` VALUES (7, 'Кефир');
INSERT INTO `Ingredients` VALUES (8, 'Мука');
INSERT INTO `Ingredients` VALUES (9, 'Макароны');
INSERT INTO `Ingredients` VALUES (10, 'Мясо');
INSERT INTO `Ingredients` VALUES (11, 'Кайенский перец');
INSERT INTO `Ingredients` VALUES (12, 'Лимонный сок');
INSERT INTO `Ingredients` VALUES (13, 'Сливочное масло');
INSERT INTO `Ingredients` VALUES (14, 'Яичный желток');
        

-- 
-- Структура таблицы `number_ingredients`
-- 

CREATE TABLE `number_ingredients` (
  `id_namb_ingr` int(10) unsigned NOT NULL auto_increment,
  `name_namb` varchar(255) NOT NULL default 'NOT NULL',
  PRIMARY KEY  (`id_namb_ingr`),
  UNIQUE KEY `name_namb` (`name_namb`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='Колличество ингредиентов' AUTO_INCREMENT=4 ;

-- 
-- Дамп данных таблицы `number_ingredients`
-- 

INSERT INTO `number_ingredients` VALUES (1, '10');
INSERT INTO `number_ingredients` VALUES (2, '125');
INSERT INTO `number_ingredients` VALUES (3, '2');
-- 
-- Структура таблицы `table_com`
-- 

CREATE TABLE `table_com` (
  `id_dis` int(10) unsigned default NULL,
  `id_ingr` int(10) unsigned default NULL,
  `id_namb_ingr` int(10) unsigned default NULL,
  `id_dim_ingr` int(10) unsigned NOT NULL,
  KEY `id_dis` (`id_dis`),
  KEY `id_ingr` (`id_ingr`),
  KEY `id_namb_ingr` (`id_namb_ingr`),
  KEY `id_dim_ingr` (`id_dim_ingr`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Таблица связи блюд,ингредиентов ,их количества и размерность';

-- 
-- Дамп данных таблицы `table_com`
-- 

INSERT INTO `table_com` VALUES (11, 11, 0, 1);
INSERT INTO `table_com` VALUES (11, 12, 1, 3);
INSERT INTO `table_com` VALUES (11, 13, 2, 3);
INSERT INTO `table_com` VALUES (11, 14, 3, 6);


-- 
-- Структура таблицы `dimension_namb_ingr`
-- 

CREATE TABLE `dimension_namb_ingr` (
  `id_d_n_ingr` int(10) unsigned NOT NULL auto_increment,
  `name_dimen` varchar(255) NOT NULL default 'NOT NULL',
  PRIMARY KEY  (`id_d_n_ingr`),
  UNIQUE KEY `name_dimen` (`name_dimen`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='Таблица размерности ингредиентов' AUTO_INCREMENT=7 ;

-- 
-- Дамп данных таблицы `dimension_namb_ingr`
-- 

INSERT INTO `dimension_namb_ingr` VALUES (1, 'щепотка');
INSERT INTO `dimension_namb_ingr` VALUES (2, 'л');
INSERT INTO `dimension_namb_ingr` VALUES (3, 'мл');
INSERT INTO `dimension_namb_ingr` VALUES (4, 'кг');
INSERT INTO `dimension_namb_ingr` VALUES (5, 'гр');
INSERT INTO `dimension_namb_ingr` VALUES (6, 'шт');



Внесено
  Соусы : Голандский соус
Ингредиенты
кайенский перец      щепотка
сливочное масло      125 мл
лимонный сок         10 мл
яичный желток        2 шт

Ваша задача набить эти таблицы данными :)))
Сделайте форму (без всяких рюшичек) с выпадающими списками
Категория-->соусы,десеры,первые блюда...
блюда-->салат оливье, борщ украинский,селедка под шубой
количество-->10,6,177,2...
размерность --> шт,гр,л...
Как сделаете откройте новую тему.
Да и попросите (если не откажет) Trianon ,чтобы посмотрел на индексы,кажется в спешке получилось многовато
Всё ,вперёд за работу ;)))

   
 
 автор: hitball   (05.03.2010 в 20:45)   письмо автору
 
   для: oliss   (05.03.2010 в 19:45)
 

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

>Ваша задача набить эти таблицы данными
как набить, в ручную? у меня уже есть таблица с рецептами, неужели прийдеться заново набирать, но даже если и так, я согласна заново их набрать, но мне не понятны некоторые названия столбцов...

>Сделайте форму (без всяких рюшичек) с выпадающими списками
мы форму уже делали здесь 15.02.2010 в 14:50 ее нужно передалать под новые таблицы?
и я не знаю как соединить категорию, игридиенты, размерность и блюда в форме...

   
 
 автор: sim5   (05.03.2010 в 20:53)   письмо автору
 
   для: hitball   (05.03.2010 в 20:45)
 

>и я не знаю как соединить категорию, игридиенты, размерность и блюда в форме

Как многомерный массив.

PS. А может и проще, если речь о форме описывающей одно блюдо.

   
 
 автор: hitball   (05.03.2010 в 21:11)   письмо автору
 
   для: sim5   (05.03.2010 в 20:53)
 

мы говорим о создании поиска по ингридиентам и категориям блюд (первое, второе)
примерно как здесь http://ivona.bigmir.net/cooking/recipes

   
 
 автор: sim5   (05.03.2010 в 21:20)   письмо автору
 
   для: hitball   (05.03.2010 в 21:11)
 

И что? У вас же вопрос как связать категорию с ее потомками. У них как я понял не ищется в какой либо категории:
<label title="Капуста"><input name="ingredient[2]" value="2" class="vmid" type="checkbox"> Капуста</label>
<label title="Картофель"><input name="ingredient[4]" value="4" class="vmid" type="checkbox"> Картофель</label>
а по ингридиентам.
Что вам мешает в имени указать категорию, а в значении потомка ее? Если конечно вопрос именно в этом.

   
 
 автор: hitball   (05.03.2010 в 21:30)   письмо автору
 
   для: sim5   (05.03.2010 в 21:20)
 

извините за тугодумство, напишите мне пожалуйста пример одной строки

   
 
 автор: sim5   (05.03.2010 в 21:50)   письмо автору
 
   для: hitball   (05.03.2010 в 21:30)
 

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

   
 
 автор: hitball   (05.03.2010 в 22:07)   письмо автору
 
   для: sim5   (05.03.2010 в 21:50)
 

а если я сейчас делаю поиск по ингридиентам, нужно сразу делать поиск и по категориям или это отдельный процес?

   
 
 автор: sim5   (06.03.2010 в 05:26)   письмо автору
 
   для: hitball   (05.03.2010 в 22:07)
 

Можно делать глобальный поиск, а можно всегда ограничить поиск условием (условиями). Хотите чтобы искали соль во сех блюдах, ищите, хотите ограничить поиск борщами, тоже нет проблем. Но в этом случае не элементы формы нужно связывать с категорией борщей, а давать пользователю ее выбрать, отдельно.

   
 
 автор: oliss   (05.03.2010 в 22:43)   письмо автору
 
   для: hitball   (05.03.2010 в 21:11)
 

На этом (ivona. )сайте поиск форменное КЮ надо делать по другому ,чтобы находились блюда те в которых присутствуют данные ,выбранные компоненты ,а не все где они есть вразброс..
Вручную не надо ..делайте то что я вам говорю,по шагам. А та форма что была она нужна для поиска ,это следующий этап ,пока этот не прошли. пишите форму ввода,я подредактирую,если надо.

Зачем вам комментарии к полям если есть дампы таблиц.?
Не бегите вперёд паровоза ;)))

   
 
 автор: hitball   (05.03.2010 в 23:30)   письмо автору
 
   для: oliss   (05.03.2010 в 22:43)
 

а для этой кулинарной книги, разве не нужно создать отдельную таблицу с рецептами?
в которой будут храниться НАЗВАНИЯ и ОПИСАНИЯ ПРИГОТОВЛЕНИЯ блюд?
>пишите форму ввода
еще раз извиняюсь за тугодумство... форма ввода - эта та форма, через которую мы заносим через админку рецепты, да?

   
 
 автор: oliss   (06.03.2010 в 04:33)   письмо автору
 
   для: hitball   (05.03.2010 в 23:30)
 

TABLE `dishes` -- это она ,мы ее создали в укороченном варианте
просто в нее надо будет добавить поля с описанием ну если хотите более полную

-- 
-- Структура таблицы `dishes`
-- 

CREATE TABLE `dishes` (
  `id_dis` int(10) unsigned NOT NULL auto_increment,
  `p_id_dis` int(10) unsigned default '0',
  ` title_dis` varchar(255) default 'NOT NULL',
  `description` text,
  `keywords` varchar(255) NOT NULL default 'NOT NULL',
  `content` text,
  `created` datetime default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id_dis`),
  UNIQUE KEY ` title_dis` (` title_dis`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='Таблица блюд' AUTO_INCREMENT=12 ;

-- 
-- Дамп данных таблицы `dishes`
-- 

INSERT INTO `dishes` VALUES (11, 1, 'Голландский соус', 'Растопите сливочное масло.  Положите яичные желтки в пароварку и готовьте на медленном огне. ', 'соус,соус,соус,соус,соус', 'Растопите сливочное масло.\r\n\r\nПоложите яичные желтки в пароварку и готовьте на медленном огне. \r\n\r\nМедленно добавьте лимонный сок, убедитесь в том, что он хорошо перемешался.\r\n\r\nСнимитес огня, медленно венчиком вбейте горячее сливочное масло.\r\n\r\nПоложите кайенский перец и сразу же подавайте к столу.\r\n', '2010-03-06 04:26:01');
INSERT INTO `dishes` VALUES (1, 0, 'Соусы', 'NOT NULL', 'NOT NULL', '', '0000-00-00 00:00:00');
INSERT INTO `dishes` VALUES (2, 0, 'Первые блюда', 'NOT NULL', 'NOT NULL', '', '0000-00-00 00:00:00');
INSERT INTO `dishes` VALUES (3, 0, 'Вторые блюда', 'NOT NULL', 'NOT NULL', '', '0000-00-00 00:00:00');
INSERT INTO `dishes` VALUES (4, 0, 'Салаты', 'NOT NULL', 'NOT NULL', '', '0000-00-00 00:00:00');
INSERT INTO `dishes` VALUES (5, 0, 'Закуски', 'NOT NULL', 'NOT NULL', '', '0000-00-00 00:00:00');
INSERT INTO `dishes` VALUES (7, 0, 'Десерты', 'NOT NULL', 'NOT NULL', '', '0000-00-00 00:00:00');
INSERT INTO `dishes` VALUES (8, 0, 'Напитки', 'NOT NULL', 'NOT NULL', '', '0000-00-00 00:00:00');
INSERT INTO `dishes` VALUES (9, 0, 'Запеканки', 'NOT NULL', 'NOT NULL', '', '0000-00-00 00:00:00');
INSERT INTO `dishes` VALUES (10, 0, 'Выпечка', 'NOT NULL', 'NOT NULL', '', '0000-00-00 00:00:00');

   
 
 автор: hitball   (06.03.2010 в 11:25)   письмо автору
 
   для: oliss   (06.03.2010 в 04:33)
 

>пишите форму ввода
еще раз извиняюсь за тугодумство... форма ввода - эта та форма, через которую мы заносим через админку рецепты, да?

   
 
 автор: oliss   (06.03.2010 в 18:37)   письмо автору
 
   для: hitball   (06.03.2010 в 11:25)
 

Да

   
 
 автор: hitball   (06.03.2010 в 23:45)   письмо автору
 
   для: oliss   (06.03.2010 в 18:37)
 

вот то, на что я сподвиглась...
Не знаю, что делать с полями таблицы dishes `id_dis` и `p_id_dis`.
И для категорий рецептов, мне кажеться, лучше создать отдельную таблицу categories или я чего-то не понимаю...

<h3 align="center">Добавление нового рецепта</h3>
        <div style="margin-left:65px;">
      
      <form name="form1" method="post" action="X.php">
         <p>
           <label>Введите название рецепта <br>
             <input type="text" name="title_dis" id="title_dis">
           </label>
         </p>
          <p>
           <label>Ведите краткое описание рецепта с тэгами абзацев<br>
           <textarea name="description" id="description" cols="40" rows="5"></textarea>
           </label>
         </p>
         <p>
           <label>Введите ключевые слова рецепта<br>
           <input type="text" name="keywords" id="keywords">
           </label>
         </p>
         <p>
           <label>Введите полный текст рецепта с тэгами<br>
           <textarea name="content" id="content" cols="40" rows="20"></textarea>
           </label>
         </p>
          <p>
           <label>Введите дату добавления рецепта<br>
           <input name="created" type="text" id="created" value="<?php $date date("Y-m-d"); echo $date?>">
           </label>
         </p>
          <p>
           <label>Выберите категорию рецепта <br>
           <select name="cat">
             <? $result mysql_query("SELECT title,id FROM categories",$db);
if (!
$result)
{
echo 
"<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору X@ukr.net <br> <strong>Код ошибки:</strong></p>";
exit(
mysql_error());
}
if (
mysql_num_rows($result) > 0)
{
$myrow mysql_fetch_array($result); 
do 
{
printf ("<option value='%s'>%s</option>",$myrow["id"],$myrow["title"]);

}
while (
$myrow mysql_fetch_array($result));

}
else
{
echo 
"<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
?>
           </select>
           </label>
         </p>
         <p>
           <label>
           <input type="submit" name="submit" id="submit" value="Занести рецепт в базу">
           </label>
         </p>
       </form>
        </div>

   
 
 автор: sim5   (07.03.2010 в 04:41)   письмо автору
 
   для: hitball   (06.03.2010 в 23:45)
 

И как такой способ хранения рецептов вяжется с формой поиска, о которой вы говорили?

   
 
 автор: hitball   (07.03.2010 в 10:55)   письмо автору
 
   для: sim5   (07.03.2010 в 04:41)
 

эта форма заносит рецепты в админку, а форму для поиска мы рассматривали здесь...
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=67298&page=1
не знаю насколько вяжеться, я же говорю, что это все на что я сподвиглась...

   
 
 автор: oliss   (07.03.2010 в 11:09)   письмо автору
 
   для: hitball   (07.03.2010 в 10:55)
 

Перед тем как писать код надо разработать интерфейс формы ввода,с учетом того что в нее выносить те данные которые есть в бд +возможность добавления новых
Вы выбрали гороховую запеканку ,а в ее составе есть горох ,а гороха в вашем перечне ингредиентов(уже внесённых в БД ) нет ,значить надо его внести так ,чтобы не перегружать таблицу,что уже набрано в полях формы ,тут надо использовать технологию АЯКС

Напрягите воображение и представьте форму ввода,как будто вы пришли на сайт пользователем и вам надо добавить новый рецепт на сайт.

   
 
 автор: hitball   (07.03.2010 в 11:17)   письмо автору
 
   для: oliss   (07.03.2010 в 11:09)
 

использовать технологию АЯКС

вы, наверное, не поняли с кем имеете дело)
возможно следующий вопрос поможет вам это понять...
Что такое технология АЯКС?

   
 
 автор: sim5   (07.03.2010 в 13:02)   письмо автору
 
   для: hitball   (07.03.2010 в 10:55)
 

В этом "деле" столько много "томов", что трудно вынести "приговор" ), но вы давали ссылку на форму (хотя, я, видимо недопонимая, имел ввиду совсем иное), которая оказалась формой поиска. В данной форме поиск производится не потексу а по ключам, если судить по ее коду.
Следовательно, логично предположить (а нечто подобное в записях тут мелкает), что имеется таблица ингридиентов, а рецепт содержит их ключи. Коли так, то как же тогда быть с такой формой добавления рецептов:
Введите полный текст рецепта с тэгами
<textarea .....
Если таблица ингридиентов, значит логичны списки их, для выбора пользователем, а не textarea, и логична та форма поиска, о которой вы и упоминали. В противном случае "дело" разваливается. )

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

   
 
 автор: hitball   (07.03.2010 в 15:15)   письмо автору
 
   для: sim5   (07.03.2010 в 13:02)
 

да нет) вы все правильно понимаете) это я не очень смыслю в том, что пишу...

   
 
 автор: sim5   (07.03.2010 в 15:24)   письмо автору
 
   для: hitball   (07.03.2010 в 15:15)
 

Ну тогда на вашей кухне отобедать нет никакой возможности ;-)

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

   
 
 автор: kaya   (07.03.2010 в 17:44)   письмо автору
 
   для: sim5   (07.03.2010 в 15:24)
 

if (ACCOUNT_STATE == 'true') {
$zone_id = 0;
$check_query = tep_db_query("select count(*) as total from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "'");
$check = tep_db_fetch_array($check_query);
$entry_state_has_zones = ($check['total'] > 0);
if ($entry_state_has_zones == true) {
$zone_query = tep_db_query("select distinct zone_id from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "' and (zone_name = '" . tep_db_input($state) . "' or zone_code = '" . tep_db_input($state) . "')");
if (tep_db_num_rows($zone_query) == 1) {
$zone = tep_db_fetch_array($zone_query);
$zone_id = $zone['zone_id'];
} else {
$error = true;

Pochemu etot code ne rabotaet,chto ne pravilno?

   
 
 автор: sim5   (07.03.2010 в 17:57)   письмо автору
 
   для: kaya   (07.03.2010 в 17:44)
 

То, что я не стал отвечать на ваше письмо, еще не означает, что я отвечу вам тут. Ваш комментарий здесь, это не уважение к автору темы, а код ваш спам.
В MySQL со своим вопросом, только оформите его РНР-тегами и ВВ-тегами [сode][/сode], чтобы его читать удобнее было.

   
 
 автор: kaya   (07.03.2010 в 18:00)   письмо автору
 
   для: sim5   (07.03.2010 в 17:57)
 

YA voobshe to ne dlya vas pisala eto soobshenie,a v pervii raz prosto oshiblas.Tak chto ne mnite sebya vseznaikoi.Ot va ya tochno otveta ne jdu, naglii vi nash:)

   
 
 автор: sim5   (07.03.2010 в 18:16)   письмо автору
 
   для: kaya   (07.03.2010 в 18:00)
 

Не важно для кого, хотя вы и оставили именно под моим сообщением. Не важно какого я мнения о себе, а вот вам не стоит "засорять" чужие темы своим кодом, чтобы о вас не сложилось плохого мнения.
Я вам уже ответил, вы хотя бы свою тему подправьте - код не помещенный в теги соde трудно читать, и мала вероятность, что кто-то в такой вникать будет.

   
 
 автор: hitball   (07.03.2010 в 21:03)   письмо автору
 
   для: sim5   (07.03.2010 в 15:24)
 

как раз с кухней у меня все в порядке, а вот с программирование не очень)))

   
 
 автор: sim5   (07.03.2010 в 21:20)   письмо автору
 
   для: hitball   (07.03.2010 в 21:03)
 

Так а чем ваша кухня от программирования отличается? Если на вашей кухне фрукты никак не лежат вместе с овощами, посуда и столовые приборы на местах соответсвующих, то вы их так расфасовали и расставили не ради красоты же, а потому, что это удобно, да и естественно. И начиная готовить ужин вы уж точно будете знать что и от куда взять.
Вот тоже самое и на сайте вашем - разложите все по полочкам, то есть в базе, чтобы так же было удобно, и уж тогда точно будете знать, что нужно делать, чтобы приготовить блюдо виртуальное ;-)

С праздником!

   
 
 автор: oliss   (07.03.2010 в 21:55)   письмо автору
 
   для: sim5   (07.03.2010 в 21:20)
 

Присоединяюсь,не боги горшки обжигают,вы взялись за сложную задачу,появилось много вопросов вы стремитесь на них найти ответы.
Не хватает знаний и опыта ,но самая длинная дорога к цели начинается с первого шага ,вы его уже сделали :))) успехов !

   
 
 автор: hitball   (08.03.2010 в 00:30)   письмо автору
 
   для: oliss   (07.03.2010 в 21:55)
 

спасибо за веру в мои способности)
а что насчет моей формы 06.03.2010 в 23:45? это бред, да?

   
 
 автор: sim5   (08.03.2010 в 04:06)   письмо автору
 
   для: hitball   (08.03.2010 в 00:30)
 

Нет, не бред, но если у вас ингридиенты рецептов, это отдельная таблица в базе, то ваша форма не соответствует этому условию.

   
 
 автор: hitball   (08.03.2010 в 09:27)   письмо автору
 
   для: sim5   (08.03.2010 в 04:06)
 

Создала новую тему, дабы сделать приятно модераторам)
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=71840&page=1

   
 
 автор: sim5   (08.03.2010 в 09:56)   письмо автору
 
   для: hitball   (08.03.2010 в 09:27)
 

Миледи, вы даже в праздник думаете о рецептах?! Тогда еще раз с праздником!

Из всего что я прочитал (да вроде бы вы и сами подтвердили это), следует вывод, что ингридиенты рецептов у вас находятся в отдельной таблице. То есть, для указании ингридиентов рецепта пользователю должен выдаваться раскрывающийся список, в котором пользователь и выберет нужные.
У вас же для ввода ингридиентов служит textarea. Каким же образом ингридиенты этого рецепта, введенные пользователем, попадут в таблицу ингридиентов? Каким образом будет осуществлятся поиск по ингридиентам в базе той формой, о которой вы ранее упоминали?
Тоже самое и категория блюд (рецептов), она должна выбираться пользователем из предоставляемого вами списка (уже имеющихся категорий).
При указании ингридиентов, в случае, если нет нужных в списках, пользователю должно выдаваться поле (поля) для ввода таких, которые будут добавляться в базу к имеющимся.
В основе формы должны лежать либо связанные списки, либо все должно отдаваться пользователю в виде массива для последующей обоработки JS-сценариями, но это если список ингридиентов, блюд, категорий, а возможно и кухон (русская, итальянская, французская, и т.п.) не так велик.

   
 
 автор: hitball   (08.03.2010 в 00:23)   письмо автору
 
   для: sim5   (07.03.2010 в 21:20)
 

Спасибо за поздравления)))

   
Rambler's Top100
вверх

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