problem beim variablen übergeben...

Dieses Thema im Forum "Webentwicklung" wurde erstellt von GaYlORd, 15. Januar 2006 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 15. Januar 2006
    Sers!

    Vllt. ist das eine etwas argh billige frage...aber ich bekomms einfach nciht hin! ;)

    Also, ich hab mir einen "Stylewechsel" eingebaut, sodass sich einfach nur eine andere *.css datei einbindet.

    Das funzt auch wunderbar, nur wie kann ich die variable auf allenlinks imemr noch "variabl" übergeben.
    Also, ich klicke auf style2 dann übergibt er "www.duundich.de/home.php?style=s2". D.h., variable ist "style" und der wert ist "s2". Jetzt möchte ich aber nich bei jedem weiteren link (die werden auch mit get übertragen, aso: http://www.duundich.de/home.php?category=wir )
    Bei diesem link soll aber jetzt da stehen: http://www.duundich.de/home.php?style=s2&category=wir . das geht auch wunderbar. Aber wenn ich jetzt den link so habe, "<a href="home.php?style=s2&category=wir">hans</a> wird auf diesem link immer nur der wert s2 übertragen. --> ich müsste noch nen 2ten link machen der den wert s1 (für style1) überträgt.
    Jetzt meine frage: was muss ich für einen link angeben, dass er den style automatisch lässt und einfach nur das category dran hängt?

    Hoffe das habt ihr soweit verstanden! ;)

    gruß

    gl
     

  2. Anzeige
  3. #2 15. Januar 2006
    Soweit wie ich das verstanden hab, müsste das aber mit "<a href="home.php?style=s2&category=wir">hans</a>" funktionieren!!

    Du musst nur in PHP mit $style = $_GET['style'] arbeiten, dann kommt der auch an den Wert wieder dran...

    Dass "er den Style automatisch" lässt, geht nicht, weil ja immer ein Wert für deine CSS-Datei angegeben werden muss, der ja wahrscheinlich standart-mäßig s1 (also Style1) ist...

    Ich würds so machen:

    Code:
    <?
    $style = $_GET['style];
    $category = $_GET['category'];
    
    echo "<link rel=\"stylesheet\" href=\"$style.css\" type=\"text/css\">";
    
    echo "<a href=\"home.php?style=$style&category=wir\">NAVI-LINK</a>"; //um die Kategorie zu wechseln
    
    echo "<a href=\"home.php?style=s2&category=$category\">STYLE-LINK</a>"; //um den Style zu wechseln
    
    Hab's nicht getestet, sollte aber eigentlich klappen!!

    ________________
    MrX
     
  4. #3 15. Januar 2006
    Sers!

    erstmal danke mrX!

    Hmm, joa so sollte es gehen, hab aber noch eine frage...

    echo "<link rel=\"stylesheet\" href=\"$style.css\" type=\"text/css\">";

    wo sage ich hier, wie meine .css datei heisst und wo muss das hin?
    in den head? or body?

    und...noch eine frage fürs "verständnis": warum machst du einen slash rein?

    vielen dank!

    Gruß

    nicht heterolord
     
  5. #4 15. Januar 2006
    bei dem href steht wo die css datei ist und wie die heißt!

    er macht da slashes weil das echo konstrukt sonst nicht funktioniert und die "" als "Steuerzeichen" interpretiert werden!
     
  6. #5 15. Januar 2006
    Sers!

    danke @pubmarek!

    jedoch immer noch ein paar probs!

    Ich habe ja 2 css datein...und auch s1 und s2....wie kommt das hin?

    Gruß

    gl
     
  7. #6 15. Januar 2006
    mach einfach so:

    Code:
    <?php
    if($_GET['style'] == 's2') {
    echo "<link rel=\"stylesheet\" href=\"$style2.css\" type=\"text/css\">";
    } else {
    echo "<link rel=\"stylesheet\" href=\"$style.css\" type=\"text/css\">";
    }
    
    ?>
    
    das dann in den Head einsetzen.

    Bei jeden Link musst du halt dann noch das einsetzen:

    Code:
    echo '<a href="deinlink.php?category=wir&style=' . $_GET['style'] .'"';
    
    Hoffe es funzt ;-)
     
  8. #7 15. Januar 2006
    hm...irgendwie funzt keines so wirklich!^^

    Also, hier mal wie ich das bis jetzt gemacht habe:

    Code:
     <form action="home.php?style" method="GET">
     <select name="menu1" onChange="MM_jumpMenu('parent',this,0)">
     <option value=""></option>
     <option value="home.php?style=s1">Style 1</option>
     <option value="home.php?style=s2">Style 2</option>
     </select> 
     </form>
    
    Im header:

    Code:
     <?php
     if($_GET['style'] == 's2') {
     echo "<link rel=\"stylesheet\" href=\"$style2.css\" type=\"text/css\">";
     } else {
     echo "<link rel=\"stylesheet\" href=\"$style.css\" type=\"text/css\">";
     }
     ?>
    
    vorher hatte ich im header:

    Code:
     <?php
     switch ($_GET[style]){
     default: include("style1.dh");
     break;
     case s1: include("style1.dh");
     break;
     case s2: include("style2.dh");
     break;
     }?>
    
    und in den style1.dh bzw. style2.dh stand folgendes:
    Code:
    <link href="dahansi.css" rel="stylesheet" type="text/css">
    
    bzw. style2.css

    Komm aus gleiche raus, nur ich mag die switch methode mehr!^^

    So, das problem ist nur, dass ich bei den links nicht die variable übergeben kann! hab die hier angebotenen "Versionen" getestet, aber nix hat geklappt! (meistens stand dann da: echo "" ) und das wars!^^
    Die links wie ich sie bis jetzt habe:

    Code:
    <a href="../home.php?style=s2&category=bilder"><img src="../Bilder/style2_04.gif" width="173" height="27" border="0" />
    
    nur, wie man sieht, habe ich hier den style manuell mit style=s2 übergeben --> ich bind immer ne andere navi ein und habe dann 2 navi datein...und wenn ich den wert "style=s2" variable machen kann, spar ich mir das natürlich!^^
    habe versucht mit home.php?style=$style aber das ging net...

    gruß

    gl

    Hoffe jetzt ist es verständlich! :D

    Gruß

    gl
     
  9. #8 15. Januar 2006
    <
    Code:
    <form>
     <select onchange="location = this.options[this.selectedIndex].value;">
     <option value="index.php?style=s1">style 1</option>
     <option value="index.php?style=s2">style 1</option>
     </select>
    </form>
    Code:
    <?php
    if (!file_exists($_GET['style']))
     echo "<link rel=\"stylesheet\" href=\"". $_GET['style'] .".css\" type=\"text/css\">";
    else
     echo "<link rel=\"stylesheet\" href=\"style1.css\" type=\"text/css\">";
    ?>
    
     
  10. #9 15. Januar 2006
    gute idee...nur wie mach ich das? (sry, hab derartiges noch nie gemacht!)

    wenn ich es so mache wie du beschrieben bekomme ich:

    Not Found
    The requested URL /s2 was not found on this server.



    Gruß

    gl

    €dit: bin ich blöd oder is Hackers eintrag verschwunden?!?! ?(
     
  11. #10 15. Januar 2006
    jo hab ihn gelöscht ^^ weil er teiweise schwachsinn war ^^ alles war schwachsinn bis auf die sessions


    mit sessions machst du es so

    mal ein bsp.
    <form action="test.php" method="POST">
    <input type="text" name="name">
    </form>
    <?
    $_POST['name']=$_SESSION["name"]
    ?>

    so jetzt musst du nur auf jeder seite wo es ausgegeben werden soll die session starten also

    <?php session_start (); ?>

    :)
     
  12. #11 15. Januar 2006
    so ich hab jetzt grad keine zeit dass zu coden aber vielleicht hilft dir erstmal der rein text.

    Bei der ersten Änderungen des Styles gibst du den per URL mit und überprüfst im Script nach dem GET - Array und speicherst das glechzeitig in der session.

    In jedem darauffolgenden Script fragst du mit ner IF Abfrage ab ob die Session - Style vorhanden ist und reagierst dementsprechend darauf. Muss jetzt mitm Köter raus, wenn das bis dahin keiner geshcrieben hat, versuch ich dir nomma n code zu bauen!
     
  13. #12 16. Januar 2006
    @Hacker: DAnke, nur da fehlen doch noch n paar sachen oder?
    kannst du mir das nochmal machen, nur mit meinen beispielen? Also "style" und der wert ist "s1" und "s2"? hab n bisschen rumprobiert aber nicht hinbekommen! :)

    @pubmarek: Wie lustig...sehe deinen Post nur, wenn ich auf antworten klicke!^^ normal net! :)
    Hm, das wäre nett, wenn du mir mal nen code cschreiben würdest! :)
    Weil, dann kann ich mir überlegen welche methode besser taugt...sessions oder das mit get! :)

    Vielen dank euch allen! :D 10er sind / waren schon an alle vergeben!

    Gruß

    gl
     
  14. #13 16. Januar 2006
    So zu beginn der Seite wo der Style gewechselt werden soll, vor jedem HTML - Code(!!!), kommt dein erster PHP Tag:

    Code:
    <?php
    #Wir arbeiten her mit Session, da so eine GET- Variable nicht ständig übergeben muss!
    #Die Session muss gestartet werden, bevor irgend ein HTML - Code kommt!
    #Session - Start
    session_start();
    Du hast ja schon den Vorschlag gemacht den Styleüber die Get-Varialbe zu übergeben. Das machst du mit meinem Vorschlag immer noch bei der Seite wo der Style zu wechseln ist und die überprüfung sieht dann so aus, kommt direkt unter dem anderen Code der oben steht:

    Code:
    #Überprüfung ob Style - Getvariable gesetzt wurde
    if(isset($_GET['style'])) {
    #Sessionvariablen werden gemäß GET gesetzt
    $_SESSION['style'] = $_GET['style'];
    } else {
    #Falls die IF - Bedingung nicht übeinstimmt wird s1 gesetzt!
    $_SESSION['style'] = s1;
    }
    damit hast du nun in einer Session gespeichert welchen Style du haben willst! Sessionvariablen werden je nach Servereinstellung entweder auf einem ClientCookie oder in einem Temporären Ordner des Servers gespeichert, daher musst du nun nicht immer eine GET - Variable übergeben!

    Falls du nun eine Sessionbearbeitung nicht mehr brauchst machst du darunter und beendest den ersten PHP Tag da ja jetzt schon wieder html folgt:

    Code:
    #Session wird beendet, nicht zerstört!
    session_close();
    ?>
    Die CSS datei wird im Header definiert. Da wo standardmäßig in die Zeile:

    Code:
    <?php echo "<link rel=\"stylesheet\" href=" . $_SESSION['style'] ."\".css\" type=\"text/css\">"; ?>
    Damit hast du nun je nach Wechsel dein CSS auf der Seite. Überall wo das gewechselte CSS eingesetzt werden soll, nimmst du die oben genannte Zeile für den Header!

    Also ich habs nun nach bestem Wissen geschrieben, konnte es leider nicht testen da ich keinen Webserver und so drauf hab, aber sag mal wenn welcher Fehler und so da sind oder wasdich stört!
     
  15. #14 16. Januar 2006
    meine home.php

    PHP:
    <? php
    session_start
    ();
    if(isset(
    $_GET [ 'style' ])) {
    $_SESSION [ 'style' ] =  $_GET [ 'style' ];
    } else {
    $_SESSION [ 'style' ] =  dahansi2 ;
    }
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html><head>
    <?php  echo  "<link rel=\"stylesheet\" href="  $_SESSION [ 'style' ] . "\".css\" type=\"text/css\">" ?>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <meta name="language" content="de">
    <script type="text/JavaScript">
    <!--
    function MM_jumpMenu(targ,selObj,restore){ //v3.0
      eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
      if (restore) selObj.selectedIndex=0;
    }
    //-->
    </script>
    </head>
    <body>
    <!-- Start der Variablen! -->
        <?php $stylenavi  "includes/navi.dh" ?>
        <?php $switch  "includes/styleswitch_switch.dh" ?>
        <?php $styledown  "includes/styleswitch_down.dh" ?>
        <?php $styleswitch  "includes/styleswitch.dh" ?>
    <!-- Ende der Variablen! -->
    <center>
    <!-- ############ Banner-Footer alles includet! ! ############ -->
        <?php
        
    switch ( $_GET [ 'style' ]){
        default: include(
    "includes/navi_style2.dh" );
        break;
        case 
    dahansi : include( "includes/navi.dh" );
        break;
        case 
    dahansi2 : include( "includes/navi_style2.dh" );
        break;
        }
    ?>
    <!--###################################### Start des MenüSwitches!^^ ############################### -->
        
    <!-- ###################################### Ende des Menüswitches ############################### -->
        <?php
        
    switch ( $_GET [ 'style' ]){
        default: include(
    "includes/down2.dh" );
        break;
        case 
    dahansi : include( " $styledown " );
        break;
        case 
    dahansi2 : include( "includes/down2.dh" );
        break;
        }
    ?>
    <!-- ############ Banner-Footer alles includet! ! ############ -->
    <form name="form1">
      <select name="home.php?style=$style" onChange="MM_jumpMenu('parent',this,0)">
        <option value="" selected="selected"></option>
        <option value="home.php?style=dahansi">Stlye I</option>
        <option value="home.php?style=dahansi2">Stlye II</option>
      </select>
    </form>
    </center>
    </body>
    <?php  include( "includes/copy.dh" );  ?>
    </html>
    gruß

    gl
     
  16. #15 16. Januar 2006
    So ich sitz auf der Arbeit und hab eigentlich andere Dinge zu tun. Deine home php kann ich dir nicht neu machen. Deine Home php muss schwerwiegend geändert werden, und wenn ich das mache, bringt dich das für deinen arbeitsprozess absolut nicht weiter. Ich versuch dir einfach mal n paar Tipps zu geben!


    Das Problem ist. Du inkludierst in jedes Script deine Home.php! Alles was in deiner Home.php steht, steht damit auch auf den anderen Seiten.
    Da aber die anderen Seite keine Getvariable übertragen, ist jede Verzweigung nach GET- Variable unsinn.

    An dem CSS Beispiel von uns, siehst du das es manchmal nicht nur unsinnig ist, sondern auch unerwünschtes Verhalten verursacht.

    Zu Beginn. Keine .dh Dateien inkludieren. Kommt php in einer Datei vor heißt die Datei .php kommt nur html (auch java dhtml und so) heißt die Datei .html oder .htm ... Absolut nichts anderes! Es gibt zwar noch Feinheiten aber die sind jetzt nicht von belang. Zu Beginng sollten dich nur .php und .html interessieren!

    das sollte eher in eine seperate Datei die nur inkludiert wird, wenn man es bracht!

    Code:
    <?php
    session_start();
    if(isset($_GET['style'])) {
    $_SESSION['style'] = $_GET['style'];
    } else {
    $_SESSION['style'] = dahansi2;
    }
    ?>
    das hier sollte am besten in einer Header.php:

    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html><head>
    <?php echo "<link rel=\"stylesheet\" href=" . $_SESSION['style'] ."\".css\" type=\"text/css\">"; ?>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <meta name="language" content="de">
    <meta name="keywords" content="*, Partybilder, Videos, Feier, Hansi, da, Benki, Michael, Urlaubsbilder, Sonnenuntergänge, Community">
    <meta name="description" content="*">
    <meta name="robots" content="index, follow">
    <meta name="author" content="*"><title>da Hansi</title>
    <script type="text/JavaScript">
    <!--
    function MM_jumpMenu(targ,selObj,restore){ //v3.0
     eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
     if (restore) selObj.selectedIndex=0;
    }
    //-->
    </script>
    </head>
    Hab mir deine Seite angeschaut, und wenn ich im Quelltext nachschaue ist das hier leer! Somit kann das weg!

    Code:
     
    <body>
    <!-- Start der Variablen! -->
     <?php $stylenavi = "includes/navi.dh"; ?>
     <?php $switch = "includes/styleswitch_switch.dh"; ?>
     <?php $styledown = "includes/styleswitch_down.dh"; ?>
     <?php $styleswitch = "includes/styleswitch.dh"; ?>
    <!-- Ende der Variablen! -->
    Nur auf deiner home.php wird eine GET Variable für die SESSION genutzt, alle anderen Seite, oder zumindestens deren Links übertragen keine GET Variable und trotzdem wird das Menü angezeigt. somit ist der folgende code so auch unsinnig!

    Code:
    <center>
    <!-- ############ Banner-Footer alles includet! ! ############ -->
     <?php
     switch ($_GET['style']){
     default: include("includes/navi_style2.dh");
     break;
     case dahansi: include("includes/navi.dh");
     break;
     case dahansi2: include("includes/navi_style2.dh");
     break;
     }?>
    Dieser Teil ist auch unnütz! Weg!
    Code:
    <!--###################################### Start des MenüSwitches!^^ ############################### -->
     
    <!-- ###################################### Ende des Menüswitches ############################### -->
    Boah um so mehr ich guck, umsoweniger versteh ich deine Seite!

    Ich kann dir nur empfehlen dir mal deinen Quelltext anzuschauen wenn du die Seite aufgerufen hast, und zum beispiel mal auf google.de zu gehen und dir da den Quelltext anzusehen und mal augenmark auf die html tags und so zu legen. Dein Quelltext ist so wirklich nciht vertretbar.

    Anschließend würde ich dir selfhtml.org empfehlen und irgendwelche php tutorials. Ich biete dir gerne Hilfestellung aber für die Grundlagen bist du selbst zuständig!
    Sorry!
     

  17. Videos zum Thema
Die Seite wird geladen...
Similar Threads - problem variablen übergeben
  1. Antworten:
    4
    Aufrufe:
    867
  2. [PHP] Variablenproblem

    leex , 5. September 2010 , im Forum: Webentwicklung
    Antworten:
    13
    Aufrufe:
    371
  3. Antworten:
    6
    Aufrufe:
    284
  4. Antworten:
    4
    Aufrufe:
    247
  5. Antworten:
    2
    Aufrufe:
    509