Hallo :)
Auf dieser Webseite (http://www.webschau.info/Encyclopedia-op-all-eid-7.html) (angezeigte URL: */modules.php?name=Encyclopedia&op=content&tid=38) Seite nicht.
Diese Anpassung ist eingeflossen: Encyclopedia und mod_rewrite (http://www.pragmamx.org/Forum-topic-30747-start-msg195841.html#msg195841)
Beim Aufruf der Ency-Hauptseite (http://www.webschau.info/Encyclopedia-op-all-eid-7.html) erscheint diese SQL-Meldung:
ZitatNotice: Use of undefined constant title - assumed 'title' in */modules/Encyclopedia/index.php on line 157
In Zeile 157 steht folgender Code:
Zitatif(!empty($list[title])) {
In den Einstellungen ist mod_rewrite für alle Gruppen aktiviert, für andere Module verwende ich ebenfalls die rewrite-Funktion, z.B. im Web-Link Modul erscheint:
Zitat*/Web_Links-op-view-lid-131.html
Dort stand sonst der Name der Webseite in der URL.
Zuletzt ist diese Anpassung Anzeigeübersicht der Enzyklopädie (http://www.pragmamx.org/Forum-topic-30512-start-msg195074.html#msg195074) eingeflossen.
Die Suche im Web hat mir nicht den Weg zur Lösung gezeigt.
Für Tipps & Hinweise bin ich dankbar.
ZitatBeim Aufruf der Ency-Hauptseite erscheint diese SQL-Meldung:
Zitat
Notice: Use of undefined constant title - assumed 'title' in */modules/Encyclopedia/index.php on line 157
äähm ... wo steht, dass das eine SQL-Meldung ist ? das ist ein PHP-Notice
Use of undefined constant title => Verwendung von undefiniertem Konstantentitel
ZitatDie Suche im Web hat mir nicht den Weg zur Lösung gezeigt.
Ich weiß nicht, wie du im Web gesucht hast, aber alleine durch Eingeben von
notice: use of undefined constant im Google
http://www.google.de/search?hl=de&client=firefox-a&rls=com.ubuntu%3Ade%3Aofficial&hs=ZBw&q=notice+use+of+undefined+constant&btnG=Suche&meta=lr%3Dlang_de&aq=0&oq=Notice%3A+Use+of+undefined+c
erfährt man sofort, um was es geht:
Zitat von: http://www.php-faq.de/q-fehler-konstante.htmlEs wird eine Konstante verwendet, obwohl diese nicht definiert ist. Aus purer Freundlichkeit nimmt PHP den Namen der Konstante (!) als eigentlich gemeinten Wert an, belässt es bei einem Hinweis und lässt das Script weiterlaufen. Häufig wird dieser Fehler beim Zugriff auf Arrays gemacht, indem der Schlüssel direkt in eckigen Klammern steht, statt korrekt in Anführungszeichen eingefasst zu werden
Sorry, mein Fehler.
Zitatwo steht, dass das eine SQL-Meldung ist ?
Den Artikel
Zitathttp://www.php-faq.de/q-fehler-konstante.html
habe ich mehrfach gelesen, zur Lösung hats nicht beigetragen.
Moin :)
ZitatSorry, mein Fehler.
Kann ja ein Nicht-Coder auch nicht wissen, woher die Meldung kommt... ;)
Die Zeile 157 müsste so aussehen:
if(!empty($list['title'])) {
Das 'title' als Arrayschlüssel ist ein String, und muss in Anführungszeichen stehen. Ansonsten wird es als Konstante angesehen und da diese Konstante nicht existiert, eben diese Fehlermeldung ausgegeben.
Die "falsche" Zeile kommt aus dem Code von Baldyman hier:
http://www.pragmamx.org/Forum-topic-30512-start-msg195074.html#msg195074
Ich habe in dem Post den Code korrigiert.
Hi Andi !
Danke Dir :JC_highfive:
Bisher erschien für jeden Begriff in der Ency die obige Meldung, die sind nun weg.
Bei aktiviertem Debug Modus erscheint nun einmalig:
Notice: Undefined variable: title in */modules/Encyclopedia/index.php on line 130
Zeile 130 enthält:
$pagetitle = _ENCYCLOPEDIA . ', ' . $title;
In der Sprachdatei ist die Variable
_ENCYCLOPEDIA vorhanden.
mod_rewrite ist zwar aktiviert, die URL schaut so aus:
Zitat*/modules.php?name=Encyclopedia&op=content&tid=178
Hoi :)
müsste man schauen, warum die Variable an der Stelle nicht existiert...
Dazu bräuchte man aber Einsicht in die ganze Datei. Kannst die hier mal anhängen.
Mit mod_rewrite selbst, haben die Fehler nichts zu tun...
Hellö Andi !
ZitatMit mod_rewrite selbst, haben die Fehler nichts zu tun...
Hat ja bestens mod_rewrited :)
Im Anhang die Sprachdatei und die index der Ency.
Moin,
Müsste das nicht so ausschauen ?
$pagetitle = _ENCYCLOPEDIA . ', ' . $title .';
?!?
// Edit
nee das ist falsch, da hab ich jetzt gepennt. Sorry
// Edit Ende
Moin :)
die Zeile ist in diesem Kontext eigentlich ganz überflüssig.
Die Variable $title wird nirgends ermittelt.
Eigentlich sollte sie das aber. Es wird in der Funktion ja abgefragt welche Enzyklopädie angezeigt werden soll. Es wird aber weder die Beschreibung noch der Name dieser Enzy ausgegeben.
Nehmen wir doch einfach den Code von der Funktion list_content() obendrüber und fügen die entsprechenden Zeilen auch in list_content_all() ein, damit auch Titel und Beschreibung erscheinen...
Nachfolgend die optimierte Version der Funktion:
<?php
/**
* *********************************** NEUE FUNKTION UM ALLE EINTRAEGE EINER ENCY ANZUZEIGEN ***********************************
*/
function list_content_all()
{
global $module_name, $prefix, $pagetitle;
// wie viele Spalten sollen es sein
$cols = 4;
$eid = (empty($_REQUEST['eid'])) ? 0 : intval($_REQUEST['eid']);
$result = sql_query("select title, description from " . $prefix . "_encyclopedia where eid=" . intval($eid));
list($title, $description) = sql_fetch_row($result);
$pagetitle = _ENCYCLOPEDIA . ', ' . $title;
$result = sql_query("select tid, eid, title from " . $prefix . "_encyclopedia_text where eid=" . intval($eid) . " ORDER BY title ASC");
include("header.php");
title(_ENCYCLOPEDIA);
OpenTable();
echo "<center><b>$title</b></center><br />"
. "<p align=\"justify\">$description</p>";
CloseTable();
echo '<br />';
// wie viele Eintraege gibt es ?
$countrows = sql_num_rows($result) ;
// Zeilenanzahl ausrechnen
$rows = ceil($countrows / $cols);
// wenn's mehr als 0 sind, dann mach doch bitte folgendes ;-)
if ($countrows > 0) {
OpenTable();
// Ausgabe Tabelle
echo "<table border=\"1\" align=\"center\" class=\"list\" cellpadding=\"10\" cellspacing=\"0\" width=\"100%\" >";
for($i = 1; $i <= $rows; $i++) {
echo "<tr>";
for($j = 1; $j <= $cols; $j++) {
$list = sql_fetch_assoc($result);
// solange was in der DB steht, gib folgendes aus
if (!empty($list['title'])) {
// Link zusammensetzen
echo "<td align=\"center\"><a href=\"/modules.php?name=Encyclopedia&op=content&tid=" . $list['tid'] . "\">" . $list['title'] . "</a></td>";
} else {
// falls nix mehr von der kommt, Zellen mit Leerzeichen fuellen ;-)
echo "<td> </td>";
}
}
echo "</tr>";
}
echo "</table>";
CloseTable();
echo '<br />';
}
OpenTable();
alpha($eid);
CloseTable();
echo '<br />';
OpenTable();
echo "<center><font class=\"tiny\">" . _COPYRIGHT . "</font></center>";
CloseTable();
include("footer.php");
}
?>
Da waren auch noch ein paar Logik-Fehler in der if-Verschachtelung drin...
Hi Andi !
Dank Dir für den Code.
Die Meldungen sind weg :smile:
Bei Aufruf der Übersicht wird die URL so angezeigt:
Zitat*/Encyclopedia-op-all-eid-7.html
Debug-Modus:
GET: Array
[name] => Encyclopedia
[op] => all
[eid] => 7
Rufe ich einen Begriff auf, schauts so aus:
Zitat*/modules.php?name=Encyclopedia&op=content&tid=199
Debug-Modus:
GET: Array
[name] => Encyclopedia
[op] => content
[tid] => 199
Hello @ll :)
Aufrufen lassen sich die Einträge mod_rewrite-mäßig.
Z.B.
http://www.webschau.info/Encyclopedia-Term-Account-199.html
In der Übersicht wird dieser Eintrag jedoch so dargestellt:
http://www.webschau.info/modules.php?name=Encyclopedia&op=content&tid=199
Diese Anpassung ist in Verwendung:
Anzeigeübersicht der Enzyklopädie anpassen (http://www.pragmamx.org/Forum-topic-30512-start-msg195074.html#msg195074)
Wie lässt sich die Übersicht davon überzeugen, die Links wie gewünscht anzuzeigen ?
Hallo xmjay,
ich tippe fast darauf das die eingebaute Modifikation nicht mod_rewrite kompatibel ist. Denn ohne Mod.. keine Probleme ->
http://www.webschau.info/Encyclopedia-op-list_content-eid-7.html
Möglich das das Ganze durch diese Zeile :
<td align=\"center\"><a href=\"/modules.php?name=Encyclopedia&op=content&tid=$list[tid]\">$list[title]</a></td>
verursacht wrd. Denn hier wird wohl das Aufrufen des "normalen" Links erzwungen ( ähnliches hast Du zB wenn Du , als Admin eingeloggt im smf Forum einen Link schreibst der nicht über mod_rewrite geändert ist. Wenn User diesen anklicken steht oben der "echte" Link ( die echte url) . Nicht die durch mod.. "geschminkte" .. Das ist alelrdings nur n Gedankengang von mir ...
Hey grafikmurkser !
Jepp, aufrufen läßt sich z.B. der Begriff "Account" so:
*/Encyclopedia-Term-Account-199.html
Die URL wird so in der Übersicht angezeigt:
*/modules.php?name=Encyclopedia&op=content&tid=199
Ich weiß nicht, wo ich ansetzen könnte...
Moin :)
so ganz blick ich's nicht...
Welche Übersicht meinst du?
Die? http://www.webschau.info/Encyclopedia-op-terms-eid-7-ltr-A.html
Wenn ja, dann siehe screenshot.
Ich kann nirgends eine "nicht umgeschriebene" url entdecken
Holla Andi !
Das ging ja fix :smile:
Ich meine diese Seite:
http://www.webschau.info/Encyclopedia-op-all-eid-7.html
(siehe Screenie)