Announcement

Collapse
No announcement yet.

PHP + CSS wechselnde Headergrafik

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • PHP + CSS wechselnde Headergrafik

    Hi erstmal,

    ich habe mich die letzten zwei Tage durch das Internet gesucht um mein Vorhaben (siehe Themenüberschrift) zu realisieren - leider erfolglos. Ich habe z.b. verschiedene "Random Image Scripts" ausprobiert, diese versucht meinen Bedürfnissen anzupassen, aber aus irgendwelchen Gründen will das nicht klappen. Deswegen bin ich nun hier, in der Hoffnung ich habe doch dank meiner nicht wirklich vorhandenen Programmierkenntnisse in CSS und PHP einen Fehler beim implementieren des Scripts gemacht, beim "anpassen", etc. usw. :-)

    Der Teil meiner "index.php" wo ich laut sämtlichen Tutorials zu wechselnden Headergrafiken das Image aufrufen muss sieht folgendermaßen aus:

    Code:
    </style>
    
    <body>
    <div id="page">
    
    
    <div id="header">
    	<div id="headerimg">
    		<h1></h1>
    
    		<div class="description"></div>
    	</div>
    </div>
    <hr />
    Der CSS-Code zum Header ist folgender (dieser ist in einer separaten "style.css" in meinem "css"-Ordner - inkl. aller Grafiken):

    Code:
    #header {
    	background: #81bd01 url('header02.jpg') no-repeat bottom center;
    	}
    
    #headerimg 	{
    	margin: 7px 9px 0;
    	height: 314px;
    	width: 994px;
    	}
    Mein Vorhaben im Detail:

    Ich möchte einfach nur das mit jedem neuladen der Startseite eine andere Headergrafik angezeigt wird.

    Ich hoffe mir kann geholfen werden.

    Vielen vielen Dank schon einmal im voraus.

    PS: Die fragliche Website wo ich das einbauen möchte > www.vasto-lorde.de.vu

  • #2
    Stellt sich die Frage, warum du nicht in einem PHP, HTML, Javascript Forum hier postest? Mit welcher Technik soll die Änderung herbeigeführt werden?
    Christian

    Comment


    • #3
      Originally posted by Christian Marquardt View Post
      Stellt sich die Frage, warum du nicht in einem PHP, HTML, Javascript Forum hier postest? Mit welcher Technik soll die Änderung herbeigeführt werden?
      Erstens - ich war mir nicht sicher wo ich posten soll da ich hier kein Forum bezogen auf CSS gefunden habe. Aber, ein Moderator kann es ja verschieben wenn er es hier als nicht angebracht empfindet. :-)

      Eigentlich ist es mir fast egal wie ich das Ergebnis erziele. Solange es nicht zwingend Javascript ist. Ansonsten, hm.. ich kenne leider nur die PHP+CSS Variante, da ich in Verbindung mit diesen Stichworten auch bei Google gesucht hatte. Hier und da hatte ich zwar auch was von einer Lösung in Javascript gelesen, aber wie schon erwähnt, Javascript muss nicht sein.

      Comment


      • #4
        Da HTML und CSS keine Programmiersprachen sind und du kein Javascript willst und CSS Dateien durch den PHP-Interpreter nicht gerendert werden, wird dir nur übrig bleiben, die CSS-Anweisung in die PHP-Datei zu verschieben und den Link auf das Bild jedesmal per PHP neu zu bestimmen
        Christian

        Comment


        • #5
          @Christian
          hmm.. hab ich erwähnt das ich nur begrenzt Kenntnisse in PHP und so hab? Du bist hier der Fachmann, wenn du also glaubst eine Javascript-Lösung wäre einfacher, dann bin ich ganz Ohr und auch offen dafür. Die Bildergalerie auf meiner Website ist ja immerhin auch Javascript, was solls wenns der Header auch noch "braucht".

          Wie würde das denn dann aussehen?

          Comment


          • #6
            Man könnte im Onload der Seite ein Javascript aufrufen,welches die anzuzeigende Grafik in diesem Element berechnet und dann anzeigt
            Christian

            Comment


            • #7
              http://forum.fachinformatiker.de/web...-help-pls.html
              Christian

              Comment


              • #8
                Hallo,

                JavaScript sollte gewählt werden, wenn sich die Grafik ändern soll während die Seite angezeigt wird. Wenn es lediglich darum geht eine wechselnde Grafik beim Laden der Seite anzuzeigen, dann kann man das durchaus in PHP realisieren.
                z.B.:
                PHP Code:
                <?php
                  $picNum 
                sprintf('%02u'rand(120));
                ?>
                ...
                </style>
                </head>
                <body>
                <div id="page">


                <div id="header" style="background-image:url(./css/header<?php echo $picNum?>.jpg)">
                    <div id="headerimg">
                        <h1></h1>

                        <div class="description"></div>
                    </div>
                </div>
                <hr />
                Was mir allerdings nicht ganz klar ist: Warum wird das Hintergrundbild im #header-Container angezeigt, wenn es in diesem noch einen #headerimg-Container gibt, der dann leer ist? Auch ist die Auszeichnung einer leeren Überschrift (<h1></h1>) nicht sehr sinnvoll.

                @Christian Marquardt: Man kann css-Dateien sehr wohl durch den PHP-Interpreter bearbeiten lassen. Entweder generell durch Angabe einer entsprechenden AddType-Angabe in der Serverkonfiguration oder durch Angabe einer PHP-Datei im href-Attribut des link-Tags für das Stylesheet.
                HTML Code:
                <link href="style.css.php" type="text/css" rel="stylesheet" />
                Diese style.css.php muß natürlich dann den Content-Type text/css haben und gültiges CSS ausliefern.

                Gruß Falk
                Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                Comment


                • #9
                  Danke für die Info
                  Christian

                  Comment


                  • #10
                    Hallo,

                    ich hatte den Bannerwechsel in der Zwischenzeit per Javascript-Lösung hinbekommen. Allerdings war und ist da nach wie vor das Problem das sich die Headergrafik bei jedem Link ändert der angeklickt wird.

                    Ich arbeite nun daran das ganze doch per PHP hinzukriegen und dann auch gleich mit Sessions. Ich bin fleißig am Video-Tutorials schauen und weiß nun immerhin schon wie ich einfache String- oder Integer-Variablen auslesen kann, wie ich das ganze mit einem Bild mache weiß ich noch nicht, aber, mal schaun ob da noch was in den kommenden Tutorial-Lektionen dabei ist.

                    @Falk Prüfer
                    Vielen Dank für den Code-Schnippsel, deine Version ist um einiges kürzer als das was ich so über Google gefunden hatte.

                    Das mit dem Headerimage-div und der leeren Überschrift waren noch überreste. Ich hatte ursprünglich die Überschrift sowie einen kleinen Satz darunter auf diese Art und Weise im Header anzeigen lassen. Vor ein paar Tagen habe ich dies dann aber direkt in die Headergrafik per Photoshop eingebaut. Da ich mir aber immer noch nicht sicher war welche Variante ich nun schlußendlich nutzen möchte, löschte ich erst einmal nur den Textinhalt. ;-)

                    Comment


                    • #11
                      Für alle die evtl. durch Google hierher finden will ich mal noch die Lösung des Problems posten (habe es mittlerweile hinbekommen).

                      Folgendes muß am ganz oben in Zeile 1 in eure Startseite (z.b. index.php):

                      Code:
                      <?php
                      session_start();
                      // wie viel Bilder (durchgängig von 1 - X) sind im Ordner ?
                      $max = 5;
                      $zahl = rand(1, $max);
                      if ( $zahl == $_SESSION['bild'] ) {
                       $zahl++;
                      }
                      $_SESSION['bild'] = $zahl;
                      ?>
                      folgenden img-tag fügt ihr dann an die Stelle ein wo das Bild erscheinen soll. Bei mir sieht das z.b. so aus:

                      Code:
                      <body>
                      
                      <div id="page">
                      	<div id="header"> 
                      			<img src="../images/header/<?php echo $zahl; ?>.jpg"> 
                      	</div>
                      Auf allen anderen Seiten dann folgenden Code einfügen...

                      Wieder ganz oben hin muss:

                      Code:
                      <?php
                      session_start();
                      ?>
                      und das img-tag im body sieht nun folgendermaßen aus:

                      Code:
                      <body>
                      
                      <div id="page">
                      	<div id="header">
                      			<img src="../images/header/<?php echo $_SESSION['bild']; ?>.jpg">
                      	</div>
                      Hoffe es hilft jemandem.

                      Gruß.

                      Comment


                      • #12
                        Hallo,
                        Originally posted by vastolorde View Post
                        Für alle die evtl. durch Google hierher finden ...
                        ...die sollten dann besser nicht den fehlerhaften Code verwenden .
                        Originally posted by vastolorde View Post
                        PHP Code:
                        <?php
                        session_start
                        ();
                        // wie viel Bilder (durchgängig von 1 - X) sind im Ordner ?
                        $max 5;
                        $zahl rand(1$max);
                        if ( 
                        $zahl == $_SESSION['bild'] ) {
                         
                        $zahl++;
                        }
                        $_SESSION['bild'] = $zahl;
                        ?>
                        Für den Fall das $_SESSION['bild'] == $max (also hier == 5) ist und zufällig für $zahl wieder ein Wert == $max erzeugt wird, wird $zahl nämlich zu $max+1 ($zahl++) und liegt damit ausserhalb des Wertebereichs von 1 bis $max. Um also einen Wechsel zu erzwingen und keine zufälligen Wiederholungen zuzulassen wäre hier eine Schleife günstiger.

                        PHP Code:
                        <?php
                        session_start
                        ();
                        // wie viel Bilder (durchgängig von 1 - X) sind im Ordner ?
                        $max 5;
                        do {
                          
                        $zahl rand(1$max);
                        } while (
                        $zahl ==  $_SESSION['bild']);

                        $_SESSION['bild'] = $zahl;
                        ?>
                        Gruß Falk
                        Zuletzt editiert von Falk Prüfer; 13.04.2010, 08:18.
                        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                        Comment


                        • #13
                          Es geht eben immer noch einen Tick besser. :-) Vielen Dank das wird gleich mal übernommen und getestet.

                          Nur, ist es dann normal das ich keine Probleme mit dem Code wie ich ihn oben gepostet habe hatte bzw. habe?

                          Comment


                          • #14
                            Originally posted by vastolorde View Post
                            ...Nur, ist es dann normal das ich keine Probleme mit dem Code wie ich ihn oben gepostet habe hatte bzw. habe?
                            Die Wahrscheinlichkeit das gerade das 5. Banner angezeigt wird und "zufällig" als nächstes wieder das 5. Banner ausgewählt wird ist natürlich sehr gering aber es ist eben nicht unmöglich! Es kann also durchaus sein, das dieser seltene Fall bei dir noch nicht aufgetreten ist.

                            Gruß Falk
                            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                            Comment

                            Working...
                            X