Archiv verlassen und diese Seite im Standarddesign anzeigen : Schriftgröße ändern per Variable
Coniaric 26-02-2007, 10:32 Hallo und guten Morgen,
ich habe folgendes Problem:
Ich will auf einer Seite 3 verschiedene Schriftgrößen anbieten.
Die Seite besteht aus einer (eigentlich mehreren, aber der Einfachheit
halber ist es erstmal nur eine) index-Seite, in die je nach
angeklicktem Link etwas includet wird.
Also nach folgendem Schema:
$inhalt=$_GET['dieserLink'];
if($inhalt==dieserLink)
{
include irgendwas
}
und so weiter.
Das mit der Schriftgröße wollte ich nun folgendermaßen lösen.
Einfach 3 Links die etwa so aussehen:
<a href="index.php?sgr=1">normal</a>
Dann noch eine nette IF-Abfrage, wenn sgr=1, dann steht in
$content "content1" drin und content1 ist dann eine CSS-Klasse:
<font color="#FFFFFF" class="content1">
Soweit so gut.
Jetzt sind aber natürlich meine Variablen weg, die zuvor gesendet wurden.
Klicke ich also auf "Impressum", dann ist wird ja die index.php
aufgerufen und das Impressum includet. Klicke ich jetzt auf die
Schriftgröße, dann ist $inhalt natürlich leer!
Ich kann auch nicht einfach in dem Schriftgrößenlink $inhalt nochmal
senden, weil ich ja nie weiß, wo ich mich gerade befinde und welche
Variablen noch mitgesendet werden sollen.
Dann hab ich mir überlegt, $content in der Datenbank abzulegen.
Aber woher weiß ich dann, welcher User gerade welche Schriftgröße
verwendet? Das soll nämlich gerade da funktionieren, wo man sich
nicht einloggen muß.
Ich hab da auch noch ein paar Schritte weiter gedacht, die ins Leere
liefen, damit will ich erstmal niemanden belästigen - aber ich hoffe,
man kann die Problematik verstehen, die ich habe...
Wie also löst man sowas?
Hab für meinen Fall nichts gefunden...
Ein allgemeiner Ansatz würde mir wahrscheinlich schon reichen,
wie sowas überhaupt gemacht wird.
Danke schonmal,
Grüße,
Coniaric
MelloPie 26-02-2007, 10:34 machs in der session
Coniaric 26-02-2007, 10:45 Wie?
Die Schriftgröße in die Session schreiben?
Aber ich hab doch uneingeloggt gar keine Session.
Okay, dann also doch eine Session - aber ich kann mich
auf der Seite auch einloggen. Wie geht es dann weiter?
Ich muß ja abprüfen, ob der User eingeloggt ist.
Kann ich dann sowas machen:
Uneingeloggte Seite:
$sgr=$_GET['schriftgr'];
session_register('$sgr');
eingeloggte Seite:
$sgr=$_GET['schriftgr'];
$id=irgendwas
session_register('$sgr');
session_register('$id');
?
Original geschrieben von Coniaric
Jetzt sind aber natürlich meine Variablen weg, die zuvor gesendet wurden.
Klicke ich also auf "Impressum", dann ist wird ja die index.php
aufgerufen und das Impressum includet. Klicke ich jetzt auf die
Schriftgröße, dann ist $inhalt natürlich leer!
dann erweitere doch die links für die schriftgröße um den jeweiligen inhalt.
<a href="index.php?inhalt=impressum&sgr=1">normal</a>
die schriftgröße kannst du ja dann, wie schon gesagt, in einer session speichern. ansonsten musst du dafür sorgen, dass an jedem link bzw. formular der parameter für die aktuelle schriftgröße mitübergeben wird.
Coniaric 26-02-2007, 10:58 Original geschrieben von 3DMax
dann erweitere doch die links für die schriftgröße um den jeweiligen inhalt.
<a href="index.php?inhalt=impressum&sgr=1">normal</a>
die schriftgröße kannst du ja dann, wie schon gesagt, in einer session speichern. ansonsten musst du dafür sorgen, dass an jedem link bzw. formular der parameter für die aktuelle schriftgröße mitübergeben wird.
Da liegt ja mein Problem, es wird ja oft mehr als $inhalt übergeben.
Bei der Suche zum Beispiel werden noch Variablen für die Sortierung
übergeben, an einer anderen Stelle wieder was anderes.
Ich werde also mal etwas mit der Session experimentieren... die
Lösung, in jedem Link die Schriftgröße zu übergeben scheint mir ja
dann doch etwas aufwändig! ;-)
Original geschrieben von Coniaric
Ich werde also mal etwas mit der Session experimentieren...
ja, ist das beste. aber bitte nicht mehr session_register() benutzen.
die Lösung, in jedem Link die Schriftgröße zu übergeben scheint mir ja
dann doch etwas aufwändig! ;-)
output_add_rewrite_var() könnte die sache vereinfachen
Coniaric 26-02-2007, 11:35 Original geschrieben von MelloPie
machs in der session
So, das hab ich jetzt probiert.
Nur, wenn ich jetzt auf die Schriftgröße klicke, ist $inhalt wieder leer.
Mir belibt wohl nichts anderes übrig, als die Schriftgröße in jedem Link
zu übergeben :(
In der Schriftgröße die Inhalte übergeben kann ich nicht,
weil ich nie weiß, wie der Link aussieht. Er kann ja so aussehen:
<a href="index2.php?inhalt=$inhalt&sgr=1">
<a href="index2.php?inhalt=$inhalt&suche=$suchop&sgr=1">
<a href="index2.php?inhalt=$inhalt&anfrage=$anfrage&sgr=1">
<a href="index2.php?inhalt=$inhalt&&anfrage=$anfrage&suche=$suchop&sgr=1">
und so weiter...
Bei einem Klick auf den Link für die Schriftgröße gehen mir auf jeden Fall die Inhalte flöten...
Original geschrieben von Coniaric
Bei einem Klick auf den Link für die Schriftgröße gehen mir auf jeden Fall die Inhalte flöten...
darum sollst du ja den jeweils aktuellen inhalt mitübergeben.
und wenn du auch noch alle optionalen parameter benötigst, könnte $_SERVER['QUERY_STRING'] weiterhelfen.
Wie hast du denn die Daten in die Session geschrieben? Bei mir entleeren sich jedenfalls Variablen nicht so einfach ohne Aufforderung...
Coniaric 26-02-2007, 12:05 Original geschrieben von Heini81
Wie hast du denn die Daten in die Session geschrieben? Bei mir entleeren sich jedenfalls Variablen nicht so einfach ohne Aufforderung...
Neinnein, in der Session entleert sich nix.
Es ging nur darum, daß eben $inhalt nicht mehr übergeben wird,
wenn ich auf den Schriftgrößenlink klicke. Klar kann ich den mitübergeben,
aber es können ja alle möglichen Variablen auftauchen, die dann
nicht verloren gehen.
Der Tipp von 3DMax ist genau das, was ich gesucht hab:
$_SERVER['QUERY_STRING']
Kannte ich noch nicht, sorry - aber danke! :)
Kann nur sein, daß das Problem nochmal anfängt, wenn bei der Suche noch POST-Daten übergeben werden.
Aber ich denke, das kriege ich hin.
Wenn nicht schreibe ich nochmal.
Danke derweil an alle!
Grüße,
Coniaric
PS: Wenn dieses Eingabefeld hier etwas breiter wäre,
dann müßte man nicht 100 mal die Vorschau anklicken,
um zu sehen, ob mein Text anständig umgebrochen wird...
Das ganze Gehampel könnte man sich ja sparen, wenn man Schriftgrößen in relativen Maßeinheiten angibt, und die Auswahl dem Nutzer in seinem Browser überlässt.
jahlives 26-02-2007, 12:57 @wahsaga
Was ist in dem Fall dann besser ? In em oder in % ?
Gruss
tobi
tontechniker 26-02-2007, 13:11 Wahsager meint das es besser ist alle Schriftgrößen in % oder em anzugeben und dann den User (über den Browser) wählen zu lassen ... wenn du noch eine Auswahlmöglichkeit haben willst kannst du diese auch über js / css geben - über PHP macht die Schriftgröße meiner Meinung nach keinen Sinn
Coniaric 26-02-2007, 13:29 Original geschrieben von tontechniker
Wahsager meint das es besser ist alle Schriftgrößen in % oder em anzugeben und dann den User (über den Browser) wählen zu lassen ... wenn du noch eine Auswahlmöglichkeit haben willst kannst du diese auch über js / css geben - über PHP macht die Schriftgröße meiner Meinung nach keinen Sinn
Es geht um eine Page, deren Zielgruppe Menschen über 50 sind,
die sollen einfach die Schrift größer machen können.
Über den Browser, davon gehe ich aus, können die es nicht,
weil sie nicht wissen, wie es geht oder daß das überhaupt geht.
Also kommt auf die Seite ein dicker Link "Schriftgröße ändern" oder was in der Art.
Und es geht allerdings über CSS - im PHP sind lediglich die Variablen,
welche Klasse verwendet werden soll, etwa so:
styles.css:
.content1
{
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
font-weight: bold;
color:#000000;
}
.content2
{
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
color:#000000;
}
usw.
Und dann im PHP:
// Link für Schriftgröße wird angeklickt
$content="content1" // hier natürlich das übergebene Kontent, wir nehmen einfach mal an, das sei content1 ($content=$_GET['content'];)
<font class="<?PHP echo"$content" ?>">Ein Text</font>
du kannst auch ein Javascript machen, der dein schrift vergrössern oder verkleinern kann.
http://www.evocomp.de/javascript-demos/java-script-fontsize/javascript-fontsize.html
Coniaric 26-02-2007, 13:41 Javascript möchte ich nach Möglichkeit vermeiden, aber danke für den Tipp.
Coniaric 26-02-2007, 14:49 So, bin fertig und es funktioniert.
Gelöst hab ich es folgendermaßen: (Für die, die mal was ähnliches machen wollen und auch nix finden)
1) In den Links für die Größenänderung den SERVER-Query mitgegeben,
so daß die Variablen der entsprechenden Seite erhalten bleiben.
Die Schriftgröße wird dann in der Session gespeichert.
2) Am Anfang des Hauptscriptes wird abgeprüft, ob jemand die
Größe geändert hat.
Wenn also die Variable für die Schriftgröße leer ist ($sgr), dann wird
die Größe aus der Session gelesen. Wenn nicht, handelt es sich um
neue Info, die dann in die Session geschrieben wird.
3) Ist alles leer, also die Session UND die Variable $sgr, so wird
die Schriftgröße auf einen Defaultwert gesetzt.
Meine Tests waren Einwandfrei, ich hoffe, daß das auch so bleibt! :)
:respekt: du bist ein held ;)
Coniaric 26-02-2007, 15:14 Von wegen - jetzt hab ich n Problem mit dem da:
<a href="index2.php<?PHP echo"?sgr=2$server"; ?>">Groß</a>
Beim ersten Mal funzt es ja, auch wenn ich einen anderen Link anklicke...
aber wenn ich den selben Link nochmal anklicke, wird ja vor das $server immer ein weiteres sgr=2 hinzugefügt...
Das überprüfen und rausschneiden scheint mir keine elegante Methode zu sein. Na schau mer mal...
jahlives 26-02-2007, 15:17 Was ist denn der Inhalt von $server ?
Gruss
tobi
Coniaric 26-02-2007, 15:22 Ach ja - äh - gibt es ne Funktion, alle Zeichen aus einem String bis zum
ersten Vorkommen eines bestimmten Zeichens abzuschneiden?
Also in meinem Fall alles, was bis einschließlich zum ersten & steht:
sgr=2&inhalt=impressum
zu
inhalt=impressum
?
wobei sgr=2 auch sgr=1 oder 3 heißen kann.
Werft mit Steinen, wenn die Lösung geschlampt ist, aber mir fällt nix besseres ein....
:huep:
Coniaric 26-02-2007, 15:23 Original geschrieben von jahlives
Was ist denn der Inhalt von $server ?
Gruss
tobi
Das ist der Query-String: $_SERVER['QUERY_STRING']
Also je nachdem.
jahlives 26-02-2007, 15:28 echo $_GET['inhalt'];
echo $_GET['sgr'];
Ansonsten ein substr garniert mit einem strpos...
Gruss
tobi
MelloPie 26-02-2007, 15:28 Meine Güte denk halt erstmal nach was Dein Code für Aktionen auslöst.
Das ist ja ein einziges try and error ohne Ahnung und/oder Logik.
das wird das einfachste sein:
unset($_GET['sgr']);
$server='&'.http_build_query($_GET);
Coniaric 26-02-2007, 15:36 Original geschrieben von jahlives
echo $_GET['inhalt'];
echo $_GET['sgr'];
Ansonsten ein substr garniert mit einem strpos...
Gruss
tobi
Okay, daran hatte ich schon gedacht, ich dachte nur, es gibt vielleicht
eine Funktion, die das auf einmal macht.
Das mit dem GET funzt ja nicht in meinem Fall (wie oben schonmal
beschrieben), da ich ja nie weiß, welche Variablen übergeben
werden müssen, wenn man auf die Schriftgröße klickt, die variieren ja stark.
@MelloPie: Du hast nicht alles gelesen, oder?
-->
unset($_GET['sgr']);
$server='&'.http_build_query($_GET);
Das sieht interessant aus, werde mich mal damit beschäftigen! :)
Danke einstweilen.
Coniaric 26-02-2007, 15:39 Original geschrieben von 3DMax
das wird das einfachste sein:
unset($_GET['sgr']);
$server='&'.http_build_query($_GET);
Noch ne dumme Frage:
Du hast das '&' in einfache '' gemacht, ich hatte es in " " - gibt es da
Vorgaben oder hat das eine oder andere bestimmte Vorteile?
jahlives 26-02-2007, 15:40 Das mit dem GET funzt ja nicht in meinem Fall (wie oben schonmal
beschrieben), da ich ja nie weiß, welche Variablen übergeben
werden müssen, wenn man auf die Schriftgröße klickt, die variieren ja stark.
Die Werte ja, aber der Namen der Var :rolleyes:
Coniaric 26-02-2007, 15:47 Nein, tatsächlich die Variablennamen.
Wie oben schonmal beschrieben kann der ServerQuery ja
ständig anders aussehen:
<a href="index2.php?inhalt=$inhalt&sgr=1">
<a href="index2.php?inhalt=$inhalt&suche=$suchop&sgr=1">
<a href="index2.php?inhalt=$inhalt&anfrage=$anfrage&sgr=1">
<a href="index2.php?inhalt=$inhalt&&anfrage=$anfrage&suche=$suchop&sgr=1">
@3DMax:
Wenn ich das richtig verstanden habe verbichtest Du damit aus
dem GET die Variable 'sgr' und bildest aus dem Rest den Query.
Hab das mal eingebaut, der String ist aber leer.
Muß also noch etwas debuggen, dann meld ich mich nochmal...
Original geschrieben von Coniaric
Du hast das '&' in einfache '' gemacht, ich hatte es in " " - gibt es da
Vorgaben oder hat das eine oder andere bestimmte Vorteile?
rtfm: http://de3.php.net/manual/de/language.types.string.php
Original geschrieben von Coniaric
Hab das mal eingebaut, der String ist aber leer.
Dass es die Funktion erst ab PHP 5 bzw. vorher nur in pecl_http gibt, hast du aber berücksichtigt?
error_reporting auf E_ALL?
Coniaric 26-02-2007, 15:54 Okay, funzt jetzt ganz wonderbra! Vielen Dank!
Das mit den Anführungszeichen... in diesem Fall ist es also wurscht,
ob ich doppelte oder einfache nehme, wenn ich das richtig verstanden
habe. Und das heredoc - hat das schonmal jemand benutzt? ;-)
Coniaric 26-02-2007, 15:57 Original geschrieben von wahsaga
Dass es die Funktion erst ab PHP 5 bzw. vorher nur in pecl_http gibt, hast du aber berücksichtigt?
error_reporting auf E_ALL?
error_reporting auf E_ALL hab ich natürlich IMMER an! :)
Nee, war nur ne Kleinigkeit. Sollte auch keine Frage sein,
sowas passiert mir öfter und find es meist ziemlich schnell,
weil ich nur irgendwo was vergessen hab. Ein GET, ein POST,
das Weitergeben in der function xyz($vergessen) und sowas.
Das mit PHP5 ist ein guter Tipp, werde daran denken,
wenn der Kram auf den Server kommt und plötzlich nicht mehr funzt...
|
|