Добавить тему в phpbb

Тема в разделе "PHP", создана пользователем Mikhail.M, 19 сен 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Mikhail.M

    Mikhail.M Создатель

    Регистр.:
    2 июл 2008
    Сообщения:
    11
    Симпатии:
    4
    Нужен скрипт, например в файле addpost.php, при запуске которого на форум, работающий на phpbb будет добавлятся тема. Моих знаний, которые я подчерпнул из первых глав "PHP для чайников" для этого не хватает:( И уж конечно в mysql я ничего не понимаю :ah:
    Названия темы, автор, само сообщение, раздел и т.д. хранятся в определенных переменных. Просто нужно: запускаешь скрипт - новая тема с текущим временем создания добавилась.
    Может у кого-нибудь есть что то похожее?
     
  2. Nafania

    Nafania

    Регистр.:
    24 мар 2007
    Сообщения:
    167
    Симпатии:
    46
    Для удаленного форума или своего?
     
  3. Mikhail.M

    Mikhail.M Создатель

    Регистр.:
    2 июл 2008
    Сообщения:
    11
    Симпатии:
    4
    Для своего.
     
  4. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Вот функция из сабдримера, думаю сам разберешься че отсюда взять.
    PHP:
    function ForumArticle($forumids)
    {
      global 
    $DB$userinfo$dbname$usersystem$sdurl;

      
    $timenow time();

      
    // get article's post vars
      
    $title       $_POST['title'];
      
    $description $_POST['description'] == ' ' '' $_POST['description']; // sometimes fckeditor adds a &nsbp;
      
    $article     $_POST['article'];

      
    // include description in article?
      
    if(isset($_POST['displaydescription']) OR (isset($_POST['useglobalsettings']) AND $includedescription $DB->query_first("SELECT value FROM " TABLE_PREFIX "pluginsettings WHERE description = 'Display Description Inside Article' AND value = '1'")))
      {
        
    $article $description "\n\n" $article;
      }

      
    // erase old forum link
      
    $article preg_replace("'<!--StartSdNewsForum-->(.*)<!--EndSdNewsForum-->'ms"""$article);

      
    $postusername $userinfo['username'];
      
    $postuserid   $userinfo['userid'];
      
    $clientip = ( !empty($_SERVER['REMOTE_ADDR']) ) ? $_SERVER['REMOTE_ADDR'] : ( ( !empty($_ENV['REMOTE_ADDR']) ) ? $_ENV['REMOTE_ADDR'] : $REMOTE_ADDR );
      
    $userip   encode_ip($clientip);

      
    $title   trim(strip_tags(FormatText($title)));
      
    $article trim(strip_tags(FormatText($article)));

      
    // switch databases?
      
    if(($usersystem['dbname'] != $dbname))
      {
        
    $DB->select_db($usersystem['dbname']);
      }

      for(
    $i 0$i count($forumids); $i++)
      {
        
    // create new thread
        
    $DB->query("INSERT INTO " $usersystem['tblprefix'] . "topics (forum_id, topic_title, topic_poster, topic_time)
                    VALUES ('" 
    $forumids[$i] . "', '$title', $postuserid$timenow)");

        
    $topic_id $DB->insert_id();

        
    // create new post
        
    $DB->query("INSERT INTO " $usersystem['tblprefix'] ."posts (topic_id, forum_id, poster_id, post_time, poster_ip, enable_sig)
                    VALUES (
    $topic_id, '" $forumids[$i] . "', $postuserid$timenow, '$userip', 1)");

        
    $postid $DB->insert_id();

        
    // create post text
        
    $DB->query("INSERT INTO " $usersystem['tblprefix'] . "posts_text (post_id, post_text)
                   VALUES (
    $postid, '$article')");

        
    // update thread
        
    $DB->query("UPDATE " $usersystem['tblprefix'] . "topics SET topic_first_post_id = $postid,
                                                                      topic_last_post_id  = 
    $postid
                                                                WHERE topic_id            = 
    $topic_id");

        
    // update user
        
    $DB->query("UPDATE " $usersystem['tblprefix'] . "users SET user_lastvisit = $timenow,
                                                                     user_posts     = (user_posts + 1)
                                                               WHERE user_id        = 
    $postuserid");

        
    // update forum
        
    $DB->query("UPDATE " $usersystem['tblprefix'] . "forums SET forum_posts        = (forum_posts + 1),
                                                                      forum_topics       = (forum_topics + 1),
                                                                      forum_last_post_id = 
    $postid
                                                                WHERE forum_id           = '"
    .$forumids[$i]."'");
      }

      
    // change back to Subdreamer database?
      
    if(($usersystem['dbname'] != $dbname))
      {
        
    $DB->select_db($dbname);
      }

      
    // return a link to the article
      
    return 'viewtopic.php?t=' $topic_id// threadid is the last returned thread

    }
     
    Mikhail.M нравится это.
  5. Mikhail.M

    Mikhail.M Создатель

    Регистр.:
    2 июл 2008
    Сообщения:
    11
    Симпатии:
    4
    Сделал вот так:
    PHP:
    <?php
    //хостинг
    $sqlhost="localhost";
    //имя пользователя
    $sqluser="root";
    //пароль
    $sqlpass="";
    //имя БД
    $db="phpbb_forum";

    //Подключаемся к MySQL
    mysql_connect($sqlhost$sqluser$sqlpass) or die ("MySQL не доступен!".mysql_error());
    //Подключаемся к БД
    mysql_select_db($db) or die ("Нет соединения с БД!".mysql_error());
    $prefix="phpbb_";
    $timenow time();
    $forumid=2;
    $title="My Topic";
    $postuserid=2;
    $userip="";
    $posttext="Post Text";
    $topicfirstpostername="admin";
    $topicfirstpostercolour="AA0000";
    $topiclastposterid=2;


        
    // create new thread 
        
    mysql_query("INSERT INTO " .$prefix."topics (forum_id, topic_title, topic_poster, topic_time, topic_first_poster_name, topic_first_poster_colour, topic_last_poster_id, topic_last_poster_name, topic_last_poster_colour, topic_last_post_time, topic_last_view_time, topic_last_post_subject) 
                    VALUES ('" 
    $forumid "', '$title', $postuserid$timenow,'$topicfirstpostername','$topicfirstpostercolour',$topiclastposterid,'$topicfirstpostername','$topicfirstpostercolour',$timenow,$timenow, '$title')");

        
    $topic_id mysql_insert_id(); 

        
    // create new post 
        
    mysql_query("INSERT INTO " $prefix."posts (topic_id, forum_id, poster_id, post_time, poster_ip, enable_sig, post_text, post_subject ) 
                    VALUES (
    $topic_id, '" $forumid "', $postuserid$timenow, '$userip', 1, '$posttext', '$title')"); 

        
    $postid mysql_insert_id(); 
        
    // update thread 
        
    mysql_query("UPDATE " $prefix "topics SET topic_first_post_id = $postid
                                                                      topic_last_post_id  = 
    $postid 
                                                                WHERE topic_id            = 
    $topic_id"); 

        
    // update user 
        
    mysql_query("UPDATE " $prefix "users SET user_lastvisit = $timenow
                                                                     user_posts     = (user_posts + 1) 
                                                               WHERE user_id        = 
    $postuserid"); 

        
    // update forum 
        
    mysql_query("UPDATE " $prefix "forums SET forum_posts        = (forum_posts + 1), 
                                                                      forum_topics       = (forum_topics + 1),
                                                                      forum_topics_real =(forum_topics_real +1),
                                                                      forum_last_post_subject = '
    $title',
                                                                      forum_last_post_id = 
    $postid 
                                                                WHERE forum_id           = '"
    .$forumid."'"); 
    ?>
    Вроде ничего не напутал. Таблицу posts_text не нашел, зато в posts был такой столбик. Общий принцип правильный?
     
  6. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Вроде правильный :)
     
Статус темы:
Закрыта.