tamara87
Goto Top

PHP Schalter für HTML Seite

Hallo zusammen,

wie der Threadtitel schon vermuten lässt, suche ich Hilfe bei der Programmierung eines PHP Schalters.
Und zwar möchte ich gerne folgendes machen. Ich habe eine Homepage bestehend aus HTML und JS Elementen
und möchte gerne ohne immer ein spezielles Programm benutzen zu müssen, den Hintergrund der Webseite ändern.
Ich weiß bereits, dass man das mit JS machen kann, allerdings sind die Änderungen dann ja nicht dauerhaft,
da es ja soweit ich das verstanden habe nur Clientseitig funktioniert.
Korrigiert mich bitte wenn ich da was falsch verstanden habe.

Ich möchte mir also einen Schalter bauen oder am besten bauen lassen, mit dem ich mittels PHP
von der Startseite aus, den Hintergrund ändern kann. Also per Button oder Link soll in einer HTML Datei
aus Back1.jpg, Back2.jpg werden. Das Design spielt hier keine Rolle, also ob Link oder Button, ist egal.

Es wäre mir auch wichtig, dass mir jemand erklärt, wie das Ganze funktioniert,
also vom Prinip her. Ich habe leider keine Ahnung vom PHP programmieren
und möchte es eigentlich auch nicht extra für diese Sache erlernen,da ich mit HTML eigendlich schon
ganz gut zurecht komme,
sondern nur diesen einen PHP Schalter in meine Seite einbauen um über einen Link oder Butten auf der index.htm
diese Änderung durch zu führen

Ich hoffe jetzt einfach mal, dass mir jemand dabei helfen kann das ganze mit PHP zu realisieren, denn
angeblich soll es nur damit gehen. Und wie gesagt, ich habe von PHP leider keine Ahnung, also seid nicht
sauer wenn ich eventuell Rückfragen habe.

LG Tamara

Content-ID: 203908

Url: https://administrator.de/contentid/203908

Ausgedruckt am: 22.11.2024 um 18:11 Uhr

nxclass
nxclass 25.03.2013 aktualisiert um 13:04:26 Uhr
Goto Top
also seid nicht sauer wenn ich eventuell Rückfragen habe.
paar Rückfragen hätte ich:
  • wie ist die Information des Hintergrund Bildes abgelegt? (in einer html, oder css Datei ?)
  • wer soll alles berechtigt sein den Hintergrund zu ändern ?
  • wie erfolgt die Auswahl ? (upload o. selectbox ?)

Soweit ich das sehe brauchst du eine Art Admin Skript, mit Konfigurationsdatei (für die Bild Urls) um dann damit deine HTML Seite zu manipulieren.
Tamara87
Tamara87 25.03.2013 um 21:13:22 Uhr
Goto Top
Ja klar
Hätte ich vielleicht direkt dazuschreiben sollen face-wink

Zu 1 )
Die Informationen sind in einer HTML Datei gespeichert

Zu 2 )
Nur Ich soll dazu berechtigt sein

ZU 3 )
Eigentlich liegt der neue Hintergrund bereits auf dem Server,
aber wenn auch eine Uploadmöglichkeit bestehen würde wäre das natürlich Perfekt,
aber ist jetzt kein unbedingtes muss

LG Tamara
Guenni
Guenni 26.03.2013 um 22:57:15 Uhr
Goto Top
Hi Tamara87,

nur ein Hintergrundbild mittels PHP zu setzen, ist mit Sicherheit nicht aufwändig.

Aufwändig wird hier (bei deinem Wunsch) das Ganze drum herum, nur um Hintergrundbilder zu setzen.

Wenn es nur darum geht, wäre es nicht einfacher, mittels JavaScript die Bilder via Zufall zu setzen?

Ich hab' hier mal ein Array mit Bildnamen gefüllt. Dann gibts eine Funktion, die eine Zufallszahl ausgibt.

Zum Schluß eine Funktion, die das Bild im Bodybereich setzt. Da die Bilder nicht existieren, wird im

Bodybereich nur zur Kontrolle nochmal der Bildpfad ausgegeben.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>
<head>
<title>Untitled</title>
<script type="text/javascript">  
<!--
var Bild = new Array();
Bild = new Image();
Bild.src = "nacht.jpg";  
Bild[1] = new Image();
Bild[1].src = "morgen.jpg";  
Bild[2] = new Image();
Bild[2].src = "vormittag.jpg";  
Bild[3] = new Image();
Bild[3].src = "nachmittag.jpg";  
Bild[4] = new Image();
Bild[4].src = "abend.jpg";  

function zufallszahl(min,max){
 if(min > max) {
  return -1;
 }
 if(min == max) {
  return min;
 }
 var r;
 do {
  r = Math.random();
 }
 while(r == 1.0);
 return min + parseInt(r * (max-min+1));
}

function setbild(){
 return Bild[zufallszahl(0,Bild.length - 1)].src;
}

// -->
</script>
</head>
<body>
<script type="text/javascript">  
<!--
document.getElementsByTagName('body').background = setbild();  
/*
* Kontrollausgabe des Bildpfads 
*/
alert(document.getElementsByTagName('body').background);  
// -->
</script>
</body>
</html>


Gruß
Günni
Tamara87
Tamara87 27.03.2013 aktualisiert um 08:26:53 Uhr
Goto Top
Hi Günni

Danke für deinen Lösungsvorschlag,
aber aus deinem Beitrag werde ich irgendwie nicht so richtig schlau. Du bietest mir
eine Javascript Lösung an bei der das Hintergrundbild per Zufall gewechselt wird.
Das brauch ich allerdings gar nicht bzw. hätte ich das wahrscheinlich sogar selbst hinbekommen,
da ich mit Javascript und HTML eigentlich ganz gut zurecht komme.

Was ich tatsächlich brauche ist eine einfache Funktion mit der ich zwischen zwei Bildern hin und her schalten kann. Also aus dem Wert Back1.jpg in der Index.html, möchte ich durch anklicken eines Links oder Buttons Back2.jpg machen. Die Bilder liegen beide bereits
in einem Ordner auf dem Server.

Leider verstehe ich nicht ganz, warum das so schwierig sein soll. Aber ich habe ja auch erwähnt, dass ich von PHP recht wenig Ahnung habe, insofern wäre ich über eine Erklärung sehr dankbar, damit ich verstehen kann warum das nicht so einfach ist.

LG Tamara
nxclass
nxclass 27.03.2013 aktualisiert um 10:54:32 Uhr
Goto Top
oder am besten bauen lassen,
wäre mir auch wichtig, dass mir jemand erklärt, wie das Ganze funktioniert,
es eigentlich auch nicht extra für diese Sache erlernen
... ich habe keine Lust mich eine Stunde hin zu hocken und das mit samt Dokumentation umzusetzen.

/admin/index.php
<?php

define('PATH_WWW_IMAGES', '/images');  
define('FILEPATH_CONFIG_CSS', '../css/config.css');  

if (!isset($_REQUEST['action'])) {  
    echo json_encode( array( 'result'=>'ERROR', 'message'=>'parameter "action" is missing' ) );  
    exit(0);
}

switch (strtolower($_REQUEST['action']))  
{
    case 'setbgimage':  
        if (!isset($_REQUEST['imagepath'])) {  
            echo json_encode( array( 'result'=>'ERROR', 'message'=>'parameter "imagepath" is missing' ) );  
            exit(0);
        }
        $configFile = realpath( FILEPATH_CONFIG_CSS );
        if (!$configFile || !is_writable($configFile)) {
            echo json_encode( array( 'result'=>'ERROR', 'message'=>'cant access config.css in "'.$configFile.'"' ) );  
            exit(0);
        }
        $content = file_get_contents($configFile);
        if ($content = preg_replace(
            '/^body\ \{\ background\-image\:url\(\'[^\']*\'\);\ \}/',  
            'body { background-image:url(\''. PATH_WWW_IMAGES .'/'. $_REQUEST['imagepath'] .'\'); }',  
            $content
        )) {
            file_put_contents($configFile, $content);
        }
        break;
        
    default:
        return json_encode( array( 'result'=>'ERROR', 'message'=>'action "'.$_REQUEST['action'].'" not found' ) );  
        exit(0);
}

echo json_encode( array( 'result'=>'OK', 'message'=>'' ) );  
exit(0);

/css/config.css
body { background-image:url('/images/someBg.jpg'); }  
... naja

Rufst nun im Browser (oder per Ajax) die URL: http://whatever.com/admin/?action=setBgImage&imagepath=background.j ... auf, wird der Eintrag in der CSS Datei angepasst.
Du kannst nun überlegen wie Du am besten diese Schnittstelle nutzt.
Ggf. musst Du noch die Pfade anpassen in der index.php.
Tamara87
Tamara87 28.03.2013 um 10:10:08 Uhr
Goto Top
Hi nxclass
Vielen Dank für deine Hilfe, dass es so viel Arbeit ist, habe ich nicht gewusst. Ich habe so etwas ähnliches schon mal mit Javascript gemacht, allerdings war das dann nur so eine Art Vorschau, aber es sollte ja dauerhaft geändert werden.
Da es bei der Javascript Variante nur ein paar Zeilen waren, dachte ich, dass
es bei PHP ähnlich sein würde. Da ich aber wie bereits erwähnt wenig Ahnung von PHP
habe, hab ich den Aufwand wohl etwas unterschätzt

Und eine Dokumentation, habe ich ja gar nicht verlangt, ich wollte nur in etwa die
Funktionsweise verstehen, was hier zum Glück nicht schwierig war, weil du ja alles
gut verständlich aufgeschrieben hast.
Ich hab allerdings noch eine Frage bezüglich der CSS Datei bzw. in meinem Fall,
der HTML Datei.
Kann es sein, dass der Dateiname nur geändert wird, wenn dieser Befehl
in der ersten Zeile steht ?

body { background-image:url('/images/someBg.jpg'); }

Was muss ich denn ändern wenn er z.B. in Zeile 20 stehen soll, denn zuerst kommen bei HTML ja die Zeilen

<html>
<head>
.usw

Wie bekomme ich denn diese "Variable" in eine tiefere Reihe ? Wenn ich sie einfach umpositioniere, dann schreibt er sie nicht mehr um. Als wenn er sie nicht mehr finden würde.

LG Tamara
nxclass
nxclass 28.03.2013 aktualisiert um 14:25:24 Uhr
Goto Top
Ich habe diese "Manipulation" mit Absicht in eine CSS Datei gepackt. Grund ist dass durchaus mal was nicht funktionieren könnte und dann u.U. deine HTML Seite kaputt ist.

Ich empfehle dir deinen CSS Code soweit es geht auch in eine CSS Datei auszulagern. (so wird der Code "sauber")
dann kannst Du zB. so :
html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
        <link rel="stylesheet" type="text/css" href="css/default.css">  
        <link rel="stylesheet" type="text/css" href="css/config.css">  
    </head>
    <body>

    </body>
</html>
die Dateien einbinden.
... die default.css Datei enthält sie "Standard" Formatierung - diese wird mit dem Inhalt der config.css überschrieben. ('config.css' ist die Datei welche ich im obigen Beispiel manipuliere)
Tamara87
Tamara87 30.03.2013 aktualisiert um 10:30:56 Uhr
Goto Top
Vielen Dank für deine Hilfe,

klappt jetzt alles.
Dass man CSS für solche Sachen verwenden kann,
wusste ich auch noch nicht. Wieder was dazu gelernt face-wink

LG Tamara