|
|
|
| Подскажите пожалуйста, как реализовать этот скрипт на самописанном сайте? на сколько я понимаю, тут рассматривается Code Igniter
http://www.simplecoding.org/kak-sozdat-oblako-tegov-dlya-svoego-sajta.html | |
|
|
|
|
|
|
|
для: uvajs
(01.09.2010 в 01:11)
| | Рассматривается алгоритм и реализация на РНР и немного кода от фреймворка. В чем проблема написать на чистом РНР? | |
|
|
|
|
|
|
|
для: mihdan
(02.09.2010 в 22:50)
| | У меня же на сайте не работают классы, как быть? | |
|
|
|
|
|
|
|
для: uvajs
(03.09.2010 в 17:06)
| | Как это не работают? Какая версия php у вас? | |
|
|
|
|
|
|
|
для: neadekvat
(03.09.2010 в 17:33)
| | >Как это не работают? Какая версия php у вас?>Как это не работают? Какая версия php у вас?
4,2
а Денвер 5,
а как они будут работать, ведь у меня же нету файла database. и естественно такие запроси думаю тоже не пройду, типа: $res = $this->db->query($qGetCloud);
или же я ошибаюсь? | |
|
|
|
|
|
|
|
для: uvajs
(01.09.2010 в 01:11)
| | очень просто только я бы по-другому сделал, <div style="display: inline; float: left; font-size: размер_зависит_от_количества_записей_под_этой_меткой px;">метка (кол-во зависей)</div>
там в статье все правильно описано три таблицы записи, метки (ид, текст), и таблица связей (ид записи, ид метки) | |
|
|
|
|
|
|
|
для: Красная_шляпа
(02.09.2010 в 23:02)
| | При указании display: inline; нет смысла использовать float, ибо второе применимо только к блокам. | |
|
|
|
|
|
|
|
для: bishake
(03.09.2010 в 10:41)
| | pfnrybcm! | |
|
|
|
|
|
|
|
для: Красная_шляпа
(03.09.2010 в 22:52)
| | >pfnrybcm!
Ребята все это очень хорошо, но я пока не догоняю вас, помогите реализовать этот долбанный скрипт | |
|
|
|
|
|
|
|
для: uvajs
(04.09.2010 в 00:06)
| | запускай php my admin
создавай три таблицы
# entries
id int primary key autoincrement | title varchar(255) | body varchar(2048)
# tags
id int primary key autoincrement | name varchar(255) unique | entries int
# tag_cloud
post_id int | tag_id int
как создашь тогда поговорим | |
|
|
|
|
|
|
|
для: Красная_шляпа
(04.09.2010 в 01:21)
| | >как создашь тогда поговорим
я создал таблички как вы сказали | |
|
|
|
|
|
|
|
для: Красная_шляпа
(04.09.2010 в 01:21)
| | значит создание записи
форма для добавления записи будет иметь три поля заголовок (name=title), текст записи/статьи(name=body) и поле для ввода меток(name=tags). Метки вводятся через запятую. Их обработка будет выглядеть примерно так:
<?php
if (!empty($_POST)) {
// ...
$title = mysql_real_escape_string(trim($_POST["title"]));
$body = mysql_real_escape_string(trimtrim($_POST["body"]));
if (empty($title)) {
echo "Введите заголовок!<br>";
}
else if (mb_strlen($body) < 3) {
echo "Текст должен содержать хотя бы 3 символа<br>";
}
else {
$tags = explode(",", $_POST["tags"]);
$tags = array_map("trim", $tags); // убираем пробелы покраям
$tags = array_map("mb_strtolower", $tags); // переводим в нижний регистр
$tags = array_map("mysql_real_escape_string", $tags);
$tmp = $tags;
$tags = array();
foreach ($tmp as $v ) {
$tags[] = preg_replace("/\s\s*/ui", " ", $v); // убрать повторяющиеся пробелы
}
mysql_query("insert into `entries` values (NULL, '$title', '$body');");
$entry_id = mysql_last_insert_id();
// разумно будет сделать ограничение на количество меток,, например не более 5, но это уже сам
foreach ($tags as $v) {
if ($v == "") continue; // переходим к следующему значение, если текущее пустое
$q = "select id from tags where name = '$v';";
$res = mysql_query($q);
$num = mysql_num_rows($res);
if ($num == 0) {
$tag_id = mysql_result($res, 0) ;
mysql_query("update tags set entries = entries + 1 where id = $id;"); // накручиваем счетчик
}
else {
mysql_query("insert into tags values(NULL, '$v', 0);");
$tag_id = mysql_last_insrt_id();
}
mysql_query("insert into `tag_cloud` values ('$entry_id', '$tag_id');");
} // foreach
}
// ...
} // if !empty $_POST
|
Форму сам сделаешь | |
|
|
|
|
|
|
|
для: Красная_шляпа
(04.09.2010 в 01:55)
| | Выдает ошибку (Fatal error: Call to undefined function trimtrim() in W:\home\engells.com\www\tags_ob.php on line 6) о чем это говорит? | |
|
|
|
|
|
|
|
для: uvajs
(04.09.2010 в 02:15)
| | о том шо trim нужно писать вместо trimtrim | |
|
|
|
|
|
|
|
для: Красная_шляпа
(04.09.2010 в 02:18)
| | >о том шо trim нужно писать вместо trimtrim
теперь вот такие ошибки:
Warning: array_map() [function.array-map]: The first argument, 'mb_strtolower', should be either NULL or a valid callback in W:\home\engells.com\www\tags_ob.php on line 9
Warning: array_map() [function.array-map]: Argument #2 should be an array in W:\home\engells.com\www\tags_ob.php on line 10
Warning: Invalid argument supplied for foreach() in W:\home\engells.com\www\tags_ob.php on line 13
Fatal error: Call to undefined function mysql_last_insert_id() in W:\home\engells.com\www\tags_ob.php on line 17
|
| |
|
|
|
|
|
|
|
для: uvajs
(04.09.2010 в 02:27)
| | то что массив не содержит элементов в поле <input name=tags> введи теги через запятую
тег1, тег2, тег3
код перепиши
<?php
if (!empty($_POST)) {
// ...
$title = mysql_real_escape_string(trim($_POST["title"]));
$body = mysql_real_escape_string(trimtrim($_POST["body"]));
$tags = $_POST["tags"];
if (empty($title)) {
echo "Введите заголовок!<br>";
}
else if (mb_strlen($body) < 3) {
echo "Текст должен содержать хотя бы 3 символа!<br>";
}
else {
mysql_query("insert into `entries` values (NULL, '$title', '$body');");
$entry_id = mysql_insert_id();
if ($tags != "") {
$tags = explode(",", $tags);
$tags = array_map("trim", $tags); // убираем пробелы покраям
$tags = array_map("mb_strtolower", $tags); // переводим в нижний регистр
$tags = array_map("mysql_real_escape_string", $tags);
$tmp = $tags;
$tags = array();
foreach ($tmp as $v ) {
$tags[] = preg_replace("/\s\s*/ui", " ", $v); // убрать повторяющиеся пробелы
}
// разумно будет сделать ограничение на количество меток,, например не более 5, но это уже сам
foreach ($tags as $v) {
if ($v == "") continue; // переходим к следующему значение, если текущее пустое
$q = "select id from tags where name = '$v';";
$res = mysql_query($q);
$num = mysql_num_rows($res);
if ($num == 0) {
$tag_id = mysql_result($res, 0) ;
mysql_query("update tags set entries = entries + 1 where id = $id;"); // накручиваем счетчик
}
else {
mysql_query("insert into tags values(NULL, '$v', 0);");
$tag_id = mysql_insert_id();
}
mysql_query("insert into `tag_cloud` values ($entry_id, $tag_id);");
} // foreach
}
}
// ...
} // if !empty $_POST
|
| |
|
|
|
|
|
|
|
для: Красная_шляпа
(04.09.2010 в 02:36)
| | >то что массив не содержит элементов в поле <input name=tags> введи теги через запятую
>тег1, тег2, тег3
все равно выдает ошибку (Fatal error: Call to undefined function mb_strlen() in W:\home\engells.com\www\tags_ob.php on line 13) | |
|
|
|
|
|
|
|
для: uvajs
(04.09.2010 в 02:59)
| | mb_sring значит не подключен, используй strlen просто mb_ убери у двух этих функций | |
|
|
|
|
|
|
|
для: Красная_шляпа
(04.09.2010 в 03:05)
| | теперь еще разок (Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 6 in W:\home\engells.com\www\tags_ob.php on line 37)
а скажите пожалуйста, это просто добавление да? | |
|
|
|
|
|
|
|
для: uvajs
(04.09.2010 в 03:19)
| | нет, это запуск космической ракеты, параллельно посылая привет инопланетянам из других галактик. | |
|
|
|
|
|
|
|
для: uvajs
(04.09.2010 в 03:19)
| | скинь дамп базы что ты там сделал | |
|
|
|
|
|
|
|
для: Красная_шляпа
(04.09.2010 в 03:39)
| | >скинь дамп базы что ты там сделал
--
-- Структура таблицы `tags`
--
CREATE TABLE `tags` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`entries` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
--
-- Дамп данных таблицы `tags`
--
|
--
-- Структура таблицы `entries`
--
CREATE TABLE `entries` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
`body` varchar(2048) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;
--
-- Дамп данных таблицы `entries`
--
|
--
-- Структура таблицы `tag_cloud`
--
CREATE TABLE `tag_cloud` (
`post_id` int(11) NOT NULL,
`tag_id` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
--
-- Дамп данных таблицы `tag_cloud`
--
|
| |
|
|
|
|
|
|
|
для: uvajs
(04.09.2010 в 12:23)
| | у cp1251 значит mb_string пользоваться не надо
ввместо $tag_id = mysql_result($res, 0) попробуй исп. list($tag_id) = mysql_fetch_row($res); // в php меня бесит что нельзя использовать такие конструкции $var = my_function()[0] когда функция возвращает массив как в python. Код что я написал не проверял ни разу, но по идеи если убрать все ошибки допущенные мной по невнимательности должно работать. Выложи файл обработчик с формой. | |
|
|
|
|
|
|
|
для: Красная_шляпа
(04.09.2010 в 13:42)
| | >Выложи файл обработчик с формой.
<?php
include("block/bd.php");
if (!empty($_POST)) {
// ...
$title = mysql_real_escape_string(trim($_POST["title"]));
$body = mysql_real_escape_string(trim($_POST["body"]));
$tags = $_POST["tags"];
if (empty($title)) {
echo "Введите заголовок!<br>";
}
else if (strlen($body) < 3) {
echo "Текст должен содержать хотя бы 3 символа!<br>";
}
else {
mysql_query("insert into `entries` values (NULL, '$title', '$body');");
$entry_id = mysql_insert_id();
if ($tags != "") {
$tags = explode(",", $tags);
$tags = array_map("trim", $tags); // убираем пробелы покраям
$tags = array_map("strtolower", $tags); // переводим в нижний регистр
$tags = array_map("mysql_real_escape_string", $tags);
$tmp = $tags;
$tags = array();
foreach ($tmp as $v ) {
$tags[] = preg_replace("/\s\s*/ui", " ", $v); // убрать повторяющиеся пробелы
}
// разумно будет сделать ограничение на количество меток,, например не более 5, но это уже сам
foreach ($tags as $v) {
if ($v == "") continue; // переходим к следующему значение, если текущее пустое
$q = "select id from tags where name = '$v';";
$res = mysql_query($q);
$num = mysql_num_rows($res);
if ($num != 0) {
$tag_id = mysql_result($res, 0) ;
mysql_query("update tags set entries = entries + 1 where id = $id;"); // накручиваем счетчик
}
else {
mysql_query("insert into tags values(NULL, '$v', 0);");
$tag_id = mysql_insert_id();
}
mysql_query("insert into `tag_cloud` values ($entry_id, $tag_id);");
} // foreach
}
}
// ...
} // if !empty $_POST
?>
|
форма
<form action="tags_ob.php" method="post" name="form_1">
<input name="title" type="text"><br>
<input name="body" type="text"><br>
<input name="tags" type="text"><br>
<input name="sub_s" type="submit" value="Добавить">
</form>
|
| |
|
|
|
|
|
|
|
для: uvajs
(04.09.2010 в 14:28)
| | Исправь форму
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<div>
<table>
<tr><td>Название: </td><td><input name="title" type="text" title="Поле не должно быть пустым"></td></tr>
<tr><td>Метки(через запятую): </td><td><input name="tags" type="text"></td></tr>
</table>
<textarea name="body" cols="64" rows="24" title="Должен содержать хотя бы три символа">Введите текст</textarea><br><br>
<input type="submit" value="Добавить">
</div>
</form>
|
Вывод тегов
<?php
include("block/bd.php");
function print_tag($name, $n/* количество записей под данной меткой */) {
$font_size = 10;
if ($n >= 10) {
$font_size*= 1.1;
}
if ($n >= 50) {
$font_size*= 1.1;
}
if ($n >= 100) {
$font_size*= 1.1;
}
if ($n >= 500) {
$font_size*= 1.1;
}
if ($n >= 1000) {
$font_size*= 1.1;
}
return "<div style='display: table-cell; float: left;'><a href='#' style='font-size: {$font_size}pt;'>$name<sup>$n</sup></a></div>";
}
$arr = array();
while ($num_arr = mysql_fetch_row(mysql_query("select `name`, `entries` from `tags`;")) $arr[] = $num_arr;
$arr = shufle_array($arr);
foreach ($arr as $v) {
echo print_tag($v[0], $v[1]);
}
?>
|
| |
|
|
|
|
|
|
|
для: Красная_шляпа
(04.09.2010 в 19:31)
| | этот запрос вызывает ошибку
while ($num_arr = mysql_fetch_row(mysql_query("select `name`, `entries` from `tags`;")) $arr[] = $num_arr;
| (Parse error: syntax error, unexpected T_VARIABLE in W:\home\engells.com\www\block\right_td.php on line 161) | |
|
|
|
|
|
|
|
для: uvajs
(04.09.2010 в 21:21)
| | > while ($num_arr = mysql_fetch_row(mysql_query("select `name`, `entries` from `tags`;")) $arr[] = $num_arr;
н-да... строка отпадная сама по себе | |
|
|
|
|
|
|
|
для: Красная_шляпа
(04.09.2010 в 19:31)
| | Красная_шляпа
ну где же вы????????? | |
|
|
|
|
 8.3 Кб |
|
|
для: uvajs
(05.09.2010 в 17:14)
| | Вот это работает | |
|
|
|
|
|
|
|
для: Красная_шляпа
(06.09.2010 в 20:50)
| | >Вот это работает
а у меня почему- то нет...
вот эта ошибка (Parse error: syntax error, unexpected T_VARIABLE in W:\home\engells.com\www\block\right_td.php on line 161)
и вот строка 161
while ($num_arr = mysql_fetch_row(mysql_query("select `name`, `entries` from `tags`;")) $arr[] = $num_arr;
|
в чем ошибка? | |
|
|
|
|
|
|
|
для: uvajs
(06.09.2010 в 21:49)
| | $r = mysql_query("select `name`, `entries` from `tags`;");
while ($num_arr = mysql_fetch_row($r)) $arr[] = $num_arr;
скачай атач | |
|
|
|
|
|
|
|
для: Красная_шляпа
(07.09.2010 в 09:24)
| | >$r = mysql_query("select `name`, `entries` from `tags`;");
>while ($num_arr = mysql_fetch_row($r)) $arr[] = $num_arr;
>
>скачай атач
Ошибка: пишет про этот функции $arr = shufle_array($arr); неизвест.
зачем он вообще? | |
|
|
|
|
|
|
|
для: uvajs
(07.09.2010 в 20:51)
| | архив скачай и посмотри там всё работает | |
|
|
|
|
|
|
|
для: Красная_шляпа
(08.09.2010 в 17:45)
| | http://www.simplecoding.org/kak-sozdat-oblako-tegov-dlya-svoego-sajta.html
Реализовал этот скрипт на сайте. теперь другой вопрос: статьи добавляются через админку, хотел так чтобы при добавление статьи, чтобы можно было выбрать тег... подскажите пожалуйста как это дело реализовать правильно??????? | |
|
|
|
|
|
|
|
для: uvajs
(23.09.2010 в 23:17)
| | ни у кого идеи нет? | |
|
|
|
|
|
|
|
для: uvajs
(24.09.2010 в 00:20)
| | это как должно выглядеть? | |
|
|
|
|
|
|
|
для: Красная_шляпа
(24.09.2010 в 14:07)
| | >это как должно выглядеть?
в смысле? | |
|
|
|
|
|
|
|
для: uvajs
(24.09.2010 в 16:36)
| | в смысле из списка выбирать или как? Затея не очень понятная. | |
|
|
|
|
|
|
|
для: Красная_шляпа
(24.09.2010 в 19:36)
| | >в смысле из списка выбирать или как? Затея не очень понятная.
в админке при добавление статьи там буде список всех тэгов с в select. чтобы добавить сразу тэг к статье, мне нужен его id, а его пока не знаем пока не добавим заметку в базу. как быть? | |
|
|
|
|
|
|
|
для: uvajs
(25.09.2010 в 16:51)
| | Добавить в список пункт "новый", при выборе которого появляется поле input (type=text) для ввода этого нового тэга. Затем он при обработки статьи добавляется в бд, запрашивается его id и собстно этот полученный id заносится в таблицу с тэгами к данной записи. | |
|
|
|
|
|
|
|
для: neadekvat
(26.09.2010 в 13:07)
| | >Добавить в список пункт "новый", при выборе которого появляется поле input (type=text) для ввода этого нового тэга. Затем он при обработки статьи добавляется в бд, запрашивается его id и собстно этот полученный id заносится в таблицу с тэгами к данной записи.
у меня тэги уже есть, добавлять тэги больше не нужно. а нужно чтобы можно было выбрать тэг из списка | |
|
|
|
|
|
|
|
для: uvajs
(26.09.2010 в 13:22)
| | > чтобы добавить сразу тэг к статье, мне нужен его id, а его пока не знаем пока не добавим заметку в базу.
Тогда и майа твайа нипанимать.
Есть селекты, в них есть value, где value - id конкретного тэга.
Нажимаем "добавить заметку", и обработчик сначала добавляет заметку, а потом уже по имеющемуся id заметки добавляет тэги, переданные в списке. | |
|
|
|
|
|
|
|
для: neadekvat
(26.09.2010 в 14:00)
| | сделал список с помощью select. вот теперь кроме одного, больше выбирать не могу тэгов, т.е. выбираю админке, но в базу добавляется почему то только один тэг. в чем может быть причина подскажите?
если изменю список на checkbox будет изменение?
Выберите тег статьи:<br>
<select name="tag" size="<?php echo $count;?>" multiple="multiple">
<?
$result = mysql_query("SELECT tag,id FROM tags",$db);
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел.</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['tag']);
}
while ($myrow = mysql_fetch_array($result));
}
else
{
echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}
?>
</select>
|
| |
|
|
|
|
|
|
|
для: uvajs
(26.09.2010 в 19:08)
| | А обработчик показать? | |
|
|
|
|
|
|
|
для: neadekvat
(26.09.2010 в 19:28)
| | >А обработчик показать?
<?php
include ("block/bd.php");
if(isset($_POST['submit_s'])) {$submit_s = $_POST['submit_s'];}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title></title>
<link href="style.css" rel="stylesheet" type="text/css">
<link href="style2.css" rel="stylesheet" type="text/css">
<link rel="icon" href="http://engells.com/favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="http://engells.com/favicon.ico" type="image/x-icon">
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<?php include("block/header.php");?>
</tr>
<tr>
<td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<?php include("block/left_td.php");?>
<td valign="top">
<?php
if(!isset($submit_s))
{
$date = date("Y-m-d");
echo <<<HERE
<form name="form1" method="post" action="new_post.php">
<p>
<label>Введите название урока<br>
<input type="text" name="title" id="title">
</label>
</p>
<p>
<label>Введите краткое описание урока<br>
<input type="text" name="meta_d" id="meta_d">
</label>
</p>
<p>
<label>Введите ключевые слова для урока<br>
<input type="text" name="meta_k" id="meta_k">
</label>
</p>
<p>
<label>Введите дату добавления урока<br>
<input name="date" type="text" id="date" value="$date">
</label>
</p>
<p>
<label>Ведите краткое описание урока с тэгами абзацев<br>
<textarea name="description" id="description" cols="80" rows="5"></textarea>
</label>
</p>
<p>
<label>Введите полный текст урока с тэгами<br>
<textarea name="text" id="text" cols="80" rows="20"></textarea>
</label>
</p>
<p>
<label>Введите автора урока<br>
<input type="text" name="author" id="author">
</label>
</p>
<p>
<label>Введите где лежит миниатюра<br>
<input type="text" name="img" id="img">
</label>
</p>
<p>
<label>Выберите категорию урока<br>
HERE;
?>
<select name="rub">
<?
$result = mysql_query("SELECT title,id FROM categories WHERE page='1'",$db);
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. </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();
}
$result0 = mysql_query("SELECT id FROM tags",$db);
$count = mysql_num_rows($result0);
?>
</select>
<br><br>
Выберите тег статьи:<br>
<select name="tag" size="<?php echo $count;?>" multiple="multiple">
<?
$result = mysql_query("SELECT tag,id FROM tags",$db);
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел.</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['tag']);
}
while ($myrow = mysql_fetch_array($result));
}
else
{
echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}
?>
</select>
</label>
</p>
<p>
<label>
<input type="submit" name="submit_s" id="submit_s" value="Занести заметку в базу">
</label>
</p>
</form>
<?
}
else{
if (isset($_POST['title']))
{
$title = $_POST['title'];
if ($title == '')
{
unset($title);
}
}
/* Если существует в глобальном массиве $_POST['title'] опр. ячейка, то мы создаем простую переменную из неё. Если переменная пустая, то уничтожаем переменную. */
if (isset($_POST['meta_d'])) {$meta_d = $_POST['meta_d']; if ($meta_d == '') {unset($meta_d);}}
if (isset($_POST['meta_k'])) {$meta_k = $_POST['meta_k']; if ($meta_k == '') {unset($meta_k);}}
if (isset($_POST['date'])) {$date = $_POST['date']; if ($date == '') {unset($date);}}
if (isset($_POST['description'])) {$description = $_POST['description']; if ($description == '') {unset($description);}}
if (isset($_POST['text'])) {$text = $_POST['text']; if ($text == '') {unset($text);}}
if (isset($_POST['author'])) {$author = $_POST['author']; if ($author == '') {unset($author);}}
if (isset($_POST['img'])) {$img = $_POST['img']; if ($img == '') {unset($img);}}
if (isset($_POST['rub'])) {$rub = $_POST['rub']; if ($rub == '') {unset($rub);}}
if (isset($_POST['tag'])) {$tag = $_POST['tag']; if ($tag == '') {unset($tag);}}
if (isset($title) && isset($meta_d) && isset($meta_k) && isset($date) && isset($description) && isset($text) && isset($author) && isset($img) && isset($rub) && isset($tag))
{
/* Здесь пишем что можно заносить информацию в базу */
$result = mysql_query("INSERT INTO data (title,meta_d,meta_k,date,description,text,author,mini_img,rub) VALUES ('$title', '$meta_d','$meta_k','$date','$description','$text','$author','$img','$rub')");
$data_id = mysql_insert_id();
$result2 = mysql_query("INSERT INTO posts_tags (tagid,dataid) VALUES ('$tag','$data_id')",$db);
if ($result == 'true') {echo "<p>Ваша заметка успешно добалена!</p>";}
else {echo "<p>Ваша заметка не добалена!</p>";}
}
else
{
echo "<p>Вы ввели не всю информацию, поэтому заметка в базу не может быть добалена.</p>";
}
}
?>
</td>
<?php include("block/right_td.php");?>
</tr>
</table></td>
</tr>
<tr>
<?php include("block/footer.php");?>
</tr>
</table>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: uvajs
(26.09.2010 в 19:51)
| | В селекте измените имя с tag на tag[], через POST получите массив выбранных тэгов.
И при внесении в базу соответственно не как строку обрабатывать, а как массив, типа этого:
<?php
foreach ($_POST['tag'] as $tag)
mysql_query("INSERT INTO posts_tags (tagid,dataid) VALUES ('$tag','$data_id')",$db);
|
| |
|
|
|
|
|
|
|
для: neadekvat
(26.09.2010 в 19:58)
| | >В селекте измените имя с tag на tag[], через POST получите массив выбранных тэгов.
>И при внесении в базу соответственно не как строку обрабатывать, а как массив, типа этого:
>
<?php
>foreach ($_POST['tag'] as $tag)
> mysql_query("INSERT INTO posts_tags (tagid,dataid) VALUES ('$tag','$data_id')",$db);
|
Простите не совсем Вас понял, можно подробнее????
и на что tag изменить? | |
|
|
|
|
|
|
|
для: uvajs
(26.09.2010 в 21:17)
| | заменить name="tag" на name="tag[]"
А дальше я показал как надо добавлять в бд.
Еще лучше на пустой странице сделать так:
<?php
if ($_POST) print_r($_POST);
?>
<form method="POST">
<select name="tag" size="3" multiple="multiple">
<option value=1>sdfsdf
<option value=2>sdfsdf
<option value=3>sdfsdf
<option value=4>sdfsdf
<option value=5>sdfsdf
</select>
<input type="submit">
</form>
|
И так
<?php
if ($_POST) print_r($_POST);
?>
<form method="POST">
<select name="tag[]" size="3" multiple="multiple">
<option value=1>sdfsdf
<option value=2>sdfsdf
<option value=3>sdfsdf
<option value=4>sdfsdf
<option value=5>sdfsdf
</select>
<input type="submit">
</form>
|
Чтобы разобраться, в чем разница | |
|
|
|
|
|
|
|
для: neadekvat
(26.09.2010 в 21:36)
| | Спасибо Вам большое, получилось!!!!! | |
|
|
|
|
|
|
|
для: Красная_шляпа
(04.09.2010 в 13:42)
| | вот шас никаких ошибок, все нормально добавляется в базу. а как теперь вывести тэги? | |
|
|
|
|
|
|
|
для: Красная_шляпа
(04.09.2010 в 02:36)
| |
<?php
if (!empty($_POST)) {
// ...
$title = mysql_real_escape_string(trim($_POST["title"]));
$body = mysql_real_escape_string(trim($_POST["body"]));
$tags = $_POST["tags"];
if (empty($title)) {
echo "Введите заголовок!<br>";
}
else if (mb_strlen($body) < 3) {
echo "Текст должен содержать хотя бы 3 символа!<br>";
}
else {
mysql_query("insert into `entries` values (NULL, '$title', '$body');");
$entry_id = mysql_insert_id();
if ($tags != "") {
$tags = explode(",", $tags);
$tags = array_map("trim", $tags); // убираем пробелы покраям
$tags = array_map("mb_strtolower", $tags); // переводим в нижний регистр
$tags = array_map("mysql_real_escape_string", $tags);
$tmp = $tags;
$tags = array();
foreach ($tmp as $v ) {
$tags[] = preg_replace("/\s\s*/ui", " ", $v); // убрать повторяющиеся пробелы
}
// разумно будет сделать ограничение на количество меток,, например не более 5, но это уже сам
foreach ($tags as $v) {
if ($v == "") continue; // переходим к следующему значение, если текущее пустое
$q = "select id from tags where name = '$v';";
$res = mysql_query($q);
$num = mysql_num_rows($res);
if ($num != 0) {
$tag_id = mysql_result($res, 0) ;
mysql_query("update tags set entries = entries + 1 where id = $id;"); // накручиваем счетчик
}
else {
mysql_query("insert into tags values(NULL, '$v', 0);");
$tag_id = mysql_insert_id();
}
mysql_query("insert into `tag_cloud` values ($entry_id, $tag_id);");
} // foreach
}
}
// ...
} // if !empty $_POST
|
| |
|
|
|