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

Форум PHP

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

 

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

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

тема: Облако тэгов
 
 автор: uvajs   (01.09.2010 в 01:11)   письмо автору
 
 

Подскажите пожалуйста, как реализовать этот скрипт на самописанном сайте? на сколько я понимаю, тут рассматривается Code Igniter


http://www.simplecoding.org/kak-sozdat-oblako-tegov-dlya-svoego-sajta.html

  Ответить  
 
 автор: mihdan   (02.09.2010 в 22:50)   письмо автору
 
   для: uvajs   (01.09.2010 в 01:11)
 

Рассматривается алгоритм и реализация на РНР и немного кода от фреймворка. В чем проблема написать на чистом РНР?

  Ответить  
 
 автор: uvajs   (03.09.2010 в 17:06)   письмо автору
 
   для: mihdan   (02.09.2010 в 22:50)
 

У меня же на сайте не работают классы, как быть?

  Ответить  
 
 автор: neadekvat   (03.09.2010 в 17:33)   письмо автору
 
   для: uvajs   (03.09.2010 в 17:06)
 

Как это не работают? Какая версия php у вас?

  Ответить  
 
 автор: uvajs   (03.09.2010 в 17:37)   письмо автору
 
   для: neadekvat   (03.09.2010 в 17:33)
 

>Как это не работают? Какая версия php у вас?>Как это не работают? Какая версия php у вас?

4,2

а Денвер 5,

а как они будут работать, ведь у меня же нету файла database. и естественно такие запроси думаю тоже не пройду, типа: $res = $this->db->query($qGetCloud);

или же я ошибаюсь?

  Ответить  
 
 автор: Красная_шляпа   (02.09.2010 в 23:02)   письмо автору
 
   для: uvajs   (01.09.2010 в 01:11)
 

очень просто только я бы по-другому сделал, <div style="display: inline; float: left; font-size: размер_зависит_от_количества_записей_под_этой_меткой px;">метка (кол-во зависей)</div>
там в статье все правильно описано три таблицы записи, метки (ид, текст), и таблица связей (ид записи, ид метки)

  Ответить  
 
 автор: bishake   (03.09.2010 в 10:41)   письмо автору
 
   для: Красная_шляпа   (02.09.2010 в 23:02)
 

При указании display: inline; нет смысла использовать float, ибо второе применимо только к блокам.

  Ответить  
 
 автор: Красная_шляпа   (03.09.2010 в 22:52)   письмо автору
 
   для: bishake   (03.09.2010 в 10:41)
 

pfnrybcm!

  Ответить  
 
 автор: uvajs   (04.09.2010 в 00:06)   письмо автору
 
   для: Красная_шляпа   (03.09.2010 в 22:52)
 

>pfnrybcm!
Ребята все это очень хорошо, но я пока не догоняю вас, помогите реализовать этот долбанный скрипт

  Ответить  
 
 автор: Красная_шляпа   (04.09.2010 в 01:21)   письмо автору
 
   для: 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

как создашь тогда поговорим

  Ответить  
 
 автор: uvajs   (04.09.2010 в 01:33)   письмо автору
 
   для: Красная_шляпа   (04.09.2010 в 01:21)
 

>как создашь тогда поговорим

я создал таблички как вы сказали

  Ответить  
 
 автор: Красная_шляпа   (04.09.2010 в 01:55)   письмо автору
 
   для: Красная_шляпа   (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($res0) ;
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



Форму сам сделаешь

  Ответить  
 
 автор: uvajs   (04.09.2010 в 02:15)   письмо автору
 
   для: Красная_шляпа   (04.09.2010 в 01:55)
 

Выдает ошибку (Fatal error: Call to undefined function trimtrim() in W:\home\engells.com\www\tags_ob.php on line 6) о чем это говорит?

  Ответить  
 
 автор: Красная_шляпа   (04.09.2010 в 02:18)   письмо автору
 
   для: uvajs   (04.09.2010 в 02:15)
 

о том шо trim нужно писать вместо trimtrim

  Ответить  
 
 автор: uvajs   (04.09.2010 в 02:27)   письмо автору
 
   для: Красная_шляпа   (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

  Ответить  
 
 автор: Красная_шляпа   (04.09.2010 в 02:36)   письмо автору
 
   для: 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($res0) ; 
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

  Ответить  
 
 автор: uvajs   (04.09.2010 в 02:59)   письмо автору
 
   для: Красная_шляпа   (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)

  Ответить  
 
 автор: Красная_шляпа   (04.09.2010 в 03:05)   письмо автору
 
   для: uvajs   (04.09.2010 в 02:59)
 

mb_sring значит не подключен, используй strlen просто mb_ убери у двух этих функций

  Ответить  
 
 автор: uvajs   (04.09.2010 в 03:19)   письмо автору
 
   для: Красная_шляпа   (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)


а скажите пожалуйста, это просто добавление да?

  Ответить  
 
 автор: sl1p   (04.09.2010 в 03:20)   письмо автору
 
   для: uvajs   (04.09.2010 в 03:19)
 

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

  Ответить  
 
 автор: Красная_шляпа   (04.09.2010 в 03:39)   письмо автору
 
   для: uvajs   (04.09.2010 в 03:19)
 

скинь дамп базы что ты там сделал

  Ответить  
 
 автор: uvajs   (04.09.2010 в 12:23)   письмо автору
 
   для: Красная_шляпа   (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`
-- 

  Ответить  
 
 автор: Красная_шляпа   (04.09.2010 в 13:42)   письмо автору
 
   для: 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. Код что я написал не проверял ни разу, но по идеи если убрать все ошибки допущенные мной по невнимательности должно работать. Выложи файл обработчик с формой.

  Ответить  
 
 автор: uvajs   (04.09.2010 в 14:28)   письмо автору
 
   для: Красная_шляпа   (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($res0) ;   
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>

  Ответить  
 
 автор: Красная_шляпа   (04.09.2010 в 19:31)   письмо автору
 
   для: 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]);
}

?>

  Ответить  
 
 автор: uvajs   (04.09.2010 в 21:21)   письмо автору
 
   для: Красная_шляпа   (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)

  Ответить  
 
 автор: Trianon   (04.09.2010 в 22:06)   письмо автору
 
   для: uvajs   (04.09.2010 в 21:21)
 

> while ($num_arr = mysql_fetch_row(mysql_query("select `name`, `entries` from `tags`;")) $arr[] = $num_arr;
н-да... строка отпадная сама по себе

  Ответить  
 
 автор: uvajs   (05.09.2010 в 17:14)   письмо автору
 
   для: Красная_шляпа   (04.09.2010 в 19:31)
 

Красная_шляпа

ну где же вы?????????

  Ответить  
 
 автор: Красная_шляпа   (06.09.2010 в 20:50)   письмо автору
8.3 Кб
 
   для: uvajs   (05.09.2010 в 17:14)
 

Вот это работает

  Ответить  
 
 автор: uvajs   (06.09.2010 в 21:49)   письмо автору
 
   для: Красная_шляпа   (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;


в чем ошибка?

  Ответить  
 
 автор: Красная_шляпа   (07.09.2010 в 09:24)   письмо автору
 
   для: uvajs   (06.09.2010 в 21:49)
 

$r = mysql_query("select `name`, `entries` from `tags`;");
while ($num_arr = mysql_fetch_row($r)) $arr[] = $num_arr;

скачай атач

  Ответить  
 
 автор: uvajs   (07.09.2010 в 20:51)   письмо автору
 
   для: Красная_шляпа   (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); неизвест.

зачем он вообще?

  Ответить  
 
 автор: Красная_шляпа   (08.09.2010 в 17:45)   письмо автору
 
   для: uvajs   (07.09.2010 в 20:51)
 

архив скачай и посмотри там всё работает

  Ответить  
 
 автор: uvajs   (23.09.2010 в 23:17)   письмо автору
 
   для: Красная_шляпа   (08.09.2010 в 17:45)
 

http://www.simplecoding.org/kak-sozdat-oblako-tegov-dlya-svoego-sajta.html

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

  Ответить  
 
 автор: uvajs   (24.09.2010 в 00:20)   письмо автору
 
   для: uvajs   (23.09.2010 в 23:17)
 

ни у кого идеи нет?

  Ответить  
 
 автор: Красная_шляпа   (24.09.2010 в 14:07)   письмо автору
 
   для: uvajs   (24.09.2010 в 00:20)
 

это как должно выглядеть?

  Ответить  
 
 автор: uvajs   (24.09.2010 в 16:36)   письмо автору
 
   для: Красная_шляпа   (24.09.2010 в 14:07)
 

>это как должно выглядеть?

в смысле?

  Ответить  
 
 автор: Красная_шляпа   (24.09.2010 в 19:36)   письмо автору
 
   для: uvajs   (24.09.2010 в 16:36)
 

в смысле из списка выбирать или как? Затея не очень понятная.

  Ответить  
 
 автор: uvajs   (25.09.2010 в 16:51)   письмо автору
 
   для: Красная_шляпа   (24.09.2010 в 19:36)
 

>в смысле из списка выбирать или как? Затея не очень понятная.

в админке при добавление статьи там буде список всех тэгов с в select. чтобы добавить сразу тэг к статье, мне нужен его id, а его пока не знаем пока не добавим заметку в базу. как быть?

  Ответить  
 
 автор: neadekvat   (26.09.2010 в 13:07)   письмо автору
 
   для: uvajs   (25.09.2010 в 16:51)
 

Добавить в список пункт "новый", при выборе которого появляется поле input (type=text) для ввода этого нового тэга. Затем он при обработки статьи добавляется в бд, запрашивается его id и собстно этот полученный id заносится в таблицу с тэгами к данной записи.

  Ответить  
 
 автор: uvajs   (26.09.2010 в 13:22)   письмо автору
 
   для: neadekvat   (26.09.2010 в 13:07)
 

>Добавить в список пункт "новый", при выборе которого появляется поле input (type=text) для ввода этого нового тэга. Затем он при обработки статьи добавляется в бд, запрашивается его id и собстно этот полученный id заносится в таблицу с тэгами к данной записи.

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

  Ответить  
 
 автор: neadekvat   (26.09.2010 в 14:00)   письмо автору
 
   для: uvajs   (26.09.2010 в 13:22)
 

> чтобы добавить сразу тэг к статье, мне нужен его id, а его пока не знаем пока не добавим заметку в базу.
Тогда и майа твайа нипанимать.

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

  Ответить  
 
 автор: uvajs   (26.09.2010 в 19:08)   письмо автору
 
   для: 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>

  Ответить  
 
 автор: neadekvat   (26.09.2010 в 19:28)   письмо автору
 
   для: uvajs   (26.09.2010 в 19:08)
 

А обработчик показать?

  Ответить  
 
 автор: uvajs   (26.09.2010 в 19:51)   письмо автору
 
   для: 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">&nbsp;
<?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>

  Ответить  
 
 автор: neadekvat   (26.09.2010 в 19:58)   письмо автору
 
   для: 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);

  Ответить  
 
 автор: uvajs   (26.09.2010 в 21:17)   письмо автору
 
   для: 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 изменить?

  Ответить  
 
 автор: neadekvat   (26.09.2010 в 21:36)   письмо автору
 
   для: uvajs   (26.09.2010 в 21:17)
 

заменить name="tag" на name="tag[]"
А дальше я показал как надо добавлять в бд.
Еще лучше на пустой странице сделать так:
<?php
if ($_POSTprint_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 ($_POSTprint_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>


Чтобы разобраться, в чем разница

  Ответить  
 
 автор: uvajs   (26.09.2010 в 21:48)   письмо автору
 
   для: neadekvat   (26.09.2010 в 21:36)
 

Спасибо Вам большое, получилось!!!!!

  Ответить  
 
 автор: uvajs   (04.09.2010 в 14:33)   письмо автору
 
   для: Красная_шляпа   (04.09.2010 в 13:42)
 

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

  Ответить  
 
 автор: Красная_шляпа   (04.09.2010 в 03:38)   письмо автору
 
   для: Красная_шляпа   (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($res0) ;  
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

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

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