|
|
|
| ну все, я совсем потерялась
таблица единиц измерения 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; }
?>
|
сейчас аккуратно? | |
|
|
|
|
|
|
|
для: hitball
(12.02.2010 в 19:35)
| | сейчас аккуратно.
Этот скрипт, который Вы показываете, имеет весьма локальное предназначение.
Разбить записи ключевых слов из неподобающего формата хранения и сформировать содержимое таблицы связки по ключевым словам.
Один раз разбить и сформировать.
После чего столбик этот (где значения ключей через запятую) выкинуть вообще.
Таблицу количества ингредиентов в рецепте вполне возможно построить похожим образом.
Но потребуется какая никакая ручная доводка. Хотя бы потому что единицы измерения в чисто человеческом тексте моггут варьироваться. ст.ложка и столовых ложек к примеру.
Всё же на автомат с искусственным интеллектом этот скрипт не тянет. | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2010 в 19:44)
| | тегами [url] зря брезгуете | |
|
|
| |
|
|
|
|
для: 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:05)
| | этот скрипт я уже использовала и он мне наполнил таблицы, я его убрала, но как появляются эти значения в столбиках id_unit и qty?
изменить таблицу связки, добавив в нее столбик id_unit и столбик qty количества ингредиента.
|
это поля INT ?
как значения будут попадать из таблицы book_eda в таблицу связки book_eda_key??? | |
|
|
|
|
|
|
|
для: hitball
(12.02.2010 в 20:13)
| | qty - очевидно, это поле FLOAT
Иначе полкило сметаны будет не задать.
а id - INT(11) как обычно.
>как значения будут попадать из таблицы book_eda в таблицу связки book_eda_key???
Почему именно из этой таблицы?
Какая, в сущности, разница?
Захотят - попадут...
Попали же они в саму таблицу? | |
|
|
|
|
|
|
|
для: 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
|
| |
|
|
|
|
|
|
|
для: 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) | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2010 в 21:22)
| | исправила unit_id
>Кстати , по смыслу они скорее (recept_id, ingred_id, unit_id)
к тем названиям я уже привыкла, можно их оставить как были?
unit_id обязательно делать primari? что-то у меня не получается, надо заново создать таблицу? | |
|
|
|
|
|
|
|
для: hitball
(12.02.2010 в 21:30)
| | >исправила unit_id
>>Кстати , по смыслу они скорее (recept_id, ingred_id, unit_id)
> к тем названиям я уже привыкла, можно их оставить как были?
Вы у меня спрашиваете, можно ли в Вашей базе баддых в Вашей таблице оставить названия Ваших полей, к которым Вы привыкли?
>unit_id обязательно делать primari?
Я такого не советовал. | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2010 в 21:36)
| |
По большому счету первичным ключом можно сделать составной из трех чужих -
PRIMARY KEY (obj_id, key_id, unit_id)
|
это я не правильно поняла) | |
|
|
|
|
|
|
|
для: hitball
(12.02.2010 в 21:41)
| | На самом деле был слегка неправ.
первичным ключом всё же разумно сделать составную пару PRIMARY KEY (obj_id, key_id)
unit_id - не определяющее первичную ключевую зависимость поле. | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2010 в 22:08)
| | >первичным ключом всё же разумно сделать составную пару PRIMARY KEY (obj_id, key_id)
так и есть ведь
>unit_id - не определяющее первичную ключевую зависимость поле.
это не понятно( | |
|
|
|
|
|
|
|
для: hitball
(12.02.2010 в 22:15)
| | не может быть двух разных применений ингредиента А в рецепте Б , отличающихся лишь количеством (или единицей измерения этого количества).
Более того. И количество и ед.изм могут отсутствовать (null) ( что называется, соль - по вкусу) | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2010 в 22:37)
| | какое значение нужно задать unit_id ? | |
|
|
|
|
|
|
|
для: hitball
(12.02.2010 в 22:40)
| | id из таблицы units | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2010 в 22:48)
| | мне совершенно не поятно как будут заполнять эти новые столбцы( | |
|
|
|
|
|
|
|
для: hitball
(12.02.2010 в 22:53)
| | В таблице units Вы можете заполнить их предварительно.
Можно также перепривязать единицу измерения не к связке, а к ингридиенту.
Правда тогда тяжелее будет, если в одном рецепте понадобится полкило муки, а в другом - полтора стакана. Но не смертельно. | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2010 в 22:55)
| | хорошо. допустим я буду вручную записывать единицы измерения, как мне связать таблицы units и bool_eda_key скриптом?
я здесь подумала, а не легче ли будет создать в таблице book_eda еще одно поле inger и вставлять туда ингридиенты без единиц измерения? то есть выводить пользователям просто перечень ингридиентов с измерениями из графы ingridient, а в таблицу key_eda заносить значения из графы inger.
Если помните, у меня же нет админки и нормально соединять-выводить значения ингридиентов мне кажеться будет не реально(
Вам это, конечно, покажеться газенвагеном, да? | |
|
|
|
|
|
|
|
для: hitball
(13.02.2010 в 00:15)
| | мне кажется, что если возникнет нужда в админке, Вы её напишете.
Также как и со скриптом. | |
|
|
|
|
|
|
|
для: Trianon
(13.02.2010 в 00:37)
| | если бы я сама могла написать, то не мучила бы Вас уже неделю
Так, что? Как думаете, можно я создам еще одну графу в таблице book_eda?
Закончу Вас на сегодня пытать, спокойной ночи) | |
|
|
|
|
|
|
|
для: hitball
(13.02.2010 в 00:48)
| | мне не жалко. | |
|
|
|
|
|
|
|
для: Trianon
(13.02.2010 в 01:08)
| | Доброе утро)
Добавила строку inger в book_eda, заполнила в некоторых рецептах эту графу и обновила таблицы с ключевыми словами и связки.
жду дальнейших указаний) | |
|
|
|
|
|
|
|
для: hitball
(13.02.2010 в 00:15)
| | Если уж совсем нормализовывать таблицы ,то надо ещё создавать таблицу со значениями и таблицу с размерностью ингредиентов ,но это уже полное КЮ ( хотя в теории и правильно ). | |
|
|
|
|
|
|
|
для: 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 // Салат с креветками и сыром(лимон)
|
| |
|
|
|
|
|
|
|
для: oliss
(12.02.2010 в 22:04)
| | У нас всё то же самое.
Но по таблице связи можно получить информацию о том, сколько того или иного продукта необходимо для приготовления того или иного блюда. | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2010 в 22:07)
| | Я знаю,просто более в наглядной форме :)
Да ,нужна четвёртая таблица с размерностью ингредиентов ,т.е. добавить в таблицу связей ещё одно поле (простите ,позднее зажигание:). | |
|
|
|
|
|
|
|
для: 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) "лук"
|
| |
|
|
|
|
|
|
|
для: hitball
(15.02.2010 в 14:50)
| | Забыть о функции printf( в данном случае), есть echo ... . ;
Весь выводимый массив можно посмотреть через print_r( $myrow3)
[ чувствуется твёрдая рука Евгения Попова :) ] | |
|
|
|
|
|
|
|
для: oliss
(15.02.2010 в 15:03)
| | Очень зря между прочим.
В функциях форматного вывода ничего плохого нет.
А структурировать потоки данных с их помощью подчас легче.
Это, самом собой, не повод печатать её прямой результат вызова var_dump :) | |
|
|
|
|
|
|
|
для: 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["??????????"]);
}
?>
|
| |
|
|
|
|
|
|
|
для: 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 .
Ключ элемента должен соответствовать имени поля в таблице. | |
|
|
|
|
|
|
|
для: 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
(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
|
| |
|
|
|
|
|
|
|
для: 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);
?>
|
ИМХО ,идеально бы было отсортировать ингредиенты по алфавиту ,но это чуть нагрузит запрос. | |
|
|
|
|
|
|
|
для: oliss
(16.02.2010 в 18:00)
| | спасио за то, что отозвались, а то я здесь целый день караулю когда Вы или Трианон появитесь)
вставила код на страницу)
появился красивый список всех ключевых слов (ура), а под ним
что это значит? что мне делать дальше? | |
|
|
|
|
|
|
|
для: hitball
(16.02.2010 в 18:31)
| | В начало скрипта (в самом верху кода) вставьте error_reporting(E_ALL);
и опишите ошибку
И посмотрите ХТМЛ код где косяк. | |
|
|
|
|
|
|
|
для: oliss
(16.02.2010 в 18:37)
| | выдает только
| |
|
|
|
|
|
|
|
для: hitball
(16.02.2010 в 18:40)
| | (возможно проблема с кавычками.)
Если массив пуст ,значить форма ничего не передаёт 9выложите ХТМЛ код что получается в браузере. | |
|
|
|
|
|
|
|
для: 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
(
)
|
| |
|
|
|
|
|
|
|
для: 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 ингредиентов) | |
|
|
|
|
|
|
|
для: oliss
(16.02.2010 в 18:56)
| | уже попробовала
Array
(
[ingredient] => Array
(
[3] => 1
[8] => 1
[13] => 1
)
[submit] => Поиск
)
|
| |
|
|
|
|
|
|
|
для: hitball
(16.02.2010 в 18:58)
| | Всё не так страшно ,просто надо не бояться жать на кнопки и смотреть результат,а теперь пишите обработчик формы с запросом поиска блюд ,согласно выбранным ингредиентам. | |
|
|
|
|
|
|
|
для: 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();
}
?>
|
| |
|
|
|
|
|
|
|
для: hitball
(16.02.2010 в 19:41)
| | всё это выбросите и сделайте запрос к таблице блюда (используя таблицу связи блюдо--> ингредиенты ) где id ингредиентов вам известны (получаете из формы)
Используйте JOIN для объединения таблиц | |
|
|
|
|
|
|
|
для: 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) | |
|
|
|
|
|
|
|
для: hitball
(16.02.2010 в 20:02)
| | Не надо оперировать массивом $_REQUEST['ingr']
Вам же подсказали --массив $_POST
Ну, так напишите запрос ( JOIN -ов должно быть больше) ,включите логику :) | |
|
|
|
|
|
|
|
для: 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
(17.02.2010 в 13:11)
| | так?
foreach($_POST['word'] as $ID) {
if(mysql_query("select FROM `book_key` WHERE `id` = '".intval($ID)."';")) } | |
|
|
|
|
|
|
|
для: 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
(01.03.2010 в 12:15)
| | проблема все еще висит, ПОЖАЛУЙСТА, ответьте мне, когда появиться возможность... | |
|
|
|
|
 22.5 Кб |
|
|
для: hitball
(02.03.2010 в 15:38)
| | см самое первое сообщение в этой ветке. И аттач. | |
|
|
|
|
|
|
|
для: Trianon
(02.03.2010 в 22:20)
| | вы хотите сказать, что опять все лезит? я не понимаю почему так происходит( у меня все нормально и прокрутку двигать не нужно, а с увеличением числа сообщений в теме, она почему то лезит в право. завести новую тему, да? | |
|
|
|
|
|
|
|
для: hitball
(02.03.2010 в 23:22)
| | >я не понимаю почему так происходит
из-за поста (16.02.2010 в 18:49) где строки кода на экран не влазят.
Да, некоторые браузеры их переносят насильно.
Поэтому Вы этого и не видите.
>завести новую тему, да?
Если только из-за меня - не стоит.
Собственно, мне теперь не мешает. | |
|
|
|
|
|
|
|
для: Trianon
(03.03.2010 в 01:33)
| | Trianon, как это исправлять? | |
|
|
|
|
|
|
|
для: 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
(04.03.2010 в 09:19)
| | Помогите мне, пожалуйста, когда у вас появится время...
Так хочеться, чтоб уже все получилось) | |
|
|
|
|
|
|
|
для: hitball
(05.03.2010 в 14:01)
| | Подождите,мне тут дочка заказала точно такой поиск рецептов, немного освобожусь сделаю её ,вам скину наброски,да пора избавляться от do while и mysql_fetch_array | |
|
|
|
|
|
|
|
для: oliss
(05.03.2010 в 15:40)
| | Вот спасибище гиганское) Буду с нетерпением ждать! | |
|
|
|
|
|
|
|
для: 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 ,чтобы посмотрел на индексы,кажется в спешке получилось многовато
Всё ,вперёд за работу ;))) | |
|
|
|
|
|
|
|
для: oliss
(05.03.2010 в 19:45)
| | создала у себя все эти таблицы с дампами.
а для этой книги, разве не нужно создать отдельную таблицу с рецептами? в которой будут храниться названия и описания блюд?
>Ваша задача набить эти таблицы данными
как набить, в ручную? у меня уже есть таблица с рецептами, неужели прийдеться заново набирать, но даже если и так, я согласна заново их набрать, но мне не понятны некоторые названия столбцов...
>Сделайте форму (без всяких рюшичек) с выпадающими списками
мы форму уже делали здесь 15.02.2010 в 14:50 ее нужно передалать под новые таблицы?
и я не знаю как соединить категорию, игридиенты, размерность и блюда в форме... | |
|
|
|
|
|
|
|
для: hitball
(05.03.2010 в 20:45)
| | >и я не знаю как соединить категорию, игридиенты, размерность и блюда в форме
Как многомерный массив.
PS. А может и проще, если речь о форме описывающей одно блюдо. | |
|
|
|
|
|
|
|
для: sim5
(05.03.2010 в 20:53)
| | мы говорим о создании поиска по ингридиентам и категориям блюд (первое, второе)
примерно как здесь http://ivona.bigmir.net/cooking/recipes | |
|
|
|
|
|
|
|
для: 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>
а по ингридиентам.
Что вам мешает в имени указать категорию, а в значении потомка ее? Если конечно вопрос именно в этом. | |
|
|
|
|
|
|
|
для: sim5
(05.03.2010 в 21:20)
| | извините за тугодумство, напишите мне пожалуйста пример одной строки | |
|
|
|
|
|
|
|
для: hitball
(05.03.2010 в 21:30)
| | Пример чего? )
На указанном сайте форма будет передавать GET-массив цифр, причем значения массива совпадают с его ключами. Почему именно так, я не знаю, я не "кулинар" этого сайта. Но явно в форме нет привязки ее элементов к некоему номеру, а значит поиск будет по всем блюдам (рецептам происходить) надо полагать.
Вы справшивали - как связать категорию (пусть это будет категория неких блюд) с ее потомками, то есть искать в некой категории?
Если искать, то ее нельзя уже привязывать, это нужен, например, список с выбором категории, которая будет передаваться отдельной переменной.
Если только я вас правильно понимаю. | |
|
|
|
|
|
|
|
для: sim5
(05.03.2010 в 21:50)
| | а если я сейчас делаю поиск по ингридиентам, нужно сразу делать поиск и по категориям или это отдельный процес? | |
|
|
|
|
|
|
|
для: hitball
(05.03.2010 в 22:07)
| | Можно делать глобальный поиск, а можно всегда ограничить поиск условием (условиями). Хотите чтобы искали соль во сех блюдах, ищите, хотите ограничить поиск борщами, тоже нет проблем. Но в этом случае не элементы формы нужно связывать с категорией борщей, а давать пользователю ее выбрать, отдельно. | |
|
|
|
|
|
|
|
для: hitball
(05.03.2010 в 21:11)
| | На этом (ivona. )сайте поиск форменное КЮ надо делать по другому ,чтобы находились блюда те в которых присутствуют данные ,выбранные компоненты ,а не все где они есть вразброс..
Вручную не надо ..делайте то что я вам говорю,по шагам. А та форма что была она нужна для поиска ,это следующий этап ,пока этот не прошли. пишите форму ввода,я подредактирую,если надо.
Зачем вам комментарии к полям если есть дампы таблиц.?
Не бегите вперёд паровоза ;))) | |
|
|
|
|
|
|
|
для: oliss
(05.03.2010 в 22:43)
| | а для этой кулинарной книги, разве не нужно создать отдельную таблицу с рецептами?
в которой будут храниться НАЗВАНИЯ и ОПИСАНИЯ ПРИГОТОВЛЕНИЯ блюд?
>пишите форму ввода
еще раз извиняюсь за тугодумство... форма ввода - эта та форма, через которую мы заносим через админку рецепты, да? | |
|
|
|
|
|
|
|
для: 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');
|
| |
|
|
|
|
|
|
|
для: oliss
(06.03.2010 в 04:33)
| | >пишите форму ввода
еще раз извиняюсь за тугодумство... форма ввода - эта та форма, через которую мы заносим через админку рецепты, да? | |
|
|
|
|
|
|
|
для: hitball
(06.03.2010 в 11:25)
| | Да | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|
|
|
|
для: hitball
(06.03.2010 в 23:45)
| | И как такой способ хранения рецептов вяжется с формой поиска, о которой вы говорили? | |
|
|
|
|
|
|
|
для: sim5
(07.03.2010 в 04:41)
| | эта форма заносит рецепты в админку, а форму для поиска мы рассматривали здесь...
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=67298&page=1
не знаю насколько вяжеться, я же говорю, что это все на что я сподвиглась... | |
|
|
|
|
|
|
|
для: hitball
(07.03.2010 в 10:55)
| | Перед тем как писать код надо разработать интерфейс формы ввода,с учетом того что в нее выносить те данные которые есть в бд +возможность добавления новых
Вы выбрали гороховую запеканку ,а в ее составе есть горох ,а гороха в вашем перечне ингредиентов(уже внесённых в БД ) нет ,значить надо его внести так ,чтобы не перегружать таблицу,что уже набрано в полях формы ,тут надо использовать технологию АЯКС
Напрягите воображение и представьте форму ввода,как будто вы пришли на сайт пользователем и вам надо добавить новый рецепт на сайт. | |
|
|
|
|
|
|
|
для: oliss
(07.03.2010 в 11:09)
| |
использовать технологию АЯКС
|
вы, наверное, не поняли с кем имеете дело)
возможно следующий вопрос поможет вам это понять...
Что такое технология АЯКС? | |
|
|
|
|
|
|
|
для: hitball
(07.03.2010 в 10:55)
| | В этом "деле" столько много "томов", что трудно вынести "приговор" ), но вы давали ссылку на форму (хотя, я, видимо недопонимая, имел ввиду совсем иное), которая оказалась формой поиска. В данной форме поиск производится не потексу а по ключам, если судить по ее коду.
Следовательно, логично предположить (а нечто подобное в записях тут мелкает), что имеется таблица ингридиентов, а рецепт содержит их ключи. Коли так, то как же тогда быть с такой формой добавления рецептов:
Введите полный текст рецепта с тэгами
<textarea .....
Если таблица ингридиентов, значит логичны списки их, для выбора пользователем, а не textarea, и логична та форма поиска, о которой вы и упоминали. В противном случае "дело" разваливается. )
Я, не читая всего, может что-то действительно не допонимаю, и коли таким образом "увожу следствие на ложный путь", можете не обращать внимание. ) | |
|
|
|
|
|
|
|
для: sim5
(07.03.2010 в 13:02)
| | да нет) вы все правильно понимаете) это я не очень смыслю в том, что пишу... | |
|
|
|
|
|
|
|
для: hitball
(07.03.2010 в 15:15)
| | Ну тогда на вашей кухне отобедать нет никакой возможности ;-)
И как же в таком случае вы собираетесь свести концы с концами? Если я правильно понимаю, а значит вы представляете организацию рецептов в базе, то из каких соображений может появиться такая форма добавления рецептов? | |
|
|
|
|
|
|
|
для: 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? | |
|
|
|
|
|
|
|
для: kaya
(07.03.2010 в 17:44)
| | То, что я не стал отвечать на ваше письмо, еще не означает, что я отвечу вам тут. Ваш комментарий здесь, это не уважение к автору темы, а код ваш спам.
В MySQL со своим вопросом, только оформите его РНР-тегами и ВВ-тегами [сode][/сode], чтобы его читать удобнее было. | |
|
|
|
|
|
|
|
для: 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:) | |
|
|
|
|
|
|
|
для: kaya
(07.03.2010 в 18:00)
| | Не важно для кого, хотя вы и оставили именно под моим сообщением. Не важно какого я мнения о себе, а вот вам не стоит "засорять" чужие темы своим кодом, чтобы о вас не сложилось плохого мнения.
Я вам уже ответил, вы хотя бы свою тему подправьте - код не помещенный в теги соde трудно читать, и мала вероятность, что кто-то в такой вникать будет. | |
|
|
|
|
|
|
|
для: sim5
(07.03.2010 в 15:24)
| | как раз с кухней у меня все в порядке, а вот с программирование не очень))) | |
|
|
|
|
|
|
|
для: hitball
(07.03.2010 в 21:03)
| | Так а чем ваша кухня от программирования отличается? Если на вашей кухне фрукты никак не лежат вместе с овощами, посуда и столовые приборы на местах соответсвующих, то вы их так расфасовали и расставили не ради красоты же, а потому, что это удобно, да и естественно. И начиная готовить ужин вы уж точно будете знать что и от куда взять.
Вот тоже самое и на сайте вашем - разложите все по полочкам, то есть в базе, чтобы так же было удобно, и уж тогда точно будете знать, что нужно делать, чтобы приготовить блюдо виртуальное ;-)
С праздником! | |
|
|
|
|
|
|
|
для: sim5
(07.03.2010 в 21:20)
| | Присоединяюсь,не боги горшки обжигают,вы взялись за сложную задачу,появилось много вопросов вы стремитесь на них найти ответы.
Не хватает знаний и опыта ,но самая длинная дорога к цели начинается с первого шага ,вы его уже сделали :))) успехов ! | |
|
|
|
|
|
|
|
для: oliss
(07.03.2010 в 21:55)
| | спасибо за веру в мои способности)
а что насчет моей формы 06.03.2010 в 23:45? это бред, да? | |
|
|
|
|
|
|
|
для: hitball
(08.03.2010 в 00:30)
| | Нет, не бред, но если у вас ингридиенты рецептов, это отдельная таблица в базе, то ваша форма не соответствует этому условию. | |
|
|
| |
|
|
|
|
для: hitball
(08.03.2010 в 09:27)
| | Миледи, вы даже в праздник думаете о рецептах?! Тогда еще раз с праздником!
Из всего что я прочитал (да вроде бы вы и сами подтвердили это), следует вывод, что ингридиенты рецептов у вас находятся в отдельной таблице. То есть, для указании ингридиентов рецепта пользователю должен выдаваться раскрывающийся список, в котором пользователь и выберет нужные.
У вас же для ввода ингридиентов служит textarea. Каким же образом ингридиенты этого рецепта, введенные пользователем, попадут в таблицу ингридиентов? Каким образом будет осуществлятся поиск по ингридиентам в базе той формой, о которой вы ранее упоминали?
Тоже самое и категория блюд (рецептов), она должна выбираться пользователем из предоставляемого вами списка (уже имеющихся категорий).
При указании ингридиентов, в случае, если нет нужных в списках, пользователю должно выдаваться поле (поля) для ввода таких, которые будут добавляться в базу к имеющимся.
В основе формы должны лежать либо связанные списки, либо все должно отдаваться пользователю в виде массива для последующей обоработки JS-сценариями, но это если список ингридиентов, блюд, категорий, а возможно и кухон (русская, итальянская, французская, и т.п.) не так велик. | |
|
|
|
|
|
|
|
для: sim5
(07.03.2010 в 21:20)
| | Спасибо за поздравления))) | |
|
|
|
|