Welcome, Guest. Please login or register.
Did you miss your activation email?
May 26, 2012, 12:29:01 AM

Login with username, password and session length
Search:     Advanced search
Interested in joining the WebsiteBaker team?
For more Information read here or on our new website.
155533 Posts in 21713 Topics by 7738 Members
Latest Member: Pattieardathfe
* Home Help Search Login Register
Pages: [1]   Go Down
Print
Author Topic: (Eigenes Modul) Hochkomma wird zu Anführungszeichen im TAG  (Read 599 times)
dwex

Offline Offline

Posts: 92


« on: September 28, 2009, 06:14:06 PM »

Hallo Leute,

ich habe ein Modul auf Basis des "Hello World"-Modules.
Es geht mir dabei um die modify.php

Ich möchte in einem <a>-Tag eine JavaScript-Funktion einfügen.
Wenn ich nun meinen Code
Code:
onclick = 'return checkData();'
einfüge dann werden mir die Hochkommas durch Anführungszeichen ersetzt sodas der Code dann so aussieht:
Code:
onclick = "return checkData();"

Wenn ich das ganze ausserhalb eines Tag´s notiere werden die Hochkommas korrekt ausgegeben.
Es gibt meines erachtens wohl eine Funktion in "den Tiefen" von WB welche das austauschen innerhalb von Tag´s veranlasst.
Hat jemand eine Idee wie ich das umgehen kann - das JavaScript funktioniert ja in Anführungszeichen nicht.

Vielen Dank im voraus!
« Last Edit: September 28, 2009, 06:15:40 PM by dwex » Logged
FrankH

Offline Offline

Posts: 735


WWW
« Reply #1 on: September 28, 2009, 06:19:10 PM »

Tipp: Lerne, dich klar auszudrücken.
Wo fügst du den Code ein, in die modify.php?
Logged

Ochs und Esel in ihrem Lauf
halt ich leider auch nicht auf
dwex

Offline Offline

Posts: 92


« Reply #2 on: September 28, 2009, 06:25:36 PM »

Tipp: Lerne, dich klar auszudrücken.
Wo fügst du den Code ein, in die modify.php?

Ich finde das ist schon ziemlich klar was ich geschrieben habe - Hochkommas werden innerhalb von HTML-Tags ersetzt durch (doppelte) Anführungszeichen.

Beispiel
Code:
echo "<a href=\"einlink.html\" onclick='return checkData()'";
wird im Browser-Quellcode dann so ausgegeben:
Code:
<a href="einlink.html" onclick="return checkData()"

Wenn ich nun z.B. folgendes in meinem Quellcode notiere:
Code:
echo "onclick = 'return checkData()'";
wird das im Browser-Quellcode dann so ausgegeben:
Code:
onclick = 'return checkData()'
.
Also stelle ich fest, dass wenn man Hochkommas in HTML-Tag´s notiert diese von WB irgendwie ersetzt werden.
Wie kann ich das jetzt notieren damit ich diese Ersetzung nicht habe?
« Last Edit: September 28, 2009, 06:30:06 PM by dwex » Logged
FrankH

Offline Offline

Posts: 735


WWW
« Reply #3 on: September 28, 2009, 06:33:42 PM »

Na in deinem zweiten Beispiel wird ja nichts ersetzt.
Das erste Beispiel erscheint mir unlogisch, so eine Ersetzung habe ich noch nie beobachtet.
Vielleicht hast du mehrere echo-Befehle und einer davon verwendet gleich doppelte Hochkommas?
Sonst lade doch mal die komplette modify.php hier hoch, lass mal schauen.
Logged

Ochs und Esel in ihrem Lauf
halt ich leider auch nicht auf
dwex

Offline Offline

Posts: 92


« Reply #4 on: September 28, 2009, 06:40:00 PM »

Also hier mal der komplette "relevante" Codeabschnitt (Interessant wird es in der while-Schleife):
Code:
echo '<div id="warengruppen">';

    echo '<h3>'.$MOD_LH['TXT_WARENGRUPPE_B'].'</h3>';

    // Datenbankabfrage
    $warengruppen_query = mysql_query('SELECT * FROM `mod_lh_wg` ORDER BY `reihung` ASC');

    if(@mysql_num_rows($warengruppen_query)) {

        echo '<table width="100%" cellspacing="0" cellpadding="3" border="0">
                    <tbody>
                        <tr>
                            <td width="35" bgcolor="#666666" style="text-align: center;"><em><span style="color: rgb(255, 255, 255);">ID</span></em></td>
                            <td width="60" bgcolor="#666666" style="text-align: center;"><span style="color: rgb(255, 255, 255);"><em>Reihung</em></span></td>
                            <td bgcolor="#666666"><em><span style="color: rgb(255, 255, 255);">Warengruppe</span></em></td>
                            <td width="60" bgcolor="#666666" style="text-align: center;"><em><span style="color: rgb(255, 255, 255);">Optionen</span></em></td>
                        </tr>';


        // Ausgabe der einzelnen Warengruppen
        while($wgdaten = mysql_fetch_array($warengruppen_query)) {

            $tabellenhintergrund = ( ++$i % 2 == 0 ) ? 'tabellenhintergrund_dunkel' : 'tabellenhintergrund_hell';
            echo '<tr class="'.$tabellenhintergrund.'">
                        <td style="text-align: center;">'.$wgdaten['id'].'</td>
                        <td style="text-align: center;">'.$wgdaten['reihung'].'</td>
                        <td>'.$wgdaten['name'].'</td>
                        <td style="text-align: center;">
                        <img src="'.WB_URL.'/modules/lh-ausschreibung/modify_16.png" border=0>
                        &nbsp;
                        <a';
            echo " onclick='return checkWgDelete();' ";
            echo 'href="'.WB_URL.'/modules/lh-ausschreibung/save.php?page_id='.$page_id.'&section_id='.$section_id.'&wg_id='.$wgdaten['id'].'&action=wg_delete"><img src="'.WB_URL.'/modules/lh-ausschreibung/delete_16.png" border=0>
                        </a>
                    </tr>';
        }

        echo '</tbody>
                </table>';

    } else {
        echo "<div>Es sind noch keine Warengruppen angelegt.</div>";
    }

    echo '</div>';
Wie bereits gesagt - die Ersetzung passiert nur innhalb von HTML-Tags zwischen HTML-Tags wird nichts ersetzt.
Ach ja - und ich verwende natürlich WB 2.8
« Last Edit: September 28, 2009, 06:44:42 PM by dwex » Logged
FrankH

Offline Offline

Posts: 735


WWW
« Reply #5 on: September 28, 2009, 06:53:16 PM »

Dort finde ich nur die Zeile
Code:
echo " onclick='return checkWgDelete();' ";
und wie du selbst in Antwort #2 (Beispiel 2) schreibst, wird eine echo dieses Typs ja korrekt ausgeführt.

Noch ein Tipp:
Wenn ich geholfen haben will und mir jemand sagt "lade doch mal die komplette modify.php hier hoch", dann mache ich das auch und kopiere nicht nur ein Stückchen, das den problematischen Code gar nicht enthält.

Für mich ist das Thema damit jetzt beendet.
Logged

Ochs und Esel in ihrem Lauf
halt ich leider auch nicht auf
dwex

Offline Offline

Posts: 92


« Reply #6 on: September 28, 2009, 07:01:09 PM »

Ich werde hier nicht verstanden!

Vor der relevanten Codezeile wird ein A-Tag geöffnet der sich dann in der nachfolgenden Zeile (nach der relevanten Codezeile) wieder schliesst - also wird schlussendlich das onclick in einem HTML-Tag ausgegeben. Ich schreibe das nur in 3 Zeilen verteilt, damit ich nicht alles Escapen muss.

Die "ganze" modify.php ist nicht recht viel mehr - Nur eben die "Standardsachen".
Hier noch die ganze Datei:
Code:
<?php

if(!defined('WB_PATH')) die(header('Location: index.php'));

@include_once(
WB_PATH .'/framework/module.functions.php');

if(!
file_exists(WB_PATH .'/modules/lh-ausschreibung/languages/' .LANGUAGE .'.php')) {
    require_once(
WB_PATH .'/modules/lh-ausschreibung/languages/DE.php');
} else {
        require_once(
WB_PATH .'/modules/lh-ausschreibung/languages/' .LANGUAGE .'.php');
}

if(!
method_exists($admin'register_backend_modfiles') && file_exists(WB_PATH .'/modules/lh-ausschreibung/backend.css')) {
    echo 
'<style type="text/css">';
    include(
WB_PATH .'/modules/lh-ausschreibung/backend.css');
    echo 
"\n</style>\n";
}

$sql_result $database->query("SELECT * FROM `" .TABLE_PREFIX ."mod_lh` WHERE `section_id` = '$section_id'");
$sql_row $sql_result->fetchRow();



// BOF: Tabelle für Überschrift und CSS-Bearbeiten-Button
    
echo '<table width="100%" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td><h2>' 
.$MOD_LH['TXT_HEADING_B'] .'</h2></td>
            <td width="200" align="right">'
;


            
// Wenn CSS-Bearbeitung möglich --> Button dafür einfügen
            
if(function_exists('edit_module_css')) {
                
edit_module_css('lh-ausschreibung');
            }


    echo 
'</td>
        </tr>
    </tbody>
</table><br />'
;
// EOF: Tabelle für Überschrift und CSS-Bearbeiten-Button

############################# BOF: Warengruppen ausgeben und Button zum Anlegen generieren ####################################

    
echo '<div id="warengruppen">';

    echo 
'<h3>'.$MOD_LH['TXT_WARENGRUPPE_B'].'</h3>';

    
// Datenbankabfrage
    
$warengruppen_query mysql_query('SELECT * FROM `mod_lh_wg` ORDER BY `reihung` ASC');

    if(@
mysql_num_rows($warengruppen_query)) {

        echo 
'<table width="100%" cellspacing="0" cellpadding="3" border="0">
                    <tbody>
                        <tr>
                            <td width="35" bgcolor="#666666" style="text-align: center;"><em><span style="color: rgb(255, 255, 255);">ID</span></em></td>
                            <td width="60" bgcolor="#666666" style="text-align: center;"><span style="color: rgb(255, 255, 255);"><em>Reihung</em></span></td>
                            <td bgcolor="#666666"><em><span style="color: rgb(255, 255, 255);">Warengruppe</span></em></td>
                            <td width="60" bgcolor="#666666" style="text-align: center;"><em><span style="color: rgb(255, 255, 255);">Optionen</span></em></td>
                        </tr>'
;


        
// Ausgabe der einzelnen Warengruppen
        
while($wgdaten mysql_fetch_array($warengruppen_query)) {

            
$tabellenhintergrund = ( ++$i == ) ? 'tabellenhintergrund_dunkel' 'tabellenhintergrund_hell';
            echo 
'<tr class="'.$tabellenhintergrund.'">
                        <td style="text-align: center;">'
.$wgdaten['id'].'</td>
                        <td style="text-align: center;">'
.$wgdaten['reihung'].'</td>
                        <td>'
.$wgdaten['name'].'</td>
                        <td style="text-align: center;">

                        <!-- BOF: Schaltflächen für EDIT Und DELETE der einzelnen Warengruppe -->
                        <img src="'
.WB_URL.'/modules/lh-ausschreibung/modify_16.png" border=0>
                        &nbsp;
                        <a'
;
            echo 
" onclick='return mod_lh-ausschreibung_checkWgDelete_b();' ";
            echo 
'href="'.WB_URL.'/modules/lh-ausschreibung/save.php?page_id='.$page_id.'&section_id='.$section_id.'&wg_id='.$wgdaten['id'].'&action=wg_delete"><img src="'.WB_URL.'/modules/lh-ausschreibung/delete_16.png" border=0>
                        </a>
                        <!-- EOF: Schaltflächen für EDIT Und DELETE der einzelnen Warengruppe -->
                    </tr>'
;
        }

        echo 
'</tbody>
                </table>'
;

    } else {
        echo 
"<div>Es sind noch keine Warengruppen angelegt.</div>";
    }

    echo 
'</div>';

############################# EOF: Warengruppen ausgeben und Button zum Anlegen generieren ####################################
    
?>

Wenn ich übrigends ausserhalb von PHP also nach ?> in HTML folgendes notiere wandelt mir WB die Hochkommas auch in Anführungszeichen um:
Code:
<a onclick='return mod_lantenhammer-ausschreibung_checkWgDelete_b();'>dsfg</a>

Wenn ich jedoch z.B. folgendes notiere wird nichts umgewandelt - es muss wohl an der Template-Engine liegen.
Code:
<p>onclick='return mod_lantenhammer-ausschreibung_checkWgDelete_b();'</p>
« Last Edit: September 28, 2009, 07:05:50 PM by dwex » Logged
Pages: [1]   Go Up
Print
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!