variabelen in css
Ik probeer al een tijdje om in mijn css variabelen werkend te krijgen. En dan eigenlijk een background-image. Die waarde van die image wil ik nu dmv een session_start(); bepalen. Kan dit eigenlijk wel? Want als ik met sessions ga werken dan ziet hij mijn css niet meer.
Dus als ik op pagina 1 aangeef dat ik een engels plaatje wil dan moet dit dus in de css komen en wil ik een nederlands plaatje dan moet dit in de css komen etc.
Het enige wat ik tegenkom is:
header("Content-type: text/css");
$a = "/images/engels.jpg";
img {
background-image:url('') no-repeat;
}
Maar kan dit ook zoiets?:
header("Content-type: text/css");
session_start();
$a = $_session['taalimage'];
img {
background-image:url('') no-repeat;
}
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
header("Content-type: text/css");
session_start();
?>
.img {
background-image: url('<?= $_SESSION['taalimage']; ?>');
}
header("Content-type: text/css");
session_start();
?>
.img {
background-image: url('<?= $_SESSION['taalimage']; ?>');
}
En dan zit het verschil hem dus in de hoofdletters van $_SESSION...
De waarden van die $taal staan in een apart bestandje nl taal_nl.php of taal_en.php.
Ik zal even de code laten zien wat ik nu heb inmiddels. Misschien is het dan wat duidelijker?:
*** CSS.PHP **
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?PHP
header("Content-Type: text/css");
session_start();
$_SESSION['taal'] = $_GET['taal'];
require("taal/taal_" . $_SESSION['taal'] . ".php");
?>
header("Content-Type: text/css");
session_start();
$_SESSION['taal'] = $_GET['taal'];
require("taal/taal_" . $_SESSION['taal'] . ".php");
?>
.img {
background-image:url() bottom center no-repeat;
}
etc.
In taal/taal_en.php heb ik nu staan:
Maar mijn css werkt dus niet meer als ik die require erbij zet. Dus ik heb geen opmaak meer op mijn pagina. Wat doe ik verkeerd?
Hoe roep je het css bestand aan???
* Ik heb even wat geprobeerd zelf, en dit werkt *
HTML File:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="css.php?color=ffeedd" />
</head>
<body>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="css.php?color=ffeedd" />
</head>
<body>
</body>
</html>
css.php
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
header('Content-type: text/css');
session_start();
if (!empty($_GET['color']))
$_SESSION['color'] = $_GET['color'];
?>
body {
background-color: #<?= $_SESSION['color']; ?>;
}
header('Content-type: text/css');
session_start();
if (!empty($_GET['color']))
$_SESSION['color'] = $_GET['color'];
?>
body {
background-color: #<?= $_SESSION['color']; ?>;
}
Als je nu de html pagina opent wordt krijgt de site achtergrondkleur #ffeedd, als je nu in dezelfde sessie de aanroep van de css aanpast naar href="css.php", blijft de achtergrondkleur #ffeedd
Deze manier van aanroepen is dus op zich goed, als nu ook het bestand dat je wilt includen bestaat (en geen fatal php errors bevat), zou het moeten werken
Gewijzigd op 01/01/1970 01:00:00 door Rens nvt
<link rel="stylesheet" href="css/css.php" type="text/css" media="screen" />
Dat voor beeldje wat je geeft werkt idd ook wel, maar als ik de variabelen uit een ander bestandje wil halen via require werkt mijn css niet meer.
Blijkbaar kun je geen require geven in dat css bestand?
en waarom zo moeilijk doen. maak je css een php, en met if-else statements kies je dan de kleur, dmv variablen *ik zelf doe dat vanuit de database maar w/e.*
@Franko: je kunt gewoon een require uitvoeren vanuit je php file, totaal geen probleem. Maar als het bestand niet gevonden wordt zal je script stoppen als je de functie require() gebruikt. Ook als het bestand dat je include om wat voor reden dan ook een error bevat, zal het script stoppen.
Probeer bovenin je css.php file anders even je error_reporting aan te zetten, en dan de css file direct te openen via je browser. je zult dan waarschijnlijk wel kunnen zien waarop het fout gaat
Ik heb error_reporting(E_ALL); erboven gezet en krijg nu dit:
Undefined index: taal
<b>Warning</b>: require(taal/taal_.php) [<a href='function.require'>function.require</a>]: failed to open stream:
Gewijzigd op 01/01/1970 01:00:00 door Franko
voor je de css file aanroept moet natuurlijk wel de taal ingesteld zijn in de sessie... werk je vanuit een index.php, waarin dan weer de code staat om je css aan te roepen?
zet daar anders eens helemaal bovenin de volgende code:
en bepaal ik de taal keuze nl:
<a href="index.php?taal=nl">NL</a>
<a href="index.php?taal=en">EN</a>
Ik heb nu dit bovenin de pagina staan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?PHP
error_reporting(E_ALL);
header("Content-Type: text/css");
session_start();
//$_SESSION['taal'] = $_GET['taal'];
//require("taal/taal_" . $_SESSION['taal'] . ".php");
if (empty($_SESSION['taal']))
{
$_SESSION['taal'] = 'nl';
}
?>
error_reporting(E_ALL);
header("Content-Type: text/css");
session_start();
//$_SESSION['taal'] = $_GET['taal'];
//require("taal/taal_" . $_SESSION['taal'] . ".php");
if (empty($_SESSION['taal']))
{
$_SESSION['taal'] = 'nl';
}
?>
Wat hij nu verderop in de css aangeeft (op de plek van de variabele) is:
Undefined variable: taal
en wat is je css code?
) bottom center no-repeat;
Dan klopt het wel, want de waarde van die variabele staat in:
taal_nl.php -> $taal["home"] = "/images/home_nl.jpg";
maar die kan hij nu niet vinden, want die require staat uit.
Doe ik nu:
if (empty($_SESSION['taal'])){
$_SESSION['taal'] = "nl";
$taal['home'] = "/images/home_nl.jpg";
}
Dan staat de image er wel.
background:url(Dan klopt het wel, want de waarde van die variabele staat in:
taal_nl.php -> $taal["home"] = "/images/home_nl.jpg";
maar die kan hij nu niet vinden, want die require staat uit.
Doe ik nu:
if (empty($_SESSION['taal'])){
$_SESSION['taal'] = "nl";
$taal['home'] = "/images/home_nl.jpg";
}
Dan staat de image er wel.
Gewijzigd op 01/01/1970 01:00:00 door Franko
ja, maar als $_SESSION['taal'] in je index.php ingesteld wordt, kun je als het goed is die require weer gewoon aanzetten...
Want ik plaats ook een echo $_SESSION['taal']; maar daar komt geen waarde uit.
Dus ergens verdwijnt de waarde blijkbaar.
Maar ik heb wel bovenin mijn pagina's die session_start(); en $_SESSION['taal'] = $_GET['taal']; staan.
Dus in index.php en css.php
Gewijzigd op 01/01/1970 01:00:00 door Franko
mmm blijkbaar doet hij het nu wel in IE, maar in FF werkt het met die image niet. Waar kan dat aan liggen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$background = '#123456';
echo '<html>
<head>
<style>
.menu
{
background-color: '. $background .'
}
</style>
...';
?>
$background = '#123456';
echo '<html>
<head>
<style>
.menu
{
background-color: '. $background .'
}
</style>
...';
?>