Question2Answers Letzte Fragen

Hi,

ich verwende Questions2Answers: geschichte-wissen.de gerne die letzten 5 Fragen einblenden.
Leider sind auf bplaced ohne die Erweiterung pro keine Sockets möglich - entsprechend fällt die Einbindung über das RSS Modul weg (das auf den Supportseiten von Q2A immer erwähnt wird).

Könnt ihr mir helfen, das einzubinden? Leider verfüge ich nicht über PHP-Kenntnisse :frowning:

Grüße!

Da beides auf dem gleichen Server läuft, kannst du per Datenbankzugriff die Fragen direkt auslesen.
Eventuell hilft dir diese Seite und der Inhalt von qa_include/qa-feed.php
question2answer.org/external.php

Holla, harte Kost…

Wäre es nicht generell möglich schlichtweg eine Datenbankbafrage (LIMIT 5 ORDER BY id DESC) zu starten und diese in einer While-Schleife auszugeben? Das wäre ein Script von vielleicht 10-15 Zeilen…

Hi,

sorry ich bin total überfordert. Aus der “Anleitung” auf der Webseite werde ich nicht schlau.

Die RSS Datei sieht so aus:

[code]<?php

/*
Question2Answer 1.4 © 2011, Gideon Greenspan

    http://www.question2answer.org/


    File: qa-include/qa-feed.php
    Version: 1.4
    Date: 2011-06-13 06:42:43 GMT
    Description: Handles all requests to RSS feeds, first checking if they should be available


    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
    as published by the Free Software Foundation; either version 2
    of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    More about this license: http://www.question2answer.org/license.php

*/

    if (!defined('QA_VERSION')) { // don't allow this page to be requested directly from browser
            header('Location: ../');
            exit;
    }


    @ini_set('display_errors', 0); // we don't want to show PHP errors to RSS readers


    require_once QA_INCLUDE_DIR.'qa-app-options.php';

// Functions used within this file

    function qa_feed_db_fail_handler($type, $errno=null, $error=null, $query=null)

/*
Database failure handler function for RSS feeds - outputs HTTP and text errors
*/

    {
            header('HTTP/1.1 500 Internal Server Error');
            echo qa_lang_html('main/general_error');
            exit;
    }


    function qa_feed_not_found()

/*
Common function called when a non-existent feed is requested - outputs HTTP and text errors
*/
{
header(‘HTTP/1.0 404 Not Found’);
echo qa_lang_html(‘misc/feed_not_found’);
exit;
}

    function qa_feed_load_ifcategory($allkey, $catkey, $questionselectspec1=null, $questionselectspec2=null, $questionselectspec3=null, $questionselectspec4=null)

/*
Common function to load appropriate set of questions for requested feed, check category exists, and set up page title
*/
{
global $categoryslugs, $countslugs, $categories, $categoryid, $title, $questions;

            @list($questions1, $questions2, $questions3, $questions4, $categories, $categoryid)=qa_db_select_with_pending(
                    $questionselectspec1,
                    $questionselectspec2,
                    $questionselectspec3,
                    $questionselectspec4,
                    $countslugs ? qa_db_category_nav_selectspec($categoryslugs, false) : null,
                    $countslugs ? qa_db_slugs_to_category_id_selectspec($categoryslugs) : null
            );

            if ($countslugs && !isset($categoryid))
                    qa_feed_not_found();

            $questions=array_merge(
                    is_array($questions1) ? $questions1 : array(),
                    is_array($questions2) ? $questions2 : array(),
                    is_array($questions3) ? $questions3 : array(),
                    is_array($questions4) ? $questions4 : array()
            );

            if (isset($allkey) && isset($catkey))
                    $title=isset($categoryid) ? qa_lang_sub($catkey, $categories[$categoryid]['title']) : qa_lang($allkey);
    }

// Connect to database and get the type of feed and category requested (in some cases these are overridden later)

    qa_base_db_connect('qa_feed_db_fail_handler');

    end($qa_request_lc_parts);
    $lastkey=key($qa_request_lc_parts);

    if (isset($lastkey)) {
            $suffix=substr($qa_request_lc_parts[$lastkey], -4);
            if (($suffix=='.rss') || ($suffix=='.xml'))
                    $qa_request_lc_parts[$lastkey]=substr($qa_request_lc_parts[$lastkey], 0, -4);
    }

    $feedtype=@$qa_request_lc_parts[1];
    $feedparams=array_slice($qa_request_lc_parts, 2);

// Choose which option needs to be checked to determine if this feed can be requested, and stop if no matches

    $feedoption=null;
    $categoryslugs=$feedparams;

    switch ($feedtype) {
            case 'questions':
                    $feedoption='feed_for_questions';
                    break;

            case 'unanswered':
                    $feedoption='feed_for_unanswered';
                    $categoryslugs=null;
                    break;

            case 'answers':
            case 'comments':
            case 'activity':
                    $feedoption='feed_for_activity';
                    break;

            case 'qa':
                    $feedoption='feed_for_qa';
                    break;

            case 'tag':
                    if (strlen(@$feedparams[0])) {
                            $feedoption='feed_for_tag_qs';
                            $categoryslugs=null;
                    }
                    break;

            case 'search':
                    if (strlen(@$feedparams[0])) {
                            $feedoption='feed_for_search';
                            $categoryslugs=null;
                    }
                    break;
    }

    $countslugs=@count($categoryslugs);

    if (!isset($feedoption))
            qa_feed_not_found();

// Check that all the appropriate options are in place to allow this feed to be retrieved

    if (!(
            (qa_opt($feedoption)) &&
            ($countslugs ? (qa_using_categories() && qa_opt('feed_per_category')) : true)
    ))
            qa_feed_not_found();

// Retrieve the appropriate questions and other information for this feed

    require_once QA_INCLUDE_DIR.'qa-db-selects.php';

    $sitetitle=qa_opt('site_title');
    $siteurl=qa_opt('site_url');
    $full=qa_opt('feed_full_text');
    $count=qa_opt('feed_number_items');
    $showurllinks=qa_opt('show_url_links');

    $linkrequest=$feedtype.($countslugs ? ('/'.implode('/', $categoryslugs)) : '');
    $linkparams=null;

    switch ($feedtype) {
            case 'questions':
                    qa_feed_load_ifcategory('main/recent_qs_title', 'main/recent_qs_in_x',
                            qa_db_qs_selectspec(null, 'created', 0, $categoryslugs, null, false, $full, $count)
                    );
                    break;

            case 'unanswered':
                    qa_feed_load_ifcategory('main/unanswered_qs_title', 'main/unanswered_qs_in_x',
                            qa_db_unanswered_qs_selectspec(null, 0, null, false, $full, $count)
                    );
                    break;

            case 'answers':
                    qa_feed_load_ifcategory('main/recent_as_title', 'main/recent_as_in_x',
                            qa_db_recent_a_qs_selectspec(null, 0, $categoryslugs, null, false, $full, $count)
                    );
                    break;

            case 'comments':
                    qa_feed_load_ifcategory('main/recent_cs_title', 'main/recent_cs_in_x',
                            qa_db_recent_c_qs_selectspec(null, 0, $categoryslugs, null, false, $full, $count)
                    );
                    break;

            case 'qa':
                    qa_feed_load_ifcategory('main/recent_qs_as_title', 'main/recent_qs_as_in_x',
                            qa_db_qs_selectspec(null, 'created', 0, $categoryslugs, null, false, $full, $count),
                            qa_db_recent_a_qs_selectspec(null, 0, $categoryslugs, null, false, $full, $count)
                    );
                    break;

            case 'activity':
                    qa_feed_load_ifcategory('main/recent_activity_title', 'main/recent_activity_in_x',
                            qa_db_qs_selectspec(null, 'created', 0, $categoryslugs, null, false, $full, $count),
                            qa_db_recent_a_qs_selectspec(null, 0, $categoryslugs, null, false, $full, $count),
                            qa_db_recent_c_qs_selectspec(null, 0, $categoryslugs, null, false, $full, $count),
                            qa_db_recent_edit_qs_selectspec(null, 0, $categoryslugs, null, true, $full, $count)
                    );
                    break;

            case 'tag':
                    $tag=$feedparams[0];

                    qa_feed_load_ifcategory(null, null,
                            qa_db_tag_recent_qs_selectspec(null, $tag, 0, $full, $count)
                    );

                    $title=qa_lang_sub('main/questions_tagged_x', $tag);
                    $linkrequest='tag/'.$tag;
                    break;

            case 'search':
                    require_once QA_INCLUDE_DIR.'qa-util-string.php';

                    $query=$feedparams[0];

                    $words=qa_string_to_words($query);

                    qa_feed_load_ifcategory(null, null,
                            qa_db_search_posts_selectspec(null, $words, $words, $words, $words, trim($query), 0, $full, $count)
                    );

                    $title=qa_lang_sub('main/results_for_x', $query);
                    $linkrequest='search';
                    $linkparams=array('q' => $query);
                    break;
    }

// Remove duplicate questions (perhaps referenced in an answer and a comment) and cut down to size

    require_once QA_INCLUDE_DIR.'qa-app-format.php';
    require_once QA_INCLUDE_DIR.'qa-util-string.php';

    if ($feedtype!='search') // leave search results sorted by relevance
            $questions=qa_any_sort_and_dedupe($questions);

    $questions=array_slice($questions, 0, $count);
    $blockwordspreg=qa_get_block_words_preg();

// Disconnect as quickly as possible to free up resources

    qa_base_db_disconnect();

// Prepare the XML output

    $lines=array();

    $lines[]='<?xml version="1.0" encoding="UTF-8"?>';
    $lines[]='<rss version="2.0">';
    $lines[]='<channel>';

    $lines[]='<title>'.qa_html($sitetitle.' - '.$title).'</title>';
    $lines[]='<link>'.qa_path_html($linkrequest, $linkparams, $siteurl).'</link>';
    $lines[]='<description>Powered by Question2Answer</description>';

    foreach ($questions as $question) {

    //        Determine whether this is a question, answer or comment, and act accordingly

            $options=array('blockwordspreg' => @$blockwordspreg, 'showurllinks' => $showurllinks);

            $anchor=null;

            if (isset($question['opostid'])) {
                    if ($question['obasetype']!='Q')
                            $anchor=qa_anchor($question['obasetype'], $question['opostid']);

                    $time=$question['otime'];

                    if ($full)
                            $htmlcontent=qa_viewer_html($question['ocontent'], $question['oformat'], $options);

            } else {
                    $time=$question['created'];

                    if ($full)
                            $htmlcontent=qa_viewer_html($question['content'], $question['format'], $options);
            }

            switch (@$question['obasetype']) {
                    case 'A':
                            $titleprefix=@$question['oedited'] ? qa_lang('misc/feed_a_edited_prefix') : qa_lang('misc/feed_a_prefix');
                            break;

                    case 'C':
                            $titleprefix=@$question['oedited'] ? qa_lang('misc/feed_c_edited_prefix') : qa_lang('misc/feed_c_prefix');
                            break;

                    default:
                            $titleprefix=@$question['oedited'] ? qa_lang('misc/feed_edited_prefix') : '';
                            break;
            }

            if (isset($blockwordspreg))
                    $question['title']=qa_block_words_replace($question['title'], $blockwordspreg);

            $urlhtml=qa_path_html(qa_q_request($question['postid'], $question['title']), null, $siteurl, null, $anchor);

    //        Build the inner XML structure for each item

            $lines[]='<item>';
            $lines[]='<title>'.qa_html($titleprefix.$question['title']).'</title>';
            $lines[]='<link>'.$urlhtml.'</link>';

            if ($full && isset($htmlcontent))
                    $lines[]='<description>'.qa_html($htmlcontent).'</description>'; // qa_html() a second time to put HTML code inside XML wrapper

            if (isset($question['categoryname']))
                    $lines[]='<category>'.qa_html($question['categoryname']).'</category>';

            $lines[]='<guid isPermaLink="true">'.$urlhtml.'</guid>';
            $lines[]='<pubDate>'.qa_html(gmdate('r', $time)).'</pubDate>';
            $lines[]='</item>';
    }

    $lines[]='</channel>';
    $lines[]='</rss>';

// Output the XML - and we’re done!

    header('Content-type: text/xml; charset=utf-8');
    echo implode("\n", $lines);

/*
Omit PHP closing tag to help avoid accidental output
*/[/code]

Wenn du Recht hast, Kerbi, müsste das ja wirklich schnell geschrieben sein. Es würde mir sehr helfen das einbinden zu können. Dass der Hersteller ein solches Modul nicht gleich mitliefert kapiere nicht.

hi,
warum so kompliziert?
ein einfaches

$sql = "SELECT * FROM DEINETABELLEMITDATEN LIMIT 5 ORDER BY id DESC"; $result= mysql_query($sql); while($row = mysql_fetch_assoc($result)) { echo $row['NAMEDERSPALTE']; }

Du müsstest oben einfach nur DEINETABELLEMITDATEN und NAMEDERSPALTE anpassen

lg

Hi,

das funktioniert nicht:

[code]
Warning: mysql_query() [function.mysql-query]: Access denied for user ‘’@‘localhost’ (using password: NO) in /users/geschichte/www/hausaufgaben/fragen.php on line 3

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /users/geschichte/www/hausaufgaben/fragen.php on line 3

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /users/geschichte/www/hausaufgaben/fragen.php on line 4[/code]

Q2A liegt in der Datenbank geschichte_qua

Oh mann :frowning:

Du musst vorab noch die Verbindung zur Datenbank herstellen.
php.net/manual/de/function.mysql-connect.php