Layereigenschaften+while-schleife

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Layereigenschaften+while-schleife

    Hi erstmal, hab mich hier mal neu angemeldet, in der Hoffnung, dass man hier ein wenig feedback erhält. Falls ich mich im Forum geirrt haben sollte, bitte ich um Entschuldigung.

    Also folgendes: Hab mir ein script zusammengebastelt, welches mir für jeden gefunden Datanbank einen Layer generiert.

    Jeder layer is anfangs erstmal invisible. Sobald man auf den Link der jeweiligen Zeile klickt, wird der der jeweilige Layer angezeigt - das ganze funktioniert sogar^^

    Warum habe ich also ein anliegen? Ich wollte nur mal anfragen, ob ich das auch ordentlich realisiert habe. Bin mir nämlich ziemlich sicher, dass meine Lösung zuweilen sehr ungeschickt wirken. Erhoffe also den einen oder anderen Tip, wie ich das gescheiter lösen könnte. Also, hier das Script:

    PHP-Code:
    <link rel="stylesheet" href="library/unristyle.css" type="text/css">
    <style type=\"text/css\">
    div.popup {
    position: absolute;
     visibility:visible;
    display:none;
     z-index: 10;
     margin-left: -60px;
     margin-top: -50px;
     width: 160px;
     height: 200px;}
    </style>
    <?
    include('inc/config.php');
    $sql = "SELECT pic FROM cats WHERE typeid = '1'";
    $res = mysql_query($sql,$conn);
    $i=1;
    $go = mysql_query("SELECT COUNT(catid) FROM cats WHERE typeid = '1'");   
    $zahl = mysql_result($go, 0, "count(catid)");
    echo"
    <script language=\"JavaScript\">

    function ShowHide(";
    for ($j = 1; $j <= $zahl ; $j++) {
        if ($j != $zahl) {
        echo "id$j, visibility$j, ";
        }
        else {
        echo "id$j, visibility$j";
        }
    }    
    echo") {
        obj = document.getElementsByTagName(\"div\");";
    for ($j = 1; $j <= $zahl ; $j++) {
       echo "obj[id$j].style.display = visibility$j;";
        }
    ?>
    }
    </script>
    <body onload="javascript:ShowHide(<?
    for ($j = 1; $j <= $zahl ; $j++) {
        if ($j != $zahl) {
            echo "'popup_$j', 'none', ";    
        }
        if ($j == $zahl) {
            echo "'popup_$j', 'none'";
        }    
    }?>)">

    <?
    while($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
        $pic = $row['pic'];
    ?>

    <?
    echo"
    <div id=\"popup_$i\" class=\"popup\" >

    <table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" bgcolor=\"#05242F\">
    <tr>
    <td class=\"o u r l place\">
    <table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"220\">
    <tr>
    <td align=\"center\" valign=\"middle\">$pic</td>
    </tr>
    <tr>
    <td align=\"right\">
    <a href=\"javascript:ShowHide('popup_$i','none')\" class=\"tlink\">close</a>
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </table></div>";
    ?>
    <a href="javascript:ShowHide(<?
    for ($j = 1; $j <= $zahl ; $j++) {
        if (($j != $i) && ($j != $zahl)) {
            echo "'popup_$j', 'none', ";    
        }
        if (($j == $i) && ($j != $zahl)) {
            echo "'popup_$j', 'inline', ";
        }
        if (($j != $i) && ($j == $zahl)) {
            echo "'popup_$j', 'none'";
        }    
        if (($j == $i) && ($j == $zahl)) {
            echo "'popup_$j', 'inline'";
        }
    }
    ?>)">show layer <?=$i?></a>
    <?
    $i++;
    }
    ?>
    </body>
    Wäre über Anregungen dankbar.
    Zuletzt geändert von thrawn; 02.01.2005, 22:22.

  • #2
    Hallo,

    bitte lesen: http://www.php-resource.de/forum/sho...threadid=47906

    und wofür postest du hier PHP-Code, wenn es dir doch um die html-layer geht?

    Kommentar


    • #3
      Original geschrieben von TobiaZ
      Hallo,

      bitte lesen: http://www.php-resource.de/forum/sho...threadid=47906

      und wofür postest du hier PHP-Code, wenn es dir doch um die html-layer geht?
      Jo danke, habs mir grad durchgelesen. Ich denke allerdings, dass ich am Anfang meines Postings deutlisch gemacht habe, dass es sich nicht genau einteilen lässt - geht hier ja um PHP, JS & html - vondaher war ich etwas unentschlossen, wo ich das hinklatschen soll.

      Evtl kannst Du mir ja sagen, in welchem Forum ich damit richtig wäre.

      Kommentar


      • #4
        Das forum habe ich nicht bemängelt! Mir gehts um die scrollbar!

        Kommentar


        • #5
          *fixed* - sry, nicht drauf geachtet.

          Kommentar


          • #6
            Also grundsätzlich ist der Code nicht falsch (es funktioniert ja). Allerdings find ich Struktur, was Dir anscheinend wichtig ist, nicht so gelungen. Ich bin eher ein Freund davon, Programmierlogik (PHP), Aufbau (html) und Aussehen (CSS zu trennen). Von daher benutze ich für die Ausgabe immer Templates. Da das hier aber nicht nötig zu sein scheint, würde ich wenigstens dazu raten, den PHP Teil nach oben zu setzen und unten nur die Sachen auszugeben, die sich nicht umgehen lassen.

            Das da find ich z. B. extrem unübersichtlich:
            PHP-Code:
            echo"
            <script language=\"JavaScript\">

            function ShowHide("
            ;
            for (
            $j 1$j <= $zahl $j++) {
                if (
            $j != $zahl) {
                echo 
            "id$j, visibility$j, ";
                }
                else {
                echo 
            "id$j, visibility$j";
                }
            }    
            echo
            ") {
                obj = document.getElementsByTagName(\"div\");"
            ;
            for (
            $j 1$j <= $zahl $j++) {
               echo 
            "obj[id$j].style.display = visibility$j;";
                }
            ?>

            Besser wäre doch:
            PHP-Code:
            <?
            $jsinput = '';
            $jsinput2 = '';
            for ($j = 1; $j <= $zahl ; $j++)
            {
                if ($j != $zahl) 
               {
                   $jsinput .= "id$j, visibility$j, ";
                }
                else 
                {
                    $jsinput .= "id$j, visibility$j";
                }
                $jsinput2 .= "obj[id$j].style.display = visibility$j;";
            }    
            ?>
            <script type="text/javascript">
            function ShowHide(<? echo $jsinput ?>)
            {
                obj = document.getElementsByTagName("div");
                <? echo $jsinput2 ?>
            }
            Das ist zwar auch noch nicht toll und enthält vielleicht auch Fehler, die ich jetzt aber keine Lust hab nachzuprüfen, wirkt aber gleich viel strukturierter. Wenn Du nämlich mal in 2 Jahren nochmal über den Quelltext schaust, wirst Du wahrscheinlich erstmal Probleme haben, PHP und JS auseinander zu halten, weil bei Sprachen auch teilweise die gleichen Funktionen nutzen. Deshalb sowas möglichst immer trennen.

            Kommentar

            Lädt...
            X