Syntaxfehler nach Änderung der Enzyklopädie

Begonnen von xmjay, 06 Januar 2010, 12:05:18

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

xmjay

Hallo  :)

Auf dieser Webseite (angezeigte URL: */modules.php?name=Encyclopedia&op=content&tid=38) Seite nicht.
Diese Anpassung ist eingeflossen: Encyclopedia und mod_rewrite

Beim Aufruf der Ency-Hauptseite 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 eingeflossen.

Die Suche im Web hat mir nicht den Weg zur Lösung gezeigt.

Für Tipps & Hinweise bin ich dankbar.


CMS-Version: pragmaMx 1.12.3 | PHP-Version: 5.2.12 | MySQL-Version: 5.1.66

siggi

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




Wenn man an Gras zieht wächst es auch nicht schneller.

xmjay

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.

CMS-Version: pragmaMx 1.12.3 | PHP-Version: 5.2.12 | MySQL-Version: 5.1.66

Andi

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.
schön´s Grüssle, Andi

xmjay

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
CMS-Version: pragmaMx 1.12.3 | PHP-Version: 5.2.12 | MySQL-Version: 5.1.66

Andi

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...
schön´s Grüssle, Andi

xmjay

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.
CMS-Version: pragmaMx 1.12.3 | PHP-Version: 5.2.12 | MySQL-Version: 5.1.66

AlternativeComputing

Moin,

Müsste das nicht so ausschauen ?

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

// Edit

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

// Edit Ende
MfG

Peter

Andi

#8
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...
schön´s Grüssle, Andi

xmjay

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
CMS-Version: pragmaMx 1.12.3 | PHP-Version: 5.2.12 | MySQL-Version: 5.1.66

xmjay

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

Wie lässt sich die Übersicht davon überzeugen, die Links wie gewünscht anzuzeigen ?
CMS-Version: pragmaMx 1.12.3 | PHP-Version: 5.2.12 | MySQL-Version: 5.1.66

grafikmurkser

#11
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 ...
meine pmx-Seite : die erste und einzige, freie, deutschsprachige Community rund um fraktale Bilder apophysis-schmiede   reg.User mehr als 1000

xmjay

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...
CMS-Version: pragmaMx 1.12.3 | PHP-Version: 5.2.12 | MySQL-Version: 5.1.66

Andi

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
schön´s Grüssle, Andi

xmjay

Holla Andi !

Das ging ja fix  :smile:

Ich meine diese Seite:

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

(siehe Screenie)
CMS-Version: pragmaMx 1.12.3 | PHP-Version: 5.2.12 | MySQL-Version: 5.1.66