Eigener PHP-Code - Wo liegt der Fehler?
![](https://www.drupalcenter.de/files/imagecache/upic_mini/pictures/picture-3797.png)
am 04.04.2011 - 07:46 Uhr in
Hallo zusammen,
einer unser Coder hat mir eine kurze Abfrage geschrieben um Termine, die aus einer Erweiterung des PHPBB-Forums stammen extern ausgeben zu können. Die Abfrage generell funktioniert als Einzellösung auch sehr gut, lediglich innerhalb von Drupal gibt es damit größere Probleme. Egal ob ich den Code in einem Block (PHP-Filter) oder direkt im Code (page-front) platziere, es endet damit dass das Layout komplett zerschossen wird und zwar eine Ausgabe stattfindet, aber die übrige Seite quasi nicht mehr funktioniert.
Das sich der Coder nicht mit Drupal auskennt, wollte ich an dieser Stelle mal fragen ob jemand sagen kann, was genau Drupal an dem Code nicht mag. Ist es das HTML-Markup, die Abfrage selbst, die Verbindung zu einer anderen Datenbank (!) als die von Drupal verwendete, oder etwas gänzlich anderes?
Ich danke für Hilfe im Voraus!
<?php
echo calNext5Events();
function calNext5Events() {
// Datenbankabfrage
$dbhost = 'localhost';
$dbuser = 'xxx';
$dbpw = 'xxx';
$dbname = 'xxx';
$dbmaxlines = 5;
$dbquery = 'SELECT event_id,event_start_time,event_subject FROM phpbb_calendar_events WHERE event_start_time>'.time().' ORDER BY event_start_time'.' LIMIT '.$dbmaxlines;
// Ausgabesteuerung
$wrap_all_start = '<div id="test"><table>';
$wrap_all_end = '</table></div>';
$wrap_line_start = '<tr>';
$wrap_line_end = '</tr>';
$wrap_field_start = '<td>';
$wrap_field_end = '</td>';
$wrap_link_start = '<a href="http://www.webseite.de/forum/calendar.php?view=event&calEid=';
$wrap_link_middle = '" target="_blank">';
$wrap_link_end = '</a>';
$date_format = 'd.m.Y H:i';
$clip_subject_after = 20;
$clip_subject_end = '…';
//intern
$debug=false;
$err=0;
$outp='';
$db = @mysql_connect($dbhost, $dbuser, $dbpw);
if (!$db) {
$err=1;
$error="Verbindung zur Datenbank fehlgeschlagen: " . mysql_error();
} elseif ( !@mysql_select_db($dbname, $db) ) {
$err=2;
$error="Tabelle nicht gefunden: " . mysql_error();
} else {
$rs = @mysql_query($dbquery);
if ( !$rs ) {
$err=3;
$error="Abfrage fehlgeschlagen: " . mysql_error();
} else {
$ergebnis_zeilenanzahl = @mysql_num_rows($rs);
if ( $ergebnis_zeilenanzahl > 0 ) {
$outp .= $wrap_all_start;
while ($zeile = @mysql_fetch_assoc($rs)) {
$outp .= $wrap_line_start;
$outp .= $wrap_field_start.date($date_format,$zeile["event_start_time"]).$wrap_field_end;
$outp .= $wrap_field_start;
if ( strlen($zeile["event_subject"]) > $clip_subject_after ) {
$outp .= $wrap_link_start.$zeile["event_id"].$wrap_link_middle.substr($zeile["event_subject"],0, $clip_subject_after-1 ).$clip_subject_end.$wrap_link_end;
} else {
$outp .= $wrap_link_start.$zeile["event_id"].$wrap_link_middle.$zeile["event_subject"].$wrap_link_end;
}
$outp .= $wrap_field_end;
$outp .= $wrap_line_end;
}
$outp .= $wrap_all_end;
}
}
}
@mysql_close($db);
return $debug?($err>0?$error:$outp):$outp;
}
?>
- Anmelden oder Registrieren um Kommentare zu schreiben
Ich denke du musst das Script
am 04.04.2011 - 15:47 Uhr
Ich denke du musst das Script auf "drupalisch" umschreiben.
Die DB-Verbindung sollte in der settings.php definiert werden und Abfrage und Ausgabe dann mittels der üblichen drupal functions realisiert werden.
Auch aus Sicherheitsgründen würde ich das auf jeden Fall so machen...
Weitere Infos:
http://drupal.org/node/310071
http://api.drupal.org/api/drupal/includes--database--database.inc/group/...