Seite 1 von 1

fehler in function.mod.php

Verfasst: So 5. Dez 2004, 23:44
von martin2002
ich habe da was entdeckt (ich weiß zwar nicht, ob das schon mal jemand angemerkt hat und war jetzt auch zu faul zum suchen :wink: )

aber:

in function modTestModule steht folgende zeile:

Code: Alles auswählen

$code = str_replace(']]',']', $code);
das führt dazu, dass eine codezeile wie:

Code: Alles auswählen

$test = $array_a[$array_b["key"]];
in folgendes umgewandelt wird:

Code: Alles auswählen

$test = $array_a[$array_b["key"];
dadurch wird das modul fälschlicherweise als fehlerhaft markiert.

diese ersetzungen scheinen wohl im zusammenhang mit den CMS_VALUES zu stehen... ich glaube hierfür wäre ein regulärer ausdruck besser. einfach um diesen fehler auszuschließen, auch wenn das nicht so tragisch ist.

Verfasst: Mo 6. Dez 2004, 09:52
von emergence
fehler wurde bereits im CVS_HEAD und 4.5.2alpha behoben
siehe
-> http://www.contenido.de/forum/viewtopic ... 1660#11660

Verfasst: Mo 6. Dez 2004, 18:46
von martin2002
alles klar...
dann hab ich nichts gesagt :cool:

(da will man schon mal was beitragen und dann ist man doch wieder nicht auf dem neuesten stand :wink: )

als denn...

Verfasst: Mo 6. Dez 2004, 21:17
von emergence
beitragen ist gerne gesehen ;-)

Verfasst: Di 7. Dez 2004, 12:57
von martin2002
noch was... der folgende code geht nicht:

Code: Alles auswählen

<?php

$db->query("SELECT * FROM lg_subjects");
while ( ($subject = @mysql_fetch_array($db->Query_ID, MYSQL_ASSOC) ) != false ) {
	$subjects[$subject["SID"] ] = $subject;
}


$db->query('SELECT * FROM lg_teachers ORDER BY TNAME ASC');

if (@mysql_num_rows($db->Query_ID)==0) {
   echo '<table border="0" cellspacing="2" cellpadding="0">
        <tr><td align="right" style="color: #516885; font-size: 12px;" width="150px"><i>Servermeldung</i>&nbsp;|</td>
            <td align="left" class="fontCMS_VALUE[0]" style="border-bottom: 1px solid #B5C2D3;" width="425px">Keine Lehrer in der Datenbank</td>
        </tr>
        <tr><td width="150px">&nbsp;</td>
            <td width="425px"><img src="images/art_read_bar.png"><img src="images/art_read_btn_ext.png" border="0"></td>
        </tr>
    </table><br><br>';
} else {
   while ($db->next_record()) {
echo '<table border="0" cellspacing="2" cellpadding="0">
        <tr><td align="right" style="color: #516885; font-size: 12px;" width="150px">|</td>
            <td align="left" class="fontCMS_VALUE[0]" style="border-bottom: 1px solid #B5C2D3;" width="425px">'.$db->f("TNAME").' ('.$db->f("TNICK").')</td>
        </tr>
        <tr><td width="150px"><img src="'.($db->f('PICTURE') ? $db->f('PICTURE') : 'images/nopic.gif').'" class="imgclass_artread" width="150px" height="100px"></td>
            <td valign="top" class="fontCMS_VALUE[1]" width="425px"><u>E-Mail:</u> <a href="mail://'.$db->f('EMAIL').'">'.$db->f('EMAIL').'</a><br><u>Fächer:</u><br>';
$tsubs = explode("|", $db->f("SUBJECTS"));
if (!empty($db->f("SUBJECTS") ) ) {
   for ($n = 0; $n < count($tsubs); $n++ ) {
      $sub = $subjects[$tsubs[$n] ];
      echo $sub["SNAME"]." (".$sub["SNICK"].")";
   }
}
echo '            </td>
        </tr>
        <tr><td width="150px">&nbsp;</td>
            <td width="425px"><img src="images/art_read_bar.png"><img src="images/art_read_btn_ext.png" border="0"></td>
        </tr>
    </table><br><br>';      
   }
}

?>
ich hatte festgestellt, dass er

Code: Alles auswählen

href="mail://'.$db->f("EMAIL").'">'.$db->f("EMAIL").'</a><br><u>Fächer:</u><br>';
in

Code: Alles auswählen

href="mail://'.$db->f("EMAIL).'">'.$db->f("EMAIL").'</a><br><u>Fächer:</u><br>';
nach dem verarbeiten im cms umwandelt, aber immer nur beim ersten auftreten von dem zugriff auf die results... beim zweiten, darauf folgenden zugriff bleibt die syntax so...
deshalb habe ich die " in ' geändert, was zwar dazu führte, dass die syntax an der betreffenden stelle stimmt... aber der code wohl immer noch fehler hat.

ich hab mir den echt mehrfach angeschaut und weiß nicht warum das so ist... ist da vielleicht noch ein bugfix nötig, von dem ich nichts weiß :wink:

Verfasst: Di 7. Dez 2004, 13:25
von emergence
guter punkt

führt bei mir dazu das ich folgende meldung erhalte

Fatal error: Can't use method return value in write context in e:\contenido\contenido\includes\functions.mod.php(128) : eval()'d code on line 30

ca. 10 sekunden darauf stürzt mein apache server ab...
auch nicht schlecht...

Verfasst: Di 7. Dez 2004, 13:45
von emergence
hat aber nichts mit functions.mod.php zu tun...

fehler ist reproduzierbar mittels

Code: Alles auswählen

<?php

if (empty($db->f("SUBJECTS"))) {

}

?>
-> http://at.php.net/manual/de/function.empty.php

hingegen folgendes funktioniert

Code: Alles auswählen

<?php

$x = $db->f("SUBJECTS");
if (empty($x)) {

}

?>

Verfasst: Di 7. Dez 2004, 16:51
von martin2002
coole aktion (vom server)... 8)
wat hab ich da wieder programmiert :wink:

danke... ich versuchs gleich mal

Verfasst: Mi 8. Dez 2004, 09:26
von emergence
geschlossen...