[Suche] Script PHP 7.2 fähig machen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Lizardx
Mitglied
Beiträge: 208
Registriert: 20.05.2006 18:35

[Suche] Script PHP 7.2 fähig machen

Beitrag von Lizardx » 24.11.2019 14:51

Hallo,

ich habe seit vielen Jahren ein Script im Einsatz, dass mir die letzten phpBB Beiträge auf einer nicht phpBB-Seite anzeigt. Dieses Script ist leider nicht PHP 7.2 fähig. Ich suche daher jemanden, der mir das Script so umschreibt, dass es unter PHP 7.2 fehlerfrei läuft.

Altes Script:

Code: Alles auswählen

<?php
// ############ Anfang Festlegung der Vorgaben ########################################

// Laenge der angezeigten Themenueberschrift in Buchstaben
$topic_length = '60';

// Maximal angezeigte Beiträge
$topic_limit = '7';

// Eingeschraenkte Forumsanzeige ('0' = Aus; '1' = Ein)
$special_forums = '1';

// IDs der zugelassenen Foren (nur wenn Forumsanzeige = "1"); Trennung der IDs mit einem Komma
$forum_ids = '28';

// Relative Pfadangabe zur config.php
$config_path = '/';

// Absoluter Pfad des Forums auf dem Server, bitte eingeben !!!
$root_path = 'https://forum.domain.de/';



// ############ Ende Vorgaben #######################################

//Ermittlung des aktuellen Server-Verzeichnisses für Einbindung config.php
$path = dirname(__FILE__);

// Einbinden der phpBB-Konfigurationsdatei und somit Ermittlung der MySQL-Zugangsdaten
include_once($path.$config_path .'config.php');

// Verbindungsaufbau mit Zugangsdaten aus config.php, Fehlermeldung bei Problemen
mysql_connect($dbhost, $dbuser, $dbpasswd) OR die('Serververbindung fehlgeschlagen');

// Verbindung mit der phpBB-Datenbank herstellen
mysql_select_db($dbname) OR die('Datenbankverbindung fehlgeschlagen!');


//Abfrage ob Foreneinschraenkung gesetzt per Verzweigung und Uebergabe der moeglichen IDS an die Variable
$where_forums = ( $special_forums == '0' ) ? '' : 't.forum_id NOT IN ('. $forum_ids .') AND ';

//Definition der SQL-Abfrage
$sql = "SELECT t.*, f.forum_id, f.forum_name, u.username AS first_poster, u.user_id AS first_poster_id, u2.username AS last_poster, u2.user_id AS last_poster_id, p.post_username AS first_poster_name, p2.post_username AS last_poster_name, p2.post_time
FROM ". $table_prefix ."topics t, ". $table_prefix ."forums f, ". $table_prefix ."users u, ". $table_prefix ."posts p, ". $table_prefix ."posts p2, ". $table_prefix ."users u2
WHERE $where_forums t.topic_poster = u.user_id AND f.forum_id = t.forum_id AND p.post_id = t.topic_first_post_id AND p2.post_id = t.topic_last_post_id AND u2.user_id = p2.poster_id
ORDER BY t.topic_last_post_id DESC LIMIT $topic_limit";


//Durchfuehrung der SQL-Abfrage und Ergebnisuebergabe an $result
$result = mysql_query($sql);

// Wenn Abfrafge fehlgeschlagen = Fehlermeldung
if( !$result )

{
die('SQL-Abfrage fehlgeschlagen!: '. mysql_error());
exit();
}

//Definition Array für Aufnahme der Abfragedaten
$line = array();

// Uebergabe der Daten bis zum letzten Datensatz an Array per Schleife
while( $row = mysql_fetch_array($result) )

{
$line[] = $row;
}

// Strukturiertes Auslesen des Arrays und Variablenuebergabe
for( $i = 0; $i < count($line); $i++ )
{
$forum_id = $line[$i]['forum_id']; //Forums-ID
$topic_id = $line[$i]['topic_id']; //Themen-ID

$forum_url = $root_path .'forum' . $forum_id . '.html'; //Forums-Link
$topic_url = $root_path .'topic'. $topic_id . '.html'; //Themen-Link

// Ausgabeformat der Beitragsueberschrift (Thema)
$topic_title = ( strlen($line[$i]['topic_title']) < $topic_length ) ? $line[$i]['topic_title'] : substr(stripslashes($line[$i]['topic_title']), 0, $topic_length) .'...';

// Themenklassifizierung
$topic_type = ( $line[$i]['topic_type'] == '2' ) ? 'Beitrag ': '';
$topic_type .= ( $line[$i]['topic_type'] == '3' ) ? 'Globaler Beitrag ': '';
$topic_type .= ( $line[$i]['topic_type'] == '1' ) ? 'Kritischer Beitrag ': '';
$topic_type .= ( $line[$i]['topic_vote'] ) ? 'Abstimmung ': '';

$views = $line[$i]['topic_views'];
$replies = $line[$i]['topic_replies'];

$first_time = date('d.m.Y', $line[$i]['topic_time']);
$first_author = ( $line[$i]['first_poster_id'] != '-1' ) ? '<a href="'. $root_path .'profile.php?mode=viewprofile&amp;u='. $line[$i]['first_poster_id'] .'" target="_blank">'. $line[$i]['first_poster'] .'</a>' : ( ($line[$i]['first_poster_name'] != '' ) ? $line[$i]['first_poster_name'] : 'guest' );
$last_time = date('d.m.Y', $line[$i]['post_time']);
$last_author = ( $line[$i]['last_poster_id'] != '-1' ) ? $line[$i]['last_poster'] : ( ($line[$i]['last_poster_name'] != '' ) ? $line[$i]['last_poster_name'] : 'guest' );
$last_url = '<a href="'. $root_path .'viewtopic.php?p='. $line[$i]['topic_last_post_id'] .'#p'. $line[$i]['topic_last_post_id'] .'">'. $last_author .'</a>';
// ############## Eigentliche Ausgabe der Beitraege #############


echo '<ul><li><a href="'. $topic_url .'" target="_top">'. utf8_encode($topic_title) .'</a>';

echo ' in <a href="'. $forum_url .'" target="_top" style="text-decoration:none">'. $line[$i]['forum_name'] .'</a> von ';
// User, Bei Bedarf loeschen

// Datum, Bei Bedarf loeschen

echo $last_url.' (';
echo $last_time.')</li></ul>';


// ############## Ende Eigentliche Ausgabe ##############
}

mysql_close(); // Beendigung der Datenbankverbindung
?>
Bitte um Angebote per PN. Vielen Dank.

P.S.: Ich habe es leider etwas eilig... Ich brauche das Script unbedingt bis spätestens 27.10.

Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 15814
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [Suche] Script PHP 7.2 fähig machen

Beitrag von Dr.Death » 24.11.2019 15:31

Lösung:

Code: Alles auswählen

<?php
// ############ Anfang Festlegung der Vorgaben ########################################

// Laenge der angezeigten Themenueberschrift in Buchstaben
$topic_length = '60';

// Maximal angezeigte Beiträge
$topic_limit = '7';

// Eingeschraenkte Forumsanzeige ('0' = Aus; '1' = Ein)
$special_forums = '1';

// IDs der zugelassenen Foren (nur wenn Forumsanzeige = "1"); Trennung der IDs mit einem Komma
$forum_ids = '28';

// Relative Pfadangabe zur config.php
$config_path = '/';

// Absoluter Pfad des Forums auf dem Server, bitte eingeben !!!
$root_path = 'https://forum.domain.de/';



// ############ Ende Vorgaben #######################################

//Ermittlung des aktuellen Server-Verzeichnisses für Einbindung config.php
$path = dirname(__FILE__);

// Einbinden der phpBB-Konfigurationsdatei und somit Ermittlung der MySQL-Zugangsdaten
include_once($path.$config_path .'config.php');

// Verbindungsaufbau mit Zugangsdaten aus config.php, Fehlermeldung bei Problemen
mysqli_connect($dbhost, $dbuser, $dbpasswd) OR die('Serververbindung fehlgeschlagen');

// Definiere Datenbank Link in einer Variablen
$link = mysqli_connect($dbhost, $dbuser, $dbpasswd);

// Verbindung mit der phpBB-Datenbank herstellen
mysqli_select_db($link, $dbname) OR die('Datenbankverbindung fehlgeschlagen!');


//Abfrage ob Foreneinschraenkung gesetzt per Verzweigung und Uebergabe der moeglichen IDS an die Variable
$where_forums = ( $special_forums == '0' ) ? '' : 't.forum_id NOT IN ('. $forum_ids .') AND ';

//Definition der SQL-Abfrage
$sql = "SELECT t.*, f.forum_id, f.forum_name, u.username AS first_poster, u.user_id AS first_poster_id, u2.username AS last_poster, u2.user_id AS last_poster_id, p.post_username AS first_poster_name, p2.post_username AS last_poster_name, p2.post_time
FROM ". $table_prefix ."topics t, ". $table_prefix ."forums f, ". $table_prefix ."users u, ". $table_prefix ."posts p, ". $table_prefix ."posts p2, ". $table_prefix ."users u2
WHERE $where_forums t.topic_poster = u.user_id AND f.forum_id = t.forum_id AND p.post_id = t.topic_first_post_id AND p2.post_id = t.topic_last_post_id AND u2.user_id = p2.poster_id
ORDER BY t.topic_last_post_id DESC LIMIT $topic_limit";


//Durchfuehrung der SQL-Abfrage und Ergebnisuebergabe an $result
$result = mysqli_query($link, $sql);

// Wenn Abfrafge fehlgeschlagen = Fehlermeldung
if( !$result )

{
die('SQL-Abfrage fehlgeschlagen!: '. mysql_error());
exit();
}

//Definition Array für Aufnahme der Abfragedaten
$line = array();

// Uebergabe der Daten bis zum letzten Datensatz an Array per Schleife
while( $row = mysqli_fetch_array($result) )

{
$line[] = $row;
}

// Strukturiertes Auslesen des Arrays und Variablenuebergabe
for( $i = 0; $i < count($line); $i++ )
{
$forum_id = $line[$i]['forum_id']; //Forums-ID
$topic_id = $line[$i]['topic_id']; //Themen-ID

$forum_url = $root_path .'forum' . $forum_id . '.html'; //Forums-Link
$topic_url = $root_path .'topic'. $topic_id . '.html'; //Themen-Link

// Ausgabeformat der Beitragsueberschrift (Thema)
$topic_title = ( strlen($line[$i]['topic_title']) < $topic_length ) ? $line[$i]['topic_title'] : substr(stripslashes($line[$i]['topic_title']), 0, $topic_length) .'...';

// Themenklassifizierung
$topic_type = ( $line[$i]['topic_type'] == '2' ) ? 'Beitrag ': '';
$topic_type .= ( $line[$i]['topic_type'] == '3' ) ? 'Globaler Beitrag ': '';
$topic_type .= ( $line[$i]['topic_type'] == '1' ) ? 'Kritischer Beitrag ': '';
$topic_type .= ( $line[$i]['topic_vote'] ) ? 'Abstimmung ': '';

$views = $line[$i]['topic_views'];
$replies = $line[$i]['topic_replies'];

$first_time = date('d.m.Y', $line[$i]['topic_time']);
$first_author = ( $line[$i]['first_poster_id'] != '-1' ) ? '<a href="'. $root_path .'profile.php?mode=viewprofile&amp;u='. $line[$i]['first_poster_id'] .'" target="_blank">'. $line[$i]['first_poster'] .'</a>' : ( ($line[$i]['first_poster_name'] != '' ) ? $line[$i]['first_poster_name'] : 'guest' );
$last_time = date('d.m.Y', $line[$i]['post_time']);
$last_author = ( $line[$i]['last_poster_id'] != '-1' ) ? $line[$i]['last_poster'] : ( ($line[$i]['last_poster_name'] != '' ) ? $line[$i]['last_poster_name'] : 'guest' );
$last_url = '<a href="'. $root_path .'viewtopic.php?p='. $line[$i]['topic_last_post_id'] .'#p'. $line[$i]['topic_last_post_id'] .'">'. $last_author .'</a>';
// ############## Eigentliche Ausgabe der Beitraege #############


echo '<ul><li><a href="'. $topic_url .'" target="_top">'. utf8_encode($topic_title) .'</a>';

echo ' in <a href="'. $forum_url .'" target="_top" style="text-decoration:none">'. $line[$i]['forum_name'] .'</a> von ';
// User, Bei Bedarf loeschen

// Datum, Bei Bedarf loeschen

echo $last_url.' (';
echo $last_time.')</li></ul>';


// ############## Ende Eigentliche Ausgabe ##############
}
Doc.
verlinken => KB:81

Verschoben von Jobbörse nach Coding & Technik am 24.11.2019 16:46 durch Dr.Death

Lizardx
Mitglied
Beiträge: 208
Registriert: 20.05.2006 18:35

Re: [Suche] Script PHP 7.2 fähig machen

Beitrag von Lizardx » 26.11.2019 11:46

Danke nochmal für das neue Script. Es gibt nun aber laut Errorlogs folgenden Fehler:
PHP Notice: Undefined index: topic_replies in /home/www/doc/8531/domain.com/www/forum/lasttopics2.php on line 92
In dieser Zeile befindet sich folgender Eintrag:

Code: Alles auswählen

$replies = $line[$i]['topic_replies'];
Kann mir jemand sagen was daran falsch ist?

Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 15814
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [Suche] Script PHP 7.2 fähig machen

Beitrag von Dr.Death » 26.11.2019 11:58

Ja, die Variable ist vor dem Aufruf nicht initialisiert worden..... und somit "undefiniert --> undefined".


Entweder muss vorher irgendwo diese Variable mit einem "Start Wert" gefüllt (definiert) werden, oder aber du löscht die Zeile, weil in dem o.a. Script die Variable $replies nirgendwo benutzt wird. :ugeek:


Der eigentliche Grund ist, das Du eine SQL Abfrage machst, indem kein 'topic_replies' vorkommt, also kann auch kein 'topic_replies' in das Ergebnis Array $line übergeben werden und $line[$i]['topic_replies'] ist immer leer, bzw. nicht gefüllt/definiert.
Doc.
verlinken => KB:81

Lizardx
Mitglied
Beiträge: 208
Registriert: 20.05.2006 18:35

Re: [Suche] Script PHP 7.2 fähig machen

Beitrag von Lizardx » 26.11.2019 17:05

Ich habe die Zeile einfach gelöscht. Danke!

Antworten

Zurück zu „Coding & Technik“