blockproblem mit phplib

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

  • blockproblem mit phplib

    hallo,
    ich habe ein problem:
    ich möchte gern ein admininterface mit templates programmieren.
    nun stellt sich mir aber das problem, dass ich zwar das ganze auch gut am laufen habe, aber nun über ein "switch" abfragen will, welcher modus gewählt wurde und dann über blöcke alles in einer template-datei unterbringen will. aber das problem besteht darin, dass die tabellendaten in den "block-tags" ja trotzdem interpretiert werden, auch wenn der block überhaupt nicht geparst worde. ist es überhaupt möglich das so zu realisieren, dass alle ungeparsten blöcke ausgeblendet werden (also samt html-inhalt) und ich trotzdem php und html getrennt habe ?!

    hier einmal die admin.php:

    PHP-Code:
    <?php
    session_start
    ();
    include(
    '../includes/db.php');
    if (!
    session_is_registered('username'))
    {
            die (
    "Du bist nicht eingeloggt !");

    $username $_SESSION['username'];
    $user_level $_SESSION['user_level'];
    // 1. Schritt
    include ('../includes/templates.php');
    include (
    'admin_header.php');
    $tpl = new Template();
    $tpl->set_unknowns("keep");
    // switch für navigation
    switch ($_GET['action'])
    {
        case 
    'user':
            
    //switch für user-administration
            
    switch ($_GET['mode'])
            {
                case 
    'edit':
                    
    $tpl->set_file (array('bla' => '../templates/admin/users_body.tpl'));
                    
    $tpl->set_block('bla''edit''editform');
                    
    /*$sql = "SELECT * FROM user ORDER BY ID ASC";
                    $result = mysql_query($sql, $conn) OR die(mysql_error());
                    $i=0;
                    while ($userdata = mysql_fetch_assoc($result))
                    {*/    
                        
    $tpl->set_var(array('username' => $userdata['username'],
                                            
    'edit' => $_SERVER['REQUEST_URI'].'&mode=edit&userid='.$userdata[ID],
                                            
    'delete' => $_SERVER['REQUEST_URI'].'&mode=delete&userid='.$userdata[ID],
                                            
    'rang' => $user_level,
                                            ));
                        
    $tpl->parse('editform''edit'true);
                    
    //}
                    
    $tpl->pparse('out', array('bla'));
                    
    //$tpl->p('out'); 
                    //mysql_close($conn);*/
                    
    echo('haha, wie toll');
                break;
                default:
                    
    $tpl->set_file (array('inhalt' => '../templates/admin/users_body.tpl'));
                    if (
    $_GET['mode'] <> 'edit')
                     {    
                         
    $tpl->assign_block_vars('edit', array());
                     }
                    
    $tpl->set_block('inhalt''users''userrows');
                    
    $sql "SELECT * FROM user ORDER BY ID ASC";
                    
    $result mysql_query($sql$conn) OR die(mysql_error());
                    
    $i=0;
                    while (
    $userdata mysql_fetch_assoc($result))
                    {    
                        
    $i++;
                        if(
    $userdata[user_level] == 1)
                        {
                            
    $user_level 'Admin';
                        }
                        if(
    $userdata[user_level] == 2)
                        {            
                            
    $user_level 'Mitglied';
                        }
                        
    $row_color = (!($i 2)) ? '#CCCCCC' '#999999';
                        
    $tpl->set_var(array('username' => $userdata['username'],
                                            
    'edit' => $_SERVER['REQUEST_URI'].'&mode=edit&userid='.$userdata[ID],
                                            
    'delete' => $_SERVER['REQUEST_URI'].'&mode=delete&userid='.$userdata[ID],
                                            
    'rang' => $user_level,
                                            
    'row_color' => $row_color));
                        
    $tpl->parse('userrows''users'true);
                    }
                    
    $tpl->parse('out', array('inhalt'));
                    
    $tpl->p('out'); 
                    
    mysql_close($conn);
                break;
            }
            break;

        default:
            
    $tpl->set_file (array('inhalt' => '../templates/admin/index_body.tpl'));
            
    $tpl->set_block('inhalt''index''index_handle');
            
    $tpl->set_var(array('username' => $username));
            
    $tpl->parse('index_handle''index'true);
            
    $tpl->parse('out', array('inhalt'));
            
    $tpl->p('out');
        break;
    }
    include(
    'admin_tail.php');
    ?>
    (alles ein wenig verwurschtelt, da ich immer alles möglich teste und rumschiebe)

    und das dazugehörige tpl-file:

    Code:
    <!-- start users_body.tpl -->
    <table width="471" border="0" cellpadding="0" cellspacing="0" style="border-collapse:collapse;">
      <tr>
        <td width="99" height="19" valign="top" style="border:1px inset #000000;"><div align="center"><strong>Benutzer</strong></div></td>
        <td width="139" valign="top" style="border:1px inset #000000;"><div align="center"><strong>E-M@il</strong></div></td>
        <td width="115" valign="top" style="border:1px inset #000000;"><div align="center"><strong>Benutzerrang</strong></div></td>
        <td width="57">&nbsp;</td>
        <td width="61">&nbsp;</td>
      </tr>
      <!-- BEGIN users -->
      <tr>
        <td height="19" valign="top" bgcolor="{row_color}" style="border:1px inset #000000;"><div align="center">{username}</div></td>
        <td valign="top" bgcolor="{row_color}" style="border:1px inset #000000;"><div align="center">{email}</div></td>
        <td valign="top" bgcolor="{row_color}" style="border:1px inset #000000;"><div align="center">{rang}</div></td>
        <td valign="top" bgcolor="{row_color}" style="border:1px inset #000000;"><div align="center"><a href="{edit}">Ändern</a></div></td>
        <td valign="top" bgcolor="{row_color}" style="border:1px inset #000000;"><div align="center"><a href="{delete}">L&ouml;schen</a></div></td>
      </tr>
      <!-- END users -->
      <!-- BEGIN edit -->
      <tr>
        <td width="99" height="19" valign="top" style="border:1px inset #000000;"><div align="center"><strong>Jetzt wird editiert !!</strong></div></td>
      </tr>
      <tr>
      	<td height="19" valign="top" style="border:1px inset #000000;"><div align="center">{username}</div></td>
        <td valign="top"  style="border:1px inset #000000;"><div align="center">{email}</div></td>
        <td valign="top"  style="border:1px inset #000000;"><div align="center">{rang}</div></td>
        <td valign="top"  style="border:1px inset #000000;"><div align="center"><a href="{edit}">Ändern</a></div></td>
        <td valign="top"  style="border:1px inset #000000;"><div align="center"><a href="{delete}">L&ouml;schen</a></div></td>
      </tr>
      <!-- END edit -->
    </table>
    <!-- end user_body.tpl -->
    ich hoffe jemand versteht mein problem und kann mir helfen !! ich bewege mich hier auf total neuem gebiet und hab ab und an mal noch meine schwierigkeiten!
    danke schonmal

    webbi

  • #2
    1. In die Klasse ein Member $parsed_blocks einbauen; beim Initialisieren als leeres Array definieren
    2. in ::set_block einfügen: $this->parsed_blocks[] = $block
    3. neue Methode
    PHP-Code:
    function rem_nonparsed()
    {
      
    preg_match_all('/<!-- BEGIN ([a-z]+) -->.*<!-- END \\1 -->/sU'$this->text,
        
    $matchesPREG_SET_ORDER PREG_OFFSET_CAPTURE);
      for (
    $i=count($matches)-1$i>=0$i--)
        if (!
    in_array($matches[$i][1][0], $this->parsed_blocks))
      {
        
    $p $matches[$i][0][1];
        
    $this->text substr($this->text0$p)
          . 
    substr($this->text$p+strlen($matches[$i][0][0]));
      }

    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      ersteinmal vielen dank für deine antwort, hab schon gedacht, mir kann keiner helfen !!
      hab das problem erstmal über clear_var(array(nichtgeparste blöcke)) gemacht, sicher nicht sehr elegant, weil man immer alle blöcke definiert haben muss und dann dort auch eingeben muss, ich werde mich einmal mit deiner lösung auseinandersetzen, muss bloß erstmal durch das code-schnipsel durchsteigen !!

      Kommentar

      Lädt...
      X