Hoi,
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('<?PHP echo $a; ?>') no-repeat;
}

Maar kan dit ook zoiets?:

header("Content-type: text/css");
session_start();
$a = $_session['taalimage'];

img {
background-image:url('<?PHP echo $a; ?>') no-repeat;
}

<?php
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...
ok dat had ik idd ook gezien, maar het geheel werkt nog niet helaas.
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 **

<?PHP
header("Content-Type: text/css");
session_start();
$_SESSION['taal'] = $_GET['taal'];
require("taal/taal_" . $_SESSION['taal'] . ".php");
?>

.img {
background-image:url(<? echo $taal['image']; ?>) bottom center no-repeat;
}
etc.

In taal/taal_en.php heb ik nu staan:
<?PHP
$taal = array();
$taal["image"] = "/images/home_en.jpg";
?>

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?
als je css niet meer werkt met die require, dan kan waarschijnlijk het bestand dat je wilt includen niet gevonden worden. Je css file wordt dan niet meer verder opgebouwd, resultaat: geen opmaak.

Hoe roep je het css bestand aan???


* Ik heb even wat geprobeerd zelf, en dit werkt *

HTML File:

<!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>


css.php

<?php
	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
Dit roep ik aan op de pagina's met:
<link rel="stylesheet" href="css/css.php" type="text/css" media="screen" />
Maar met die require werkt het dus niet?
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?
Bumpen mag niet eh.

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.*
@wesley: waarom moeilijk doen? misschien omdat franko die structuur gewoon zo wil hebben? Of omdat hij die variabelen in meerdere bestanden nodig heeft? enz. enz.

@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
Die bestanden heb ik inderdaad nodig in meerdere bestanden en ik wil de structuur zo hebben:)

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:
ok, dan is het probleem duidelijk ;-)

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:

<?php
session_start();
if (empty($_SESSION['taal']))
{
$_SESSION['taal'] = 'nl';
}
?>
ik werk vanuit de index.php. Daarin roep ik de css aan.
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:
<?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';
}

?>

Wat hij nu verderop in de css aangeeft (op de plek van de variabele) is:
Undefined variable: taal

Reageren