pragmaMx Support Forum

pragmaMx => Individuelle Anpassungen => Thema gestartet von: xmjay am 06 Januar 2010, 12:05:18

Titel: Syntaxfehler nach Änderung der Enzyklopädie
Beitrag von: xmjay am 06 Januar 2010, 12:05:18
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.


Titel: Re: mod_rewrite in der Enzyklopädie
Beitrag von: siggi am 06 Januar 2010, 22:08:41
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




Titel: Re: mod_rewrite in der Enzyklopädie
Beitrag von: xmjay am 07 Januar 2010, 09:53:05
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.

Titel: Re: mod_rewrite in der Enzyklopädie
Beitrag von: Andi am 07 Januar 2010, 11:55:04
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.
Titel: Re: mod_rewrite in der Enzyklopädie
Beitrag von: xmjay am 07 Januar 2010, 14:07:13
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
Titel: Re: mod_rewrite in der Enzyklopädie
Beitrag von: Andi am 07 Januar 2010, 14:21:12
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...
Titel: Re: Syntaxfehler nach Änderung der Enzyklopädie
Beitrag von: xmjay am 07 Januar 2010, 14:49:22
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.
Titel: Re: Syntaxfehler nach Änderung der Enzyklopädie
Beitrag von: AlternativeComputing am 07 Januar 2010, 18:25:27
Moin,

Müsste das nicht so ausschauen ?

$pagetitle = _ENCYCLOPEDIA . ', ' . $title .'; ?!?

// Edit

nee das ist falsch, da hab ich jetzt gepennt. Sorry

// Edit Ende
Titel: Re: Syntaxfehler nach Änderung der Enzyklopädie
Beitrag von: Andi am 08 Januar 2010, 11:38:46
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'])) ? 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&amp;op=content&amp;tid=" $list['tid'] . "\">" $list['title'] . "</a></td>";
                } else {
                    
// falls nix mehr von der kommt, Zellen mit Leerzeichen fuellen ;-)
                    
echo "<td>&nbsp;</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...
Titel: Re: Syntaxfehler nach Änderung der Enzyklopädie
Beitrag von: xmjay am 08 Januar 2010, 15:43:47
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
Titel: Re: Syntaxfehler nach Änderung der Enzyklopädie
Beitrag von: xmjay am 15 Januar 2010, 14:42:10
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 ?
Titel: Re: Syntaxfehler nach Änderung der Enzyklopädie
Beitrag von: grafikmurkser am 15 Januar 2010, 18:39:59
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&amp;op=content&amp;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 ...
Titel: Re: Syntaxfehler nach Änderung der Enzyklopädie
Beitrag von: xmjay am 16 Januar 2010, 13:33:33
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...
Titel: Re: Syntaxfehler nach Änderung der Enzyklopädie
Beitrag von: Andi am 16 Januar 2010, 13:47:31
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
Titel: Re: Syntaxfehler nach Änderung der Enzyklopädie
Beitrag von: xmjay am 16 Januar 2010, 13:59:32
Holla Andi !

Das ging ja fix  :smile:

Ich meine diese Seite:

http://www.webschau.info/Encyclopedia-op-all-eid-7.html

(siehe Screenie)