Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
Мануальное добавление топиков.
Код: Выделить всё
// Вот вобщем то, что я наваял. Как я говорил на форуме - я начинающий в пхп,
// и поэтому, этот код наверняка не идельный.
// Так же, тут не реализовано ещё дофига всего (нет записи айпишника, нет
// добавления в поисковую систему форума и пр.), но лично мне оно и не надо было,
// а дописать это наверняка не сильно сложно.
function add_topic($header, $body, $user_id, $forum_id)
//$header - Заголовок поста;
//$body - непосредственно сам пост;
//$user_id - id юзера из таблицы users;
//$forum_id - id раздела форума в который добвляется топик.
{
if (!($conn = db_connect())) echo "Неполадки с базой<br>";
// db_connect - моя внутреннаяя функция подключеня к базе. Её надо заменить на свою.
mt_srand((double) microtime() * 1000000);
$cur_time=time("U");
$sql = mysql_query("insert into phpbb_posts (poster_id, forum_id, post_time, enable_html) values ('$user_id','$forum_id','$cur_time','1')");
if (!$sql) echo "Query Error 1!";
// Создаём пост.
$sql = mysql_query ("select post_id from phpbb_posts order by post_id desc");
if (!$sql) echo "Query Error 2!";
$post_id = mysql_fetch_row($sql);
// Получаем id созданого поста.
$uid = md5(mt_rand());
$uid = substr($uid, 0, 9);
$sql = mysql_query("insert into phpbb_posts_text (post_id, bbcode_uid, post_subject, post_text) values ('$post_id[0]', '$uid','$header', '$body')");
if (!$sql) echo "Query Error 3!";
// Создаём для поста текст.
$sql = mysql_query("insert into phpbb_topics (forum_id, topic_title, topic_poster, topic_time, topic_first_post_id, topic_last_post_id) values ('$forum_id','$header','$user_id', '$cur_time','$post_id[0]', '$post_id[0]')");
if (!$sql) echo "Query Error 4!";
// Создаём топик.
$sql = mysql_query ("select topic_id from phpbb_topics order by topic_id desc");
if (!$sql) echo "Query Error 5!";
$topic_id = mysql_fetch_row($sql);
// Получаем id созданного топика.
$sql = mysql_query("update phpbb_posts set topic_id = '$topic_id[0]' where post_id = '$post_id[0]' ");
if (!$sql) echo "Query Error 6!";
// Обновляем таблицу постов.
$sql = mysql_query ("select forum_posts, forum_topics from phpbb_forums where forum_id = '$forum_id'");
if (!$sql) echo "Query Error 7!";
$forum_int = mysql_fetch_row($sql);
// Получаем кол-во постов и топиков...
$forum_posts=$forum_int[0]+1;
$forum_topics =$forum_int[1]+1;
// ...увеличиваем на 1...
$sql = mysql_query("update phpbb_forums set forum_posts = '$forum_posts', forum_topics ='$forum_topics', forum_last_post_id = '$post_id[0]' where forum_id = '$forum_id' ");
if (!$sql) echo "Query Error 8!";
// ...и записываем новые значения.
$sql = mysql_query ("select user_posts from phpbb_users where user_id = '$user_id'");
if (!$sql) echo "Query Error 9!";
$up = mysql_fetch_row($sql);
// Получаем кол-во сообщений пользователя который от имени которого создаётся пост...
$user_posts = $up[0]+1;
$sql = mysql_query("update phpbb_users set user_posts = '$user_posts' where user_id = '$user_id' ");
if (!$sql) echo "Query Error 10!";
// ...увеличиваем на 1 и записываем новое значение.
return $topic_id[0];
// Функция возвращает id топика. ./../viewtopic.php?t=$topic_id[0]
}
Добавлено спустя 2 минуты 47 секунд:
Вот, у меня иногда, выскакиевает "Query Error 3!", чего не так? Может какие-то ограничения на что-нибудь есть?
-
- phpBB Guru
- Сообщения: 5484
- Зарегистрирован: 20 лет 1 месяц
- Поблагодарили: 2 раза
Код: Выделить всё
$sql = mysql_query("insert into phpbb_posts (poster_id, forum_id, post_time, enable_html) values ('$user_id','$forum_id','$cur_time','1')");
if (!$sql) echo "Query Error 1!";
Код: Выделить всё
$sql = "insert into phpbb_posts (poster_id, forum_id, post_time, enable_html) values ('$user_id','$forum_id','$cur_time','1')";
mysql_query($sql) or die('Query Error: '.mysql_error());
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Код: Выделить всё
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /.../db_fns.php on line 171
Query Error3: Duplicate entry '0' for key 1
-
- phpBB Guru
- Сообщения: 5484
- Зарегистрирован: 20 лет 1 месяц
- Поблагодарили: 2 раза
Сначала происходит ошибка здесь:
Как результат получаем некорректный post_id для вставляемого сообщения, который по всей видимости дублирует уже существующий:
Код: Выделить всё
$sql = mysql_query ("select post_id from phpbb_posts order by post_id desc");
if (!$sql) echo "Query Error 2!";
$post_id = mysql_fetch_row($sql);
Попробуй тогда применить такой код для получения еще более подробного сообщения об ошибке:Duplicate entry '0' for key 1
Код: Выделить всё
$sql = "insert into phpbb_posts (poster_id, forum_id, post_time, enable_html) values ('$user_id','$forum_id','$cur_time','1')";
mysql_query($sql) or die('Query Error: '.mysql_error().'<br>SQL: '. "$sql");
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Угу. Попробывал. Оказалось что post_id = "
И что не так?
Добавлено спустя 1 минуту 51 секунду:
И что не так?
Добавлено спустя 1 минуту 51 секунду:
Код: Выделить всё
Query Error: Duplicate entry '0' for key 1
SQL: insert into phpbb_posts_text (post_id, bbcode_uid, post_subject, post_text) values ('', .....
-
- phpBB Guru
- Сообщения: 5484
- Зарегистрирован: 20 лет 1 месяц
- Поблагодарили: 2 раза
Почитай: mysql_insert_id
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
-
- phpBB Guru
- Сообщения: 5484
- Зарегистрирован: 20 лет 1 месяц
- Поблагодарили: 2 раза
Да, в этом моменте всё заработало. Зато теперь глюки в этих местах:
Ну и в следующем где испоьзуется mysql_fetch_row($sql)....
Может есть какой-нить sql запрос который на 1 увеличивает?
----------------------------
Не понимаю почему перестало работать mysql_fetch_row($sql); Раньше всё было о.к....
Код: Выделить всё
$forum_int = mysql_fetch_row($sql);
// Получаем кол-во постов и топиков...
$forum_posts=$forum_int[0]+1;
$forum_topics =$forum_int[1]+1;
// ...увеличиваем на 1...
$sql = mysql_query("update phpbb_forums set forum_posts = '$forum_posts', forum_topics ='$forum_topics', forum_last_post_id = '$post_id[0]' where forum_id = '$forum_id' ");
Может есть какой-нить sql запрос который на 1 увеличивает?
----------------------------
Не понимаю почему перестало работать mysql_fetch_row($sql); Раньше всё было о.к....
-
- phpBB Guru
- Сообщения: 5484
- Зарегистрирован: 20 лет 1 месяц
- Поблагодарили: 2 раза
Код: Выделить всё
$sql = mysql_query("update phpbb_forums set forum_posts = forum_posts + 1, forum_topics = forum_topics + 1, forum_last_post_id = '$post_id[0]' where forum_id = '$forum_id' ");
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Ага. Вроде пока работает....
Но я всё равно не пойму, почему это не работает. Ведь раньше работало!
Но я всё равно не пойму, почему это
Код: Выделить всё
mysql_fetch_row($sql);
Вот решил сделать так, чтобы ещё и картинка в тело сообщения добавлялась.
Вот только почему-то при просмотре сообщения вместо картинки отображается только код. Если нажать кнопку "редктировать сообщение", а потом, ничего не редактируя, нажать "ок", то всё становиться нормально, и картинка показывается...
Почему картинка сразу не отображается нормально???
Код: Выделить всё
[img:uid]http://www.bla-bla.com/name.jpg[/img]
Почему картинка сразу не отображается нормально???
-
- phpBB Guru
- Сообщения: 5484
- Зарегистрирован: 20 лет 1 месяц
- Поблагодарили: 2 раза
Вообще-то закрывающий тег тоже должен иметь в своем составе bbcode uid, т.е.:
Код: Выделить всё
[img:uid]http://www.bla-bla.com/name.jpg[/img:uid]
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений