• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[ERLEDIGT] Hintergrund ändern wenn neue Seite aufgerufen wird

Status
Für weitere Antworten geschlossen.

disast3r

Neues Mitglied
hallo liebe gemiende,
schön das ich hier aufgenommen werden konnte, und hoffe das mir geholfen werden kann, falls dies nicht in dieser kategorie rein passt, dann bitte verschieben, danke

hier mein kleines problem:
ich habe mehrere div-container (banner, navi und haupt) ich rufe die seiten folgender maßen auf:
a href="home.php?site=main"
im container "haupt" steht:
PHP:
<?php
        $site=$_GET['site'];
        if(!isset($site) or !file_exists($site.'.php')) $site='main';
        include($site.'.php');   
?>
das funktioniert auch einwandfrei, jetzt möchte ich auf der home.php das hintergrundbild ändern, wenn ich z.b. main.php aufrufe, oder wenn ich z.b. seite2.php aufrufe.
ich habe es mit mehreren js-scripts versucht, klappt aber leider nicht, ausserdem wollte ich nicht unbedingt js verwenden.
die seiten main.php, seite1.php ... werden nur im container haupt geladen, das bedeutet das alles weitere "statisch" bleibt.
villeicht hat ja jemand eine gute idee, danke im voraus.
lg disast3r
 
Werbung:
ok, zu meiner kleinen schande muss ich gestehen, weiss leider nicht wie das geht, aber erstmal danke für die schnelle antwort (das php skript hab ich auch nur durch zufall gefunden)
hast du ein kleines beispiel für mich?
 
Werbung:
Hallo,

Vorweg: Du erzeugst unter Umständen eine undefined index notice, so wie Du Dein Script gepostet hast. Du solltest per isset bereits fragen, ob Dein Schlüssel per GET übergeben wurde:
PHP:
$site = isset( $_GET['site'] )? htmlspecialchars( $_GET['site'] ): false;

if ( !$site || !file_exists($site . '.php') ) {

    $site = 'main';

}

include_once $site . '.php';

Nebenbei erwähnt wäre vielleicht das hier interessant für Dich: http://www.php-rocks.de/thema/58-einfache-seo-friendly-url-s-umsetzen.html

Zu Deinem Problem:
Du benötigst weder JS noch ein darauf basierendes Framework, wenn Du einfach nur pro Seite ein Hintergrundbild haben willst. Setze einfach eine CSS-Klasse für den BODY-Tag und regel die Bildanzeige über CSS:
PHP:
<body class="<?php echo $site; ?>">
...
</body>
Code:
BODY.main { background:url( sunrise.jpg ); }
BODY.contact { background:url( contact.jpg ); }
BODY.service { background:url( service.jpg ); }
usw...

Gruß Arne
 
Leute, bitte!!! Das ist Pippifax, man muss nur mal logisch denken! Wir reden hier von simplen Grundlagen mit etwas Grundlagen, soetwas muss man alleine lösen können!
Und soetwas
Code:
$site=$_GET['site'];
        if(!isset($site) or !file_exists($site.'.php')) $site='main';
ist einfach nur grausam! Worauf muss denn das isset ausgeführt werden??? Doch wohl nicht auf $site, sondernn doch wohl eindeutig auf $_GET['site']. Nur mal Nachdenken reicht, um das festzustellen.

Zur Info: site und side, einfach mal leo.org fragen
 
erstmal danke für eure antworten.
@Arne Drews , das funktioniert bei mir irgendwie leider nicht, hier mal meine css:
Code:
/* beginn hintergrund */
BODY.main {
    background:url( ../images/hintergrund/insel.jpg );
}

BODY.presse1 {
    background:url( ../images/hintergrund/tauchen.jpg );
}

/* ende hintergrund */


/* brginn formatierung container */
#banner {
    position: absolute;
    margin:0px auto;
    top: 30px;
    width: 750px;
    height: 150px;
    z-index: 1;
}

#gross {
    position:absolute;
    margin: 0 auto;
    padding: 0;
    top: 210px;
    width: 700px;
    z-index: 2;
}

#navi {

    margin: 0 auto;
    float: left;
    width: 140px;
    height: 440px;
}

#haupt {

    margin: 0 auto;
    float: right;
    width: 550px;
    height: 800px;
    overflow: auto;
}
hier die hauptseite:
PHP:
<body class="<?php echo $site; ?>" onload="FP_preloadImgs(/*url*/'../images/menu/home-invert.jpg',/*url*/'../images/menu/ausstattung-invert.jpg')">

<p>&nbsp;</p>

<!-- beginn Banner -->
    <div id="banner">
        <?php
        include ("banner.php") ;
        ?>
    </div>
<!-- ende Banner -->


<!-- beginn hauptfenster -->
    <div id="gross">



<!-- beginn Haupt -->
    <div id="haupt">
    <?php
        $site = isset( $_GET['site'] )? htmlspecialchars( $_GET['site'] ): false;
        if ( !$site || !file_exists($site . '.php') ) {
        $site = 'main';
        }
        include_once $site . '.php';
    ?>
    </div>
<!-- ende Haupt -->


<!-- beginn Navi -->
    <div id="navi">
        <table style="width: 100%" class="tab-bg">
            <tr>
           
           
                <td><a href="home.php?site=main">
                <img height="34" src="../images/menu/home.jpg" width="90" class="auto-style3" id="img1" onmouseout="FP_swapImgRestore()" onmouseover="FP_swapImg(1,1,/*id*/'img1',/*url*/'../images/menu/home-invert.jpg')"/></a></td>
            </tr>
....
vielleicht hat jemand ja noch eine idee, oder findet meinen fehler.
lg disast3r
 
Zuletzt bearbeitet:
Werbung:
Richtig debuggen

1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

Punkt 2 und 3 zeigen dir das Problem auf
 
@bdt600 danke für den hinweis mit der fehlermeldung, nur das ganze zeigt mir auch leider keinen fehler an, also wird das skript ja soweit funktionieren, also muss es ja woanders sein, vielleicht hat jemand ja ne idee, werde natürlich auch weiter suchen, nochmal auch zum verständnis, ich anfänger was php anbetrifft.
 
Naja, Du missachtest das EVA-Prinzip. Schau Dir mal den Quelltext im Browser an. Ich wette, dass das class-Attribut des BODY leer ist...
 
Werbung:
jepp stimmt @Arne Drews im quelltext steht folgendes:
Code:
"<br />
<b>Notice</b>: Undefined variable: site in <b>/var/www/...../seite/home.php</b> on line <b>59</b><br />
muss auch wirklich sage, ich stehe son bissel auf dem schlauch, was den fehler anbetrifft.
danke erstmal für die ganzen hilfen, weiter bin ich leider noch nicht.
lg disast3r
 
Warum das ist, ist relativ einfach zu verstehen! Du verwendest $site, bevor Du sie weiter unten erst initialisierst.
Die Verarbeitung sollte vor der Ausgabe passieren!

Lies Dir mal den EVA-Link durch, den ich Dir gepostet habe.
 
gut soweit klar, aber wie mach ich das, das der body nach dem link verarbeitet wird?
ich sag ja, ich stehe echt auf den schlauch **möp**
 
Werbung:
Wie wäre es, im ersten Step mal die Abfrage auf $site, bis auf das include nach oben zu ziehen, bevor HTML ausgegeben wird?!
 
danke, das wars, jetzt funzt das, hier für alle die das auch gerne wissen möchten:
seite
PHP:
....
....
....
<?php
        $site = isset( $_GET['site'] )? htmlspecialchars( $_GET['site'] ): false;
        if ( !$site || !file_exists($site . '.php') ) {
        $site = 'main';
        }
?>
</head>


<body class="<?php echo $site; ?>" onload="FP_preloadImgs(/*url*/'../images/menu/home-invert.jpg',/*url*/'../images/menu/ausstattung-invert.jpg')">


<p>&nbsp;</p>

<!-- beginn Banner -->
    <div id="banner">
        <?php
        include ("banner.php") ;
        ?>
    </div>
<!-- ende Banner -->


<!-- beginn hauptfenster -->
    <div id="gross">



<!-- beginn Haupt -->
    <div id="haupt">
    <?php
        include_once $site . '.php';
    ?>
    </div>
<!-- ende Haupt -->


<!-- beginn Navi -->
    <div id="navi">
        <table style="width: 100%" class="tab-bg">
            <tr>
             
             
                <td><a href="home.php?site=main">
                <img height="34" src="../images/menu/home.jpg" width="90" class="auto-style3" id="img1" onmouseout="FP_swapImgRestore()" onmouseover="FP_swapImg(1,1,/*id*/'img1',/*url*/'../images/menu/home-invert.jpg')"/></a></td>
            </tr>
            <tr>
             
                <td>&nbsp;</td>
            </tr>
            <tr>
                <td>Ferienwohnung</td>
            </tr>
            <tr>
             
                <td><a href="home.php?site=presse1">
                <img height="34" src="../images/menu/ausstattung.jpg" width="90" id="img2" onmouseout="FP_swapImgRestore()" onmouseover="FP_swapImg(1,1,/*id*/'img2',/*url*/'../images/menu/ausstattung-invert.jpg')" /></a></td>
            </tr>
            <tr>
....
....
....
hier die css
Code:
/* beginn hintergrund */
BODY.main {
    background:url( ../images/hintergrund/insel.jpg );
}

BODY.presse1 {
    background:url( ../images/hintergrund/tauchen.jpg );
}

/* ende hintergrund */
....
....
....
jetzt kann das gerne auch gschlossen werden,
ich möchte mich gerne bei allen bedanken die mir geholfen haben!
lg disast3r
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben