Php Variablen mit onchange Definieren

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

  • Php Variablen mit onchange Definieren

    Schoenen Guten Tag,

    mein Problem ist es, das ich möchte wenn ein select feld bei einem formular seinen wert Ändert, dieses in einer Php Variable geschrieben wird. und in dem Selectfeld der Wert der Varibale gezeigt wird. ich weiß das muss irgendwie mit onchange gehen, aber nach 2 h intensiver forum suche habe ich nichts gefunden.

    Mein code

    PHP-Code:
    <?
    include("./connect_db.php");

    $sql = "SELECT * FROM `cpu` Group by 'hersteller'"; 

       
    $result = mysql_query ($sql); 

        echo "<form action= $PHP_SELF method='POST'>";
        echo'<p><select name="hersteller" size="1" onchange"??????">';
        echo' <option value="Select" >Select</option>';
        while ($dsatz = mysql_fetch_assoc($result))
       {
        echo' <option value="'. $dsatz['hersteller'].'" >'. $dsatz['hersteller'].'</option>';
        }
           echo '</select></p>';
            
            $sql2 = "SELECT * FROM `cpu` WHERE hersteller = '$hersteller'";
              if(isset($_POST['hersteller'])){   
              echo '<td>Modelle:</td><td>';    
              echo '<select name="name">';  
              $result2 = mysql_query ($sql2);
            while ($dsatz = mysql_fetch_assoc($result2))
               {
            echo' <option value="'. $dsatz['name'].'" >'. $dsatz['name'].'</option>';
            }
               echo '</select></p>';
             
    }
      echo '<input type="submit" value="go"></form>';



    ?>

    ich wäre euch sehr dankbar ... wie immer ^^

  • #2
    ich weiß das muss irgendwie mit onchange gehen, aber nach 2 h intensiver forum suche habe ich nichts gefunden.
    Du kennst den Unterschied zwischen JavaScript und PHP? Also erstens ist JavaScript Client basierend und onchange ist ein JavaScript Event, des Weiteren ist es nicht möglich mit JavaScript auf irgendeine Art und Weise eine PHP Variable zu setzen oder ähnliches. Das geht deshalb nicht, weil PHP auf dem Server läuft und der Browser HTML zu Gesicht bekommt und keinen PHP-Quellcode.

    Tipp: Mach dich mal über Formulare und die verschiedenen Übertragungsmethoden, GET und POST, schlau. Dann würde ich mich noch an deiner Stelle über das Auslesen der gesetzten POST oder GET Variablen nach versenden des Formulares schlau machen.

    Kommentar


    • #3
      ... möchten kannste viel, aber auch hier im Forum wirst du bestimmt schon tausendmal gelesen haben, dass PHP serverseitig und läuft und nicht auf Aktionen des Clients im Browser reagiert.

      onchange kannst du natürlich über JS dein Formular nahezu beliebig beeinflussen, wenn du aber etwas in einer (PHP-) Variablen gespeichert haben willst, hilft es nur das Formular zur weiteren Verarbeitung an eine PHP-Seite auf dem Server zurückzusenden!

      Aber was willst du erreichen?

      Kommentar


      • #4
        ich moechte net unfreundlich wirken aber

        @reallife was soll der scheiß ich frag um hilfe un dich hab schon mehrer stunden gesucht da brauchst du mir bitte hier net mit so einer scheiße kommen ja hier schau dir das mal an bla bla bal. ich bin vllt kein guter programmiere oder sowas ähnliches aber wenn man nun mal ne frage hat möchte man bitte auf seine frage ne antwort oder einen lösungsvorschalg und nicht hoeren ach halts maul man du hast doch eh keine ahung ...

        @DieBu

        also ich möchte erreichen wenn einer bei Hersteller Z.b. Amd selected, dann soll automatisch das 2 select menü auftauchen und die verschiedenen cpu typen von amd anzeigen und eben ohne, das wie es bis jetzt ist auf go klickt ...
        Zuletzt geändert von ussi; 12.03.2006, 10:23.

        Kommentar


        • #5
          Original geschrieben von ussi
          ich moechte net unfreundlich wirken aber

          @reallife was soll der scheiß ich frag um hilfe un dich hab schon mehrer stunden gesucht da brauchst du mir bitte hier net mit so einer scheiße kommen ja hier schau dir das mal an bla bla bal. ich bin vllt kein guter programmiere oder sowas ähnliches aber wenn man nun mal ne frage möchte man bitte auf seine frage ne antwort oder einen lösungsvorschalg und nicht hoeren ach halts maul man du hast doch eh keine ahung ...
          Die Grundlagen nicht wissen wollen, aber am liebsten alles können. An deiner Stelle würde ich mich mal ein bisschen zügeln, solchen Leuten wie dir hilft man nicht gerne!
          OffTopic:
          Noch einer der sich mit meiner Signatur identifizieren kann, mein Glückwunsch!
          ich moechte net unfreundlich wirken aber
          Dann drück dich dementsprechend aus.

          Kommentar


          • #6
            @reallife ach weißt du man sollte nicht über andere leute urteilen wenn man sie nicht kennt und ich vermute ganz stark das du mich nicht kennst ....

            es mag vllt nicht so aussehen aber ich hab schon paar seiten gemacht, ja und schuldige das ich bisher ohne js ausgekommen bin aber nun ja was soll man zu solchen leuten sagen wie du es bist


            // hab das problem selber gelöst danke für die kreative hilfe
            Zuletzt geändert von ussi; 12.03.2006, 10:40.

            Kommentar


            • #7
              die Antwort von reallife war kein Scheiß.

              Wenn Du die unterschiedliche Funktionsweise von php und
              javascript nicht kennst, dann wird das nie was.

              Das ist nichts gegen Dich, aber so ist es nun mal.

              Also:

              mach Dir mal klar wie die Funktionsweisen sind,
              was server- und was clientseitig bedeutet und
              dann wirst Du erkennen, daß Du das mit php machen kannst.

              Dazu wirst Du aber noch ein paar wichtige Grundlagen lernen
              müssen, denn bei php kann man nicht wie bei javascript
              irgendwo nen Schnippsel organisieren und einbauen.

              Da muß man dann schon wissen, wie die Syntax ist,
              wie die Variablenübergabe funktioniert usw.

              Kommentar


              • #8
                ich weiß schon wie das geht und so bloß ich kann es nicht leiden wenn man eine frage hat das man von diesen pseudo allwissenden nicht eine einfache antwort bekommt wenn sie angeblich so viel wissen. klar weiß ich das php server seitig ist ... deswegen sind ja auch so tolle programme auf meinem pc die einen server erstellen.

                Mir geht es ums prinzip bei solchen foren das da man nicht einfach hinschreiben kann: du könntest es ja mal so probieren oder so ...

                Kommentar


                • #9
                  Original geschrieben von ussi
                  ich weiß schon wie das geht und so bloß ich kann es nicht leiden wenn man eine frage hat das man von diesen pseudo allwissenden nicht eine einfache antwort bekommt wenn sie angeblich so viel wissen. klar weiß ich das php server seitig ist ... deswegen sind ja auch so tolle programme auf meinem pc die einen server erstellen.

                  Mir geht es ums prinzip bei solchen foren das da man nicht einfach hinschreiben kann: du könntest es ja mal so probieren oder so ...
                  1. "ich weiß schon wie das geht"
                  sorry - nein, das tust Du nicht, sonst hättest Du dieses
                  Problem nicht gehabt.

                  2. "das da man nicht einfach hinschreiben kann: du könntest es ja mal so probieren oder so"
                  und genau das geht eben bei php nicht, es gibt keine "sag mir mal kurz wies geht"-Lösungen
                  (aber das weißt Du doch sicherlich, da Du dich ja so gut auskennst)

                  Kommentar


                  • #10
                    so du guter mensch es war kein richtiges php problem und die lösung war denkbar einfach
                    "onChange="this.form.submit()""

                    so aber das konnte mir keine sagen und das kotzt mich einfach an

                    Kommentar


                    • #11
                      Original geschrieben von ussi
                      @reallife ach weißt du man sollte nicht über andere leute urteilen wenn man sie nicht kennt und ich vermute ganz stark das du mich nicht kennst ....

                      es mag vllt nicht so aussehen aber ich hab schon paar seiten gemacht, ja und schuldige das ich bisher ohne js ausgekommen bin aber nun ja was soll man zu solchen leuten sagen wie du es bist


                      // hab das problem selber gelöst danke für die kreative hilfe
                      Davon gehe ich aus, dass ich dich nicht kenne. Du kennst mich schließlich auch nicht und da ich nicht so einer bin der hier nur rum flemmt, hab ich eine Lösung in JavaScript für dich. Das einzige was du an dem Beispiel ändern müsstest, ist, dass das Array in JavaScript mit hilfe von PHP erzeugt wird. Die Struktur des Arrays ist im Beispiel vorgegeben.
                      Code:
                      <script type="text/javascript">
                        var arr_producer = new Array();
                        arr_producer['AMD'] = new Array();
                        arr_producer['AMD'][0] = 'AMD Typ 1';
                        arr_producer['AMD'][1] = 'AMD Typ 2';
                        arr_producer['AMD'][2] = 'AMD Typ 3';
                      
                        arr_producer['INTEL'] = new Array();
                        arr_producer['INTEL'][0] = 'INTEL Typ 1';
                        arr_producer['INTEL'][1] = 'INTEL Typ 2';
                        arr_producer['INTEL'][2] = 'INTEL Typ 3';
                      
                        window.onload = function(e)
                        {
                          var oSelProducer = document.getElementById('sel_producer')
                          var oNewOption   = null;
                          for ( var producer in arr_producer )
                          {
                            oNewOption = new Option(producer, producer, false, false);
                            oSelProducer.options[oSelProducer.options.length] = oNewOption;
                          }
                        }
                      
                        function _fillCPUSelection(obj)
                        {
                          var sSelectedProducer = obj.value;
                          var oSelCPU = document.getElementById('sel_cpu');
                          oSelCPU.options.length = 0;
                      
                          if ( typeof(arr_producer[sSelectedProducer]) == 'object' && arr_producer[sSelectedProducer] != null )
                          {						
                            for ( var i = 0; i < arr_producer[sSelectedProducer].length; i++ )
                            {
                              var itm = arr_producer[sSelectedProducer][i];
                              var oNewOption = new Option(itm, itm, ((i == 0) ? true : false), ((i == 0) ? true : false));
                              oSelCPU.options[oSelCPU.options.length] = oNewOption;
                              delete oNewOption, itm;
                            }
                          }
                          else
                          {
                            var oNewOption = new Option('Bitte einen Hersteller wählen', '-1', true, true);
                            oSelCPU.options[oSelCPU.options.length] = oNewOption;
                            delete oNewOption, itm;
                          }
                        }
                      </script>
                      Der HTML Code dazu sieht so aus:
                      Code:
                      <form action="" method="post">
                        <table style="border-collapse:separate; border:2px; 
                             font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;">
                          <tr>
                            <td>Hersteller:</td>
                            <td>
                              <select name="hersteller" id="sel_producer" onchange="_fillCPUSelection(this);" 
                                    style="font-family:inherit; font-size:inherit;">
                                <option value="-1">Bitte wählen</option>
                              </select>
                            </td>
                          </tr>
                          <tr>
                            <td>CPU Typen:</td>
                            <td>
                              <select name="cpu" id="sel_cpu" style="font-family:inherit; font-size:inherit;">
                                <option value="-1">Bitte einen Hersteller wählen</option>
                              </select>
                            </td>
                          </tr>
                        </table>
                      </form>
                      Das Array in JS könntest du mit PHP auf folgende Art und Weise erzeugen:
                      PHP-Code:
                      $SQL "SELECT * FROM `cpu` Group by 'hersteller'";
                      $result mysql_query($SQL);
                      while ( 
                      $result && $row mysql_fetch_assoc($result) )
                        
                      $arr_producer$row['hersteller'] ] = array();

                      unset(
                      $SQL$result$row);

                      foreach ( 
                      $arr_producer as $producer => $arr )
                      {
                        
                      $SQL "SELECT * FROM `cpu` WHERE hersteller = '"$producer ."'";
                        
                      $result mysql_query($SQL);
                        while ( 
                      $result && $row mysql_fetch_assoc($result) )
                           
                      array_push($arr$row['name']);
                         
                         
                      $arr_producer$producer ] = $arr;
                         unset(
                      $SQL$result$arr);

                      Code:
                      // So jetzt das JS Array mit Hilfe des PHP Arrays erzeugen..
                      ?>
                      <script type="text/javascript">
                        var arr_producer = new Array();
                        <? foreach ( $arr_producer as $producer => $arr ) : ?>
                           arr_producer['<?=$producer?>'] = new Array();
                           <? for ( $i = 0; $i < sizeof($arr); $i++ ) : ?>
                             arr_producer['<?=$producer?>'][<?=$i?>] = '<?=$arr[$i]?>';
                           <? endfor; ?>
                        <? endforeach; ?>
                      </script>
                      EDIT:
                      Codeanpassung bzgl. horizontaler Scrollbar..
                      Zuletzt geändert von reallife; 12.03.2006, 11:30.

                      Kommentar


                      • #12
                        ich danke für die lösunge ...so sollte es sein ....

                        hab mir aber inzwischen selbst geholfen ....

                        Kommentar


                        • #13
                          Original geschrieben von ussi
                          ich danke für die lösunge ...so sollte es sein ....

                          hab mir aber inzwischen selbst geholfen ....
                          Weiss ich, ist mir auch egal. Anderen kann damit auch geholfen werden.

                          Kommentar


                          • #14
                            er hat doch schon ne Lösung gefunden - ähem

                            Kommentar


                            • #15
                              Original geschrieben von Koala
                              er hat doch schon ne Lösung gefunden - ähem
                              Bei seiner Lösung muss er aber mit sicherheit reloaden und das muss man bei meiner nicht

                              Kommentar

                              Lädt...
                              X