variabelen in css

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Franko

Franko

03/10/2008 08:45:00
Quote Anchor link
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('
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?PHP echo $a; ?>
') no-repeat;
}

Maar kan dit ook zoiets?:

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

img {
background-image:url('
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?PHP echo $a; ?>
') no-repeat;
}
 
PHP hulp

PHP hulp

05/11/2024 07:39:40
 
Rens nvt

Rens nvt

03/10/2008 08:54:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?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...
 
Franko

Franko

03/10/2008 10:12:00
Quote Anchor link
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 **

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?PHP
header("Content-Type: text/css");
session_start();
$_SESSION['taal'] = $_GET['taal'];
require("taal/taal_" . $_SESSION['taal'] . ".php");
?>


.img {
background-image:url(
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $taal['image']; ?>
) bottom center no-repeat;
}
etc.

In taal/taal_en.php heb ik nu staan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?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?
 
Rens nvt

Rens nvt

03/10/2008 10:14:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>


css.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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']; ?>;
}


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
 
Franko

Franko

03/10/2008 10:22:00
Quote Anchor link
Dit roep ik aan op de pagina's met:
<link rel="stylesheet" href="css/css.php" type="text/css" media="screen" />
 
Franko

Franko

03/10/2008 10:41:00
Quote Anchor link
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?
 
Wesley Overdijk

wesley Overdijk

03/10/2008 10:45:00
Quote Anchor link
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.*
 
Rens nvt

Rens nvt

03/10/2008 10:51:00
Quote Anchor link
@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
 
Franko

Franko

03/10/2008 10:58:00
Quote Anchor link
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:
Gewijzigd op 01/01/1970 01:00:00 door Franko
 
Rens nvt

Rens nvt

03/10/2008 11:04:00
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
session_start();
if (empty($_SESSION['taal']))
{

  $_SESSION['taal'] = 'nl';
}

?>
 
Franko

Franko

03/10/2008 11:22:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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';
}


?>


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

Rens nvt

03/10/2008 11:24:00
Quote Anchor link
en wat is je css code?
 
Franko

Franko

03/10/2008 11:29:00
Quote Anchor link
background:url(
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?PHP echo $taal['home']; ?>
) 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.
Gewijzigd op 01/01/1970 01:00:00 door Franko
 
Rens nvt

Rens nvt

03/10/2008 11:43:00
Quote Anchor link
ja, maar als $_SESSION['taal'] in je index.php ingesteld wordt, kun je als het goed is die require weer gewoon aanzetten...
 
Franko

Franko

03/10/2008 11:50:00
Quote Anchor link
Het betekent dat hij die $_SESSION['taal']; niet ziet.
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
 
Franko

Franko

03/10/2008 14:00:00
Quote Anchor link
mmm blijkbaar doet hij het nu wel in IE, maar in FF werkt het met die image niet. Waar kan dat aan liggen?
 
Emmanuel Delay

Emmanuel Delay

03/10/2008 14:09:00
Quote Anchor link
Zeg, css kan je ook gewoon tussen <style></style> schrijven he.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$background
= '#123456';

echo '<html>
 <head>
 <style>
 .menu
 {
 background-color: '
. $background .'
 }
 </style>
...'
;
?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.