tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
21
ZUGRIFFE
1500
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Rexo
    Rexo Rexo ist offline Mitglied Silber
    Registriert seit
    Apr 2004
    Ort
    Stuttgart
    Beiträge
    58
    Hallo zusammen,

    Problemstellung:
    In einem kleinen Formular kann man sich für 2 Optionen entscheiden, sagen wir mal
    a) ja
    b) nein
    Je nach der Auswahl (wobei beide nie gleichzeitig gewählt sein können), soll ein
    ein kleiner Info-Bereich erscheinen.

    Die beiden Info-Bereiche sind im "Grundzustand" mittels CSS auf 'display:none'. Um das jeweilige Info-Fenster einzublenden, reicht es die Eigenschaft auf 'display:block' zu ändern.


    Nun zu meiner Frage:
    Ist es mit PHP möglich den CSS-Wert eines Elements zu ändern? (Sprich, ich lese mit $_POST['wert1'] den Zustand aus und "reagiere" entsprechend..aber wie kann ich "reagieren" )
    PHP ist in einem CSS-Teil nicht möglich (erlaubt?). wie auch immer es funktioniert effektiv nicht (z.B. display: <?php echo $variabel; ?>

    Grüsse,
    Rexo

    PS: Eine Lösung mit Javascript ist möglich, möchte es aber nur sehr sehr ungern einsetzen
     

  2. #2
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Es ist möglich. Das Problem hierbei wäre jedoch, dass PHP serverseitig interpretiert wird und das Formular somit abgeschickt werden müsste.
     
    Markus Wulftange

  3. #3
    Avatar von Rexo
    Rexo Rexo ist offline Mitglied Silber
    Registriert seit
    Apr 2004
    Ort
    Stuttgart
    Beiträge
    58
    Das Formular kann abgeschickt werden. (Nur eine Markierung der entsprechenden Auswahl (focus) wäre natürlich schöner, aber nicht zwingend notwendig)

    Dann "hangelt" man sich durch die Anmelderoutine.

    Die Idee ist:
    Sind Sie bereits Kunde?
    x Ja
    x Nein

    ->> um dann entsprechend "interaktiv" zu reagieren, um so dem Nutzer nur soviel Info einzublenden, wie nötig.

    Es ist möglich. Das Problem hierbei wäre jedoch, dass PHP serverseitig interpretiert wird und das Formular somit abgeschickt werden müsste.
    Wie? Ich benötige keine "fertiges" Skript.. der Grundgedanke (kurze Erklärung) // Stichwort sollte reichen
     

  4. #4
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Also wenn das Formular nicht abgeschickt werden kann, dann kannst Du da mit PHP nichts reissen sondern wirst wohl mit JavaScript beigehen muessen.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  5. #5
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Prüfe doch einfach den übermittelten Wert:
    PHP-Code:
    if( $_POST['wert'] == 'foo' ) {
        echo 
    'Info für foo';
    }
    if( 
    $_POST['wert'] == 'bar' ) {
        echo 
    'Info für bar';

     
    Markus Wulftange

  6. #6
    Avatar von Rexo
    Rexo Rexo ist offline Mitglied Silber
    Registriert seit
    Apr 2004
    Ort
    Stuttgart
    Beiträge
    58
    Also wenn das Formular nicht abgeschickt werden kann, dann kannst Du da mit PHP nichts reissen sondern wirst wohl mit JavaScript beigehen muessen.
    Das Formular kann abgeschickt werden. (Nur eine Markierung der entsprechenden Auswahl (focus) wäre natürlich schöner, aber nicht zwingend notwendig)

    if( $_POST['wert'] == 'foo' ) {
    echo 'Info für foo';
    }
    if( $_POST['wert'] == 'bar' ) {
    echo 'Info für bar';
    }
    Ich möchte aber keine Text-Ausgabe, sondern die Änderungen eines CSS-Wertes.

    Grundzustand

    #infobox {
    display: none;
    weitere CSS-Eigenschaften...
    }

    soll zu

    #infobox {
    display: block;
    weitere CSS-Eigenschaften...
    }

    werden, wenn der Nutzer die enstprechende Option gewählt hat, das hab ich mit
    st es mit PHP möglich den CSS-Wert eines Elements zu ändern? (Sprich, ich lese mit $_POST['wert1'] den Zustand aus und "reagiere" entsprechend..aber wie kann ich "reagieren" )
    gemeint, hoff nun ist es klarer
     

  7. #7
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Huch, da muss ich irgendwie ein "nicht" dazu halluziniert haben.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  8. #8
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Dann heißt es: nein, mit PHP ist das nicht möglich. Du kannst zwar mit PHP ein Stylesheet oder Eigenschaftsdeklarationen ausgeben aber die Eigenschaften des Elements selbst kannst du mit PHP nicht verändern. Das ist nur mit JavaScript möglich.
     
    Markus Wulftange

  9. #9
    Avatar von Rexo
    Rexo Rexo ist offline Mitglied Silber
    Registriert seit
    Apr 2004
    Ort
    Stuttgart
    Beiträge
    58
    Da kommt mir grade ne Idee

    Wenn man den Wert nicht ändern kann, naja dann vergibt man direkt komplett neue Eigenschaften:

    <div id="infobox_ausgeblendet">
    Inhalt
    </div>

    und das wird zu


    <div id="infobox_eingeblendet">
    Inhalt
    </div>

    Innerhalb des body Teils kann ich direkt den php-Code einfügen

    <div id=<?php echo $infobox?>>
    Inhalt
    </div>

    Das hab ich bereits bei meiner Navigation so gelöst, man muss darauf achten, dass die Anführungszeichen ein Teil des php-"Codes" sind.

    Dann werd ich direkt den Wert beim Abschicken des Formulars abfragen und entsprechend die Variable infobox in "infobox_eingeblendet" oder "infobox_ausgeblendet" ändern, wobei die Eigenschaften im CSS seperat hinterlegt sind.

    Werd später (nach dem Grillen ) berichten, ob's reibungsfrei geklappt hat.

    Grüsse
     

  10. #10
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Wozu gibst du denn beide Infotexte aus, wenn dann sowieso nur einer dargestellt wird?
     
    Markus Wulftange

  11. #11
    Avatar von Rexo
    Rexo Rexo ist offline Mitglied Silber
    Registriert seit
    Apr 2004
    Ort
    Stuttgart
    Beiträge
    58
    Wozu gibst du denn beide Infotexte aus, wenn dann sowieso nur einer dargestellt wird?
    Wenn der User noch keine Auswahl getroffen hat, wird keine der beiden Info-Texte angezeigt und je nach Auswahl des Users (mit anschließendem Absenden des Formulars) wird einer der beiden Info-Texte angezeigt. Es werden somit nie!! beide Texte ausgegeben

    Mein Lösungsweg hat wunderbar funktioniert, eine schön dynamische Geschichte ohne Ladezeiten bzw. Seitenwechsel.

    Damit wird das Thema geschlossen (erledigt)
     

  12. #12
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Dein Eingangsbeitrag sagt aber etwas anderes:
    Die beiden Info-Bereiche sind im "Grundzustand" mittels CSS auf 'display:none'. Um das jeweilige Info-Fenster einzublenden, reicht es die Eigenschaft auf 'display:block' zu ändern.
    Beide Texte werden ausgegeben aber nur einer von beiden oder keiner soll dargestellt werden.
     
    Markus Wulftange

  13. #13
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Das, was Gumbo wohl meint, ist...wozu gibst du etwas aus, was du nicht zeigen willst?
    Wenn etwas "display:none" hat..dann wird es nicht angezeigt.... und da du auf JS verzichten willst, wird es auch nie angezeigt werden.... warum also gibst du es überhaupt aus
     

  14. #14
    Avatar von Dr Dau
    Dr Dau Dr Dau ist offline ich wisch hier durch
    Registriert seit
    Feb 2005
    Ort
    hinterm Mond gleich Links
    Beiträge
    6.160
    Blog-Einträge
    4
    Hallo!
    Zitat Zitat von Sven Mintel
    Das, was Gumbo wohl meint, ist...wozu gibst du etwas aus, was du nicht zeigen willst?
    Den Sinn verstehe ich auch nicht.
    Denn display:none verhindert ja nur die Darstellung im Browser..... im Quelltext stehen die <div>-Elemente trotzdem.
    Bei z.b. einem Frage-/Antwortspiel würde es also nicht besonders gut kommen.

    Statt dessen könnte man es z.b. so machen:
    PHP-Code:
    <?php error_reporting(E_ALL); ?>
    <html>
    <head>
    <title>DIV-Box</title>
    <style type="text/css">
         .show { display: block; }
    </style>
    </head>
    <body>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
         <input type="checkbox" name="box1"> Box 1<br>
         <input type="checkbox" name="box2"> Box 2<br>
         <input type="checkbox" name="box3"> Box 3<br>
         <input type="submit" value="DIV-Box anzeigen">
    </form>
    <?php
    if(isset($_POST['box1'])) {
    echo 
    '
    <div class="show">
         Inhalt der 1. DIV-Box.
    </div>
    '
    ;
    }
     
    if(isset(
    $_POST['box2'])) {
    echo 
    '
    <div class="show">
         Inhalt der 2. DIV-Box.
    </div>
    '
    ;
    }
     
    if(isset(
    $_POST['box3'])) {
    echo 
    '
    <div class="show">
         Inhalt der 3. DIV-Box.
    </div>
    '
    ;
    }
    ?>
    </body>
    </html>
    Gruss Dr Dau
     
    Schri-Schra-Schrödi *g*
    mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
    Dinge, die mit Tabellen besser klappen als mit CSS
    Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
    Meine Links zum Thema Linux (Last update: 29.10.2011)
    Kein Busen ist so flach wie das Niveau dieser Party!
    ----
    Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
    ----
    Ich habe 3 Kinder und kein Geld!
    Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)

  15. #15
    Avatar von Rexo
    Rexo Rexo ist offline Mitglied Silber
    Registriert seit
    Apr 2004
    Ort
    Stuttgart
    Beiträge
    58
    Das, was Gumbo wohl meint, ist...wozu gibst du etwas aus, was du nicht zeigen willst?
    Wenn etwas "display:none" hat..dann wird es nicht angezeigt.... und da du auf JS verzichten willst, wird es auch nie angezeigt werden.... warum also gibst du es überhaupt aus
    Wie bereits oben geschrieben, gibt es eine Auswahl auf die Frage: "Sind Sie bereits Kunde?" -> Ja / Nein (als Radiobutton)

    Zu Beginn sind beide Info-Blöcke auf display: none und werden somit nicht angezeigt, dass es im Quelltext steht, stört (mich) nicht weiter.
    Je nach Auswahl des Users wird ein Info-Block angezeigt(2 Stück: Info-Block auf die Antwort 'Ja' || Info-Block auf die Antwort 'Nein').


    und da du auf JS verzichten willst, wird es auch nie angezeigt werden....
    Doch je nach Auswahl des Users wird es nun eingeblendet und kann bei Bedarf (bei einer Falschauswahl des Users) erneut ausgeblendet werden. Wobei immer ein Info-Block vorhanden ist, nachdem der User einmal das Formular abgesendet hat, da dann die
    $_POST['auswahl_des_radiobuttons'] den Wert 'ja' oder 'nein' trägt und damit das entsprechende Info-Fenster eingeblendet wird.


    @Dr Dau:

    Die Lösung ist natürlich auch möglich, aber nicht besonders elegant in meinem Fall, da ich die beiden Info-Blöcke auch wieder ausblenden möchte (wenn der User eine Falschauswahl korrigieren möchte),
    z.B.

    Grundzustand (kein Radiobutton gewählt) --> kein Info-Block

    - Ja --> Info-Block1 wird eingeblendet.. nun merkt der User, dass er doch kein Kunde ist und somit keine Daten sich einzuloggen (der Login-Teil) wird auch eingeblendet

    nun betätigt er den Radiobutton Nein und schickt das Formular erneut ab.
    - Nein --> Info-Block1 wird ausgblendet und InfoBlock2 eingeblendet, desweitern wird der Login-Teil ausgeblendet und an dessen Stelle erscheint ein Formular, in dem sich der Neukunde erst registriern muss (Name, Vorname, Strasse,....etc.).

    (das ganze kann man sich natürlich auch umgekehrt vorstellen, erst Nein, dann Ja,... oder doch dann wieder Ja.. )

    Grüsse
     

Ähnliche Themen

  1. SWT Shell Eigenschaften zur Laufzeit ändern
    Von deinertsche im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 01.10.08, 13:41
  2. Mehrere CSS Eigenschaften ändern
    Von tombstone666 im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 06.11.07, 09:46
  3. Slider-Element: Eigenschaften ändern?
    Von bricktop im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 19.05.05, 15:19
  4. Aus Arrayinhalt MC-Eigenschaften ändern
    Von arrg im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 10.01.05, 19:23
  5. eigenschaften zur laufzeit ändern
    Von thecooper im Forum Visual Basic 6.0
    Antworten: 7
    Letzter Beitrag: 06.08.03, 09:59