php parameter in url

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • php parameter in url

    hi leute.

    eigentlich gehört die frage wohl eher in den anfänger-bereich, aber das ganze is bei mir ziemlich verschachtelt und ich weiß net wo ich da anfangen soll zu suchen.

    bin generell eher eine laie in php-sachen, d.h. ich benötige eure hilfe.
    nun zu meinem problem:

    ich möchte eine homepage basteln und habe ein schönes design mit joomla eingebunden und es funktioniert soweit auch alles. das teil an sich ist eigentlich eher komplex, einiges an ajax drin, viel effektehascherei und dementsprechend auch ein relativ komplexer code.

    nun, ich habe 2 designs die sich farblich unterscheiden, nennen wir das eine design1 und das andere design2.
    diese kann ich in der index.php über folgende zuordnung verändern:

    "design" => "design1"

    wenn hier statt design1 irgendein quatsch steht geht er in eine andere datei und holt sich dort die default werte raus. so. das ganze wird mit einigen anderen einstellungen, die man auf diese weise relativ einfach verändern kann, in einem array gespeichert (settings).

    später wird das ganze über folgenden ausdruck aufgerufen:

    <?php if($settings->get('design') != "default") { ?>

    nun war meine idee, dass ich den benutzer zwischen beiden designs wählen lasse. habe also zwei buttons erstellt die je einen link beinhalten.
    die url könnte dann so z.b. lauten:

    www.blabla.de/index.php?design=design1
    und für den andren button dann hinten ?design=design2


    ich habe jetzt schon einige stunden mit get-varianten usw rumgespielt, aber ich komme auf keinen vernünftigen nenner.

    kann mir bitte jemand mal verraten wie ich ohne große umstände das einlesen variabel gestalte und über die url verändern kann?

    DANKE für jede hilfe!!!!!!!!!!!!!!!!!!!!!!!

  • #2
    Re: php parameter in url

    Original geschrieben von n00b_pro
    ich habe jetzt schon einige stunden mit get-varianten usw rumgespielt, aber ich komme auf keinen vernünftigen nenner.
    was hast du denn versucht und wo ist dein problem?

    Kommentar


    • #3
      nunja ich weiß nicht wo ich anfangen soll und wie ich die url abfragen kann.
      im endeffekt fehlen mir die grundkenntnisse

      außerdem weiß ich nicht wie ich nur einen wert in dem array verändern kann..


      also am einfachsten wäre wohl wenn ich die abfrage oben bei der zuordnung reinmachen könnte, d.h. "design" => hole aus url

      nunja und da steh ich im endeffekt.
      mit $_get hatte ich keinen erfolg bzw. ich hab denkfehler reingemacht.

      wie würde denn der korrekte befehl heißen?

      kann ich $_get['d'] reinschreiben und d über die url vergeben?`so hatte ich es mir gedacht, hat aber nicht funkioniert.

      Kommentar


      • #4
        Original geschrieben von n00b_pro
        kann ich $_get['d'] reinschreiben und d über die url vergeben?`so hatte ich es mir gedacht, hat aber nicht funkioniert.
        sollte grundsätzlich funktionieren, mit "kleinen" änderungen.

        das array nennt sich $_GET - großgeschrieben
        und der parameter ist laut deinem eingangsposting 'design' und nicht 'd'

        Kommentar


        • #5
          lol ich glaubs net.. hab net gewusst dass das case sensitive is, LOL...

          das ging einwandfrei, mann o mann.. unglaublich sowas.

          DANKE!!! sehr schön, wer weiß wie lang ich da noch dran rumgemacht hätte.. mann o mann

          Kommentar


          • #6
            error_reporting(E_ALL); hätte dich aber auch auf den fehler aufmerksam gemacht.

            Kommentar


            • #7
              hm jetzt seh ich grad dass ich das nächste problem habe. weiß aber nicht ob ich hier richtig bin oder nicht eher in nem joomla-forum suchen sollte.

              naja ich versuchs trotzdem erstmal hier.


              also die seite mit der ich den link aufrufe erscheint unter dem entsprechenenden design, allerdings wenn ich dann ne andre seite aufrufe merkt er sich net was ich eingestellt hatte sondern springt zum standard zurück.

              wie kann ich das ganze an die nächste seite übergeben?

              € ich glaube folgendes in der ersten index.php von joomla is die richtige stelle:

              if ($option == '') {
              if ($Itemid) {
              $query = "SELECT id, link"
              . "\n FROM #__menu"
              . "\n WHERE menutype = 'mainmenu'"
              . "\n AND id = " . (int) $Itemid
              . "\n AND published = 1"
              ;
              $database->setQuery( $query );
              } else {
              $query = "SELECT id, link"
              . "\n FROM #__menu"
              . "\n WHERE menutype = 'mainmenu'"
              . "\n AND published = 1"
              . "\n ORDER BY parent, ordering"
              ;
              $database->setQuery( $query, 0, 1 );
              }
              $menu = new mosMenu( $database );
              if ($database->loadObject( $menu )) {
              $Itemid = $menu->id;
              }
              $link = $menu->link;
              if (($pos = strpos( $link, '?' )) !== false) {
              $link = substr( $link, $pos+1 ). '&Itemid='.$Itemid;
              }
              parse_str( $link, $temp );
              /** this is a patch, need to rework when globals are handled better */
              foreach ($temp as $k=>$v) {
              $GLOBALS[$k] = $v;
              $_REQUEST[$k] = $v;
              if ($k == 'option') {
              $option = $v;
              }
              }
              }


              ab dem $link habe ich das ganze mal genommen und mit design durchgespielt, funktioniert aber nicht so wirklich.
              der muss sichs ja vorher irgendwie aus der url rauslesen...

              und nochmal €
              das problem könnte auch in der index.php des designs liegen. da steht (nachdem ich design mit GET geholt hab:

              <?php if($settings->get('design') != "default") { ?>

              <link href="<?php echo $mosConfig_live_site;?>/templates/<?php echo $cur_template; ?>/css/<?php echo $settings->get('design'); ?>/<?php echo $settings->get('design'); ?>-template_css.css" rel="stylesheet" type="text/css" />


              weil ich im normalen css-ordner die dateien fürs design1 liegen hab, in dem unterordner /design2/ die css für das andre...


              meine vermutung:

              bei der zuweisung oben weißt er "design" ja was zu, und zwar entweder das was ich oben bei get über die url hole, oder eben das default-design.

              so, wenn ich jetzt zu ner andren seite wechsele dann steht ja oben nix mehr mit design in der url, d.h. er holt sich den default-wert!
              es sollte aber so sein dass er das andre behält BIS wieder ein color-parameter in der url auftaucht...
              Zuletzt geändert von n00b_pro; 23.06.2007, 11:37.

              Kommentar


              • #8
                Joomla-Forum.

                Benutzt mal die PHP-Tags des Forums!

                Das mit der Case-Sensitivität hängt von deinem Betriebssystem ab.
                UNIX / Linux -> Ja
                Windoofs -> Nein
                Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

                Kommentar


                • #9
                  hm also nach langem überlegen geh ich stark davon aus dass es kein joomla-problem ist. ich erklär euch warum:


                  prinzipiell hängt das ding ja an folgendem:
                  über folgenden schritt holt er sich den paramter über die url:
                  "design" => $_GET['design']

                  und damit spricht er die css-dateien an:

                  <?php if($settings->get('design') != "default") { ?>

                  <link href="<?php echo $mosConfig_live_site;?>/templates/<?php echo $cur_template; ?>/css/<?php echo $ytSettings->get('design'); ?>/<?php echo $ytSettings->get('design'); ?>-template_css.css" rel="stylesheet" type="text/css" />


                  d.h. wenn oben was in der url steht (und es was andres als default, also design1, ist), dann geht er in den ordner /design2/ udn sucht sich dort seine templates.
                  das ganze an sich funktioniert auch, aber wie gesagt nur soweit bis ich auch alle weiteren seiten mit dem design haben will.

                  ich habe auch jetzt keine idee über welche abfrage ich das sinnvoll machen könnte.

                  also z.b. "wenn kein parameter in url, nimm den vorher ausgewählten"

                  hat jemand ne idee wie ich das am einfachsten bzw. überhaupt umsetzen kann? dass er immer danach sucht ob was in der url drin is, udn ansonsten nen default-wert nimmt hab ich ja, aber das ganze müsste sozusagen so abgeändert werden, dass wenn nix in der url is, er auf den zuvor ausgewählten parameter geht (der dann design1 wäre, weil ich den bei der weiterleitung der page drin hab)

                  Kommentar


                  • #10
                    also z.b. "wenn kein parameter in url, nimm den vorher ausgewählten"
                    Geht ja nicht, er weiß ja den von davor nichmehr.

                    Machs so:
                    1. Wenn ein Design gesetzt wurde, speichere es vor dem Design-Switch in die Session.
                    2. Lese das aktuelle Design aus der Session aus.

                    Damit hast du immer das letzte gespeichert, und es ändert sich nur wenn es in der URL übergeben wurde.
                    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

                    Kommentar


                    • #11
                      ja dass da der fehler sitzt weiß ich, nur wie er zu beheben ist..

                      nungut, aber wie speichere ich das ding in ne session und wie hol ichs da wieder raus?

                      da hab ich mir was eingefangen


                      € wart mal, ich hab danach gegoogelt. werd das jetzt erstmal testen mit den anhaltspunkten, wenn ich dann wieder ein problem habe und der schuh drückt schreibe ich wieder was net geht

                      da meckert er rum:

                      <?php
                      session_start();

                      $_SESSION['s_design'] = 'design';
                      session_register("design");
                      ?>


                      <?php if($settings->get('s_design'){ ?>


                      hat die zuordnung von $_SESSION nen fehler? muss das hintere design mit $ geschrieben werden? klappt irgendwie alles net so... und unten will ers net einlesen über den get-befehl, in der zeile meckert er rum.
                      Zuletzt geändert von n00b_pro; 23.06.2007, 18:19.

                      Kommentar


                      • #12
                        session_register() nicht mehr verwenden!

                        Eigentlich brauchst du nur die Session zu starten (session_start() ), und dann kannst du einfach das superglobale Array $_SESSION benutzen. Das Wort "design" darin abzuspeichern ist aber vielleicht nicht so sinnvoll, eher welches design denn nun ausgewählt wurde

                        Zum Thema Sessions:http://tut.php-q.net/sessions.html
                        ich glaube

                        Kommentar


                        • #13
                          habe jetzt folgendes, aber funktioniert imme rnoch nicht:

                          <?php
                          session_start();

                          if ('design' == 'design2') {$_SESSION['s_design'] = 'design2';}
                          else {$_SESSION['s_design'] = 'design1';}
                          ?>


                          <?php if($settings->get($_SESSION['s_design']) != "design1" ){ ?>

                          <link href="<?php echo $mosConfig_live_site;?>/templates/<?php echo $cur_template; ?>/css/design2/design2-template_css.css" rel="stylesheet" type="text/css" />

                          <?php } else {?>

                          <link href="<?php echo $mosConfig_live_site;?>/templates/<?php echo $cur_template; ?>/css/template_css.css" rel="stylesheet" type="text/css" />

                          <?php } ?>


                          ich dachte es mir folgendermaßen: er soll überprüfen ob design = design2, wenn ja soll er das in die variable reinschreiben, ansonsten design1.
                          dann holt er sich das design, solange es nicht design1 ist und geht in den design2-ordner. falls es design1 ist geht er in den übergeordneten rein..

                          blöderweise kann ich nun design1 nicht mehr ansprechen...


                          € muss ich die session direkt am anfang von der index.php starten? weil momentan hab ich das auslesen aus der url ja obendrüber schon gemacht..
                          und ich hab noch ein problem mit dem momentanen. bei den buttons geht der mouse-over-effekt net mehr weg, also da stimmt auch irgendwas noch net.. oh mann, so ne kacke


                          ----------------------

                          hoffentlich liest sich das überhaupt noch einer durhc

                          <?php
                          if ('design' == 'design1') {$_SESSION['design'] = 'design1';}
                          else {$_SESSION['design'] = 'design2';}
                          ?>

                          <?php if($settings->get($_SESSION['design']) != "default" ){ ?>

                          <link href="<?php echo $mosConfig_live_site;?>/templates/<?php echo $cur_template; ?>/css/black/black-template_css.css" rel="stylesheet" type="text/css" />

                          <?php } ?>


                          so habe ich es nun, nachdem ich wieder dran rumgebastelt habe.
                          bin aber eigentlich auf dem stand wie gestern, das lässt sich zwar switchen über die buttons, aber wird nicht beibehalten für alle weiteren seiten
                          Zuletzt geändert von n00b_pro; 23.06.2007, 19:32.

                          Kommentar


                          • #14
                            PHP-Code:
                             if ('design' == 'design2'
                            Ist ungefähr sowas wie
                            PHP-Code:
                            if (== 2
                            Verwende endlich die PHP-Tags! Die gibts nicht zum Spaß!
                            Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

                            Kommentar


                            • #15
                              ja ne.. ich dacht mir das so:

                              design weise ich ja obendrüber nen wert aus der url zu, und da will ich nur abfragen ob dieser wert design2 ist...


                              wie muss ichs sonst schreiben?

                              Kommentar

                              Lädt...
                              X