Ankündigung

Einklappen
Keine Ankündigung bisher.

Wert aus Dropdown mit switch in DB schreiben

Einklappen

Neue Werbung 2019

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

  • Wert aus Dropdown mit switch in DB schreiben

    Hallo zusammen!!

    Ich bin mir ehrlich gesagt nicht sicher, ob ich in der richtigen Kategorie bin, da ich nich weiß, wo mein Fehler liegt.
    Ich bin blutiger PHP-Anfänger und bin inzwischen seit Tagen auf der Suche nach einer Lösung meines Problems, habe aber leider nichts vergleichbares finden können und nun bekomme ich langsam ein Zeitproblem.

    Ich möchte den Wert, der über eine Auswahlliste gewählt wird in der Datenbank speichern. Meine werte werden aber einfach nicht übergeben und nun dachte ich ein geschultes Auge erkennt sicherlich den Fehler:

    Auswahlliste:

    PHP-Code:
    <form action=" " method="post" name="farben">
                                           <
    select name="Farbe" size="1">
                                           <
    option value='0' onclick="changeColor('changeElem','#000000')">Farbe</option>
                                           <
    option value='1' onclick="changeColor('changeElem','#000000')">schwarz</option>
                                           <
    option value='2' onclick="changeColor('changeElem','#4E4E4E')"style="color:#4E4E4E;">grau</option>
                                           <
    option value='3' onclick="changeColor('changeElem','#000080')"style="color:#000080;">blau</option>
                                           <
    option value='4' onclick="changeColor('changeElem','#017E04')"style="color:#017E04;">grün</option>
                                           <
    option value='5' onclick="changeColor('changeElem','#800000')"style="color:#800000;">rot</option>
                                           <
    option value='6' onclick="changeColor('changeElem','#771B00')"style="color:#771B00;">braun</option>
                                           <
    option value='7' onclick="changeColor('changeElem','#FF80C0')"style="color:#FF80C0;">rosa</option>
                                           <
    option value='8' onclick="changeColor('changeElem','#FFFF2B')"style="color:#FFFF2B;">gelb</option>
                                           <
    option value='9' onclick="changeColor('changeElem','#800080')"style="color:#800080;">violett</option>
                                           </
    select>

                                           </
    form
    PHP:

    PHP-Code:
    <?php

                                           
    include"dbconnect.php";

                                           if (isset(
    $_SESSION['Email'])){
                                           
    $user $_SESSION['Email'];
                                           
    $auswahl $_POST['Farbe'];

                                           switch (
    $auswahl){
                                           case 
    1$auswahl 'schwarz';
                                           break;
                                           case 
    2$auswahl 'grau';
                                           break;
                                           case 
    3$auswahl 'blau';
                                           break;
                                           case 
    4$auswahl 'grün';
                                           break;
                                           case 
    5$auswahl 'rot';
                                           break;
                                           case 
    6$auswahl 'braun';
                                           break;
                                           case 
    7$auswahl 'rosa';
                                           break;
                                           case 
    8$auswahl 'gelb';
                                           break;
                                           case 
    9$auswahl 'violett';
                                           break;
                                           }
                                           
    mysql_query("INSERT INTO farbauswahl VALUES ('','$user','$auswahl')");


                                           }
                                           
    ?>

    Ich hab schon alles mögliche ausprobiert und bin für jede Antwort dankbar.

    lg

  • #2
    Kannst du bitte mal ein
    PHP-Code:
    var_dump($_POST['Farbe']); 
    vor die Switch Anweisung schreiben und die Ausgabe hier Posten?

    Das scheint ja mehr ein Pseudo Formular und kein richtiges zu sein. Sicher das die JS Funktion die Daten in die $_POST['Farbe'] schreibt? Ich bezweifel das irgendwie grade stark.

    Kommentar


    • #3
      Meinst du so?
      PHP-Code:
       <?php

                                             
      include"dbconnect.php";

                                             if (isset(
      $_SESSION['Email'])){
                                             
      $user $_SESSION['Email'];
                                             
      $auswahl $_POST['Farbe'];


                                             
      var_dump($_POST['Farbe']);
                                             switch (
      $auswahl){
                                             case 
      1$auswahl 'schwarz';
                                             break;
                                             case 
      2$auswahl 'grau';
                                             break;
                                             case 
      3$auswahl 'blau';
                                             break;
                                             case 
      4$auswahl 'grün';
                                             break;
                                             case 
      5$auswahl 'rot';
                                             break;
                                             case 
      6$auswahl 'braun';
                                             break;
                                             case 
      7$auswahl 'rosa';
                                             break;
                                             case 
      8$auswahl 'gelb';
                                             break;
                                             case 
      9$auswahl 'violett';
                                             break;
                                             }
      Der wert ist NULL und bleibt es auch nach auswahl einer farbe.

      Der Javacode ist:

      PHP-Code:
      <script type='text/JavaScript'>
        function 
      changeColor(id,color){
          var 
      element document.getElementById(id);
          
      element.style.backgroundColor color;
        }
      </script> 

      Mit einer blödsinnig verlängerden If-else Anweisung hatte er mir zumindest schon mal den letzten Wert in der db gespeichert...


      Ach und das Java soll nur die Farbe einer Zelle ändern und sollte mit dem weiteren Ablauf nix zu tun haben...

      Kommentar


      • #4
        Ok das heißt im Formular steht bei action= " " im echten Code schon die Zieldatei drinn und es gibt auch einen Submit Button?

        also:
        HTML-Code:
        <input type="submit" name="Submit" value="Submit">
        
        <form action="beispiel.php" method="post" name="farben">


        denn nur vom Anklicken eines Radio Buttons erstellt er ja noch keine POST Variablen, dafür muss das Formular per Submit abgeschickt werden. Das machst du aber vermute ich nicht, denn sonst dürfte $_POST['Farbe'] nicht NULL sein.

        Kommentar


        • #5
          Es ist alles in der selben Datei und ein Wert wurde ja wie gesagt bereits schon einmal gespeichert, Was für mich bedeutet, dass es schon ohne Button funktioniert. Ich dachte der Fehler liegt möglicherweise woanders. Trotzdem danke.

          Kommentar


          • #6
            Ok ich formuliere es mal anders!

            Die Seite wird beim Nutzer angezeigt. Der Nutzer klickt ein Kästchen an und aktiviert es damit. Das passiert nur im Browser auf dem PC dessen der sich die Seite anschaut.

            Jetzt erklär mir mal wie dein Server wissen soll das sich bei dem Nutzer auf dem Computer in dessen Browser die Information geändert hat.

            Wenn dein Server also nicht über besondere und sehr ungewöhnliche telepatische Fähigkeiten verfügt und Gedanken lesen kann, dann muss der Nutzer diese Information erst an deinen Server übermitteln und das macht er nun einmal indem er das Formular absendet.

            Das kannst du mir jetzt glauben oder es lassen. Ich bin gerne bereit dir zu Helfen aber dann solltest du die Hilfe auch annehmen

            Was für mich bedeutet, dass es schon ohne Button funktioniert
            Ist im übrigen eine Fehlinterpretation denn, der Wert den du gespeichert hast kam von keinem Nutzer, denn wie bereits gesagt bewirken die Eingaben oben ohne Absenden des Formulars schlicht und ergreifend auf deinem Server gar nichts!

            Kommentar


            • #7
              Ich hatte mich an diesem Code orientiert:

              http://www.php.de/php-tipps-2005-2/2...speichern.html

              inzwischen habe ich den Button eingefügt und nun wirt als wert string(1) "-hier der jeweilige Value-Wert des dropdowns" und der name des Buttons ausgegeben.

              Aber in der Datenbank landet leider immer noch nichts.

              Kommentar


              • #8
                Ja weil du String mit Integer vergleichst.

                PHP-Code:
                $auswahl $_POST['Farbe']; 
                // ersetzen duch
                $auswahl = (int)$_POST['Farbe']; 


                // Dein Problem resultiert daraus das 

                $variable_1 "0";

                // nicht gleich

                $variable_1 0;

                // ist. 

                Kommentar


                • #9
                  Leider erscheint trotzdem nix in der Datenbank.


                  PHP-Code:
                   <?php

                                                         
                  include"dbconnect.php";
                                                         
                  var_dump($_POST['buy']);
                                                         if(isset(
                  $_SESSION['Email'])){
                                                         
                  $user $_SESSION['Email'];
                                                         
                  $auswahl = (int)$_POST['Farbe'];


                                                         echo 
                  $auswahl;
                                                         
                  mysql_query("INSERT INTO farbauswahl VALUES ('','$user','$auswahl')");


                                                         }
                                                         
                  ?>
                  selbst so taucht in der db nichts auf, mit und ohne int, obwohl im echo der wert der variable $auswahl ausgegeben wird...

                  Kommentar


                  • #10
                    PHP-Code:
                    $sql "INSERT INTO `farbauswahl` (user, farbe) VALUES ($user$auswahl)";
                    mysql_query($sql); 
                    ABER Du Verwendest MySQL_* das ist veraltet und unsicher. Du solltest dringend auf MySQLi_* oder PDO wechseln und prepared Statements verwenden. Denn sonst hast du immer das Risiko von SQL Injection. Ich rate dir von der Verwendung von mysql_query() dringend ab. Im Prinzip sollte das o.g. Query aber so funktionieren wenn du (user, farbe) duch die entsprechenden Namen der Spalten ersetzt.

                    Mit PDO sähe das dann z.B. so aus.

                    PHP-Code:

                    // Von Hier 
                    $user_db "USER_NAME";
                    $password_db "PASSWORD";
                    $server "mysql:host=localhost;dbname=DB_NAME";
                    $options  = array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',);

                    try { 
                    $pdo = new PDO($server$user_db$password_db$options); 
                    }
                    catch (
                    PDOException $e) {
                       print 
                    "Error!: " $e->getMessage() . "<br/>";
                       die();
                    }
                    // Bis hier würde man das sinnvollerweise in eine Funktion auslagern

                    $sql "INSERT INTO `farbauswahl` (user, farbe) VALUES (:user, :auswahl)";

                    $insert $pdo->prepare($sql);
                    $insert->bindParam(':user'$user);
                    $insert->bindParam(':auswahl'$auswahl);
                    $insert->execute(); 

                    Kommentar


                    • #11
                      Nein, leider immernoch nicht.

                      Kommentar


                      • #12
                        Poste doch bitte mal den gesamten Code zusammenhängend (Zugangsdaten für MYSQL einfach durch Platzhalter ersetzen), ebenfalls die Namen der Spalten der Tabelle farbauswahl, sowie deren TYP und die Info ob die ID Spalte auf AUTO_INCREMENT steht.

                        Kommentar

                        Lädt...
                        X