Jörg Rusbach: Reihenfolge bei div-Containern

Hallo,

ich habe einen div-Container, der - abhängig vom Inhalt - eine unterschiedliche Höhe haben kann.

Darunter ist ein Login-Formular; damit das immer richtig positiniert ist, ist es das child vom Inhalts-Container.

So ungefähr:

  
<div id='content'>  
INHALT  
  
<div id='login'>  
LOGIN-FORMULAR  
</div>  
  
</div>  

Somit wird natürlich die Login-Funktion nach der Inhalt verarbeitet, was so nicht gedacht ist.

Gibt es eine Möglichkeit, die Verabeitung vorzuziehen und dabei trotzdem Positionierung beizubehalten?

Grüße

  1. Grüße,
    ich würde es flexibler halten, und verarbeitung und ausgabe trenne - meinst du mit verarbeitung php?

    dann lad doch content in $content und forumlar in $login - dann kannst du die in beliebiger reihenfolge ausgeben.
    MFG
    bleicher

  2. Hi,

    <div id='content'>
    INHALT

    <div id='login'>
    LOGIN-FORMULAR
    </div>

    </div>

    
    >   
    > Somit wird natürlich die Login-Funktion nach der Inhalt verarbeitet, was so nicht gedacht ist.  
      
    Von welcher "Funktion" und "Verarbeitung" redest du?  
    Das ist HTML, und wird höchstens interpretiert und anschliessend dargestellt.  
      
    
    > Gibt es eine Möglichkeit, die Verabeitung vorzuziehen und dabei trotzdem Positionierung beizubehalten?  
      
    Meinst du vielleicht, dass du die Anzeige des Loginformulars an anderer Stelle haben willst?  
      
    Das könntest du bspw. mittels absoluter Positionierung erreichen.  
      
    MfG ChrisB  
      
    
    -- 
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    
  3. Hi Joerg,

    ich habe einen div-Container, der - abhängig vom Inhalt - eine unterschiedliche Höhe haben kann.

    was ist denn dann ggf. der Unterschied zwischen der Hoehe?  ;-)

      
    
    > <div id='login'>  
    > LOGIN-FORMULAR  
    > </div>  
    
    

    Warum ein div? Ein Formular ist HTML-immanent in einem Formular-Element beheimatet - da gibt es keinen guten Grund, dieses noch in ein "Login-Div" zu stecken.

    Aber was ich eigentlich sagen wollte - und ich rate dabei ebenso ins Blaue wie die anderen, denn ich kann nicht wirklich von mir behaupten, Deine Frage verstanden zu haben:

    Gibt es eine Möglichkeit, die Verabeitung vorzuziehen und dabei trotzdem Positionierung beizubehalten?

    Wenn es sich um ein Affenformular handelt - da hat die Verarbeitung der Formulardaten nicht viel mit der eventuellen erneuten Darstellung zu tun. Du kannst ohne weiteres als erstes im Skript die gesendeten Daten auswerten und danach die Ausgabe des HTML-Codes mit Deinem ersten div-Element beginnen. Wo drueckt Dir denn dabei der Schuh?

    Viele Gruesse,
    der Bademeister

  4. Achso, natürlich PHP :) Hier ein Teil der index.php:

      
    echo "<div id='content'>";  
      
    switch ($menue)  
    {  
    case "start": include('start.php'); break;  
    case "videos": include('videos.php'); break;  
    // usw.  
      
    default: include('start.php');  break;  
    }  
      
    echo "<div id='login'>";  
    include 'login.php';  
    echo "</div>";  
      
    echo "</div>";  
    
    

    Style dazu:

      
    #content { position:absolute; left:50%; margin-left:-285; top:120; width:510; overflow:no; }  
      
    #login  { position:relative; left:50%; margin-left:-250; top:0; height:25; width:500; text-align:center;}  
    
    

    Die relative Positionierung sorgt dafür, dass das Login-Formular immer unter dem Content steht, der halt unterscheidlich lang ist. Würde ich absolut positionieren, kann sich das ja überlagern.

    Durch diese Anordnung wird aber erst die Darstellung des content-divs verarbeitet, und danach das login-Formular. Das ist auch garnicht schlimm, außer beim 1. Aufruf. Denn im content wird geprüft:

      
    if (logged_in())  
    {  
    //usw.  
    
    

    Da ja aber der Login erst durch das login-Formular veranlasst wird, die Prüfung im Content aber VORHER erfolgt, geht es davon aus, dass der Benutzer nicht eingeloggt ist.

    1. Hi,

      Die relative Positionierung sorgt dafür, dass das Login-Formular immer unter dem Content steht, der halt unterscheidlich lang ist.

      Da würde es auch ohne relative Positionierung stehen, weil es nach dem Content im Quelltext steht.

      Durch diese Anordnung wird aber erst die Darstellung des content-divs verarbeitet, und danach das login-Formular. Das ist auch garnicht schlimm, außer beim 1. Aufruf. Denn im content wird geprüft:

      if (logged_in())
      {
      //usw.

      
      >   
      > Da ja aber der Login erst durch das login-Formular veranlasst wird, die Prüfung im Content aber VORHER erfolgt, geht es davon aus, dass der Benutzer nicht eingeloggt ist.  
        
      Dann änder diesen alles andere als optimalen Scriptaufbau.  
        
      Beschäftige dich mit dem [EVA-Prinzip](http://de.wikipedia.org/wiki/EVA-Prinzip).  
        
      MfG ChrisB  
        
      
      -- 
      Light travels faster than sound - that's why most people appear bright until you hear them speak.
      
      1. Dann änder diesen alles andere als optimalen Scriptaufbau.

        Hm, da hätte ich mir schon etwas Handfesteres vorgestellt. Wie denn?

        1. Hi,

          Dann änder diesen alles andere als optimalen Scriptaufbau.

          Hm, da hätte ich mir schon etwas Handfesteres vorgestellt. Wie denn?

          Hast du zum verlinkten Stichwort nachgelesen?

          Was erwartest du denn jetzt noch "handfesteres"?

          Nehme deine Daten in Empfang und verarbeite sie, bevor du Ausgaben machst. So können alle Ausgaben an die jeweiligen Daten angepasst werden.

          MfG ChrisB

          --
          Light travels faster than sound - that's why most people appear bright until you hear them speak.
          1. Hast du zum verlinkten Stichwort nachgelesen?

            Ja, hab' ich. Und ich stand auf dem Schlauch.

            Ich habe jetzt die Überprüfung, ob Daten vom Login-Formular gepostet wurden und korrekt sind aus der login.php ausgegliedert und in der index.php vor dem content aufgerufen - jetzt verhält's sich so wie's soll :)

            Danke!