Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Dropdown(sql-abfrage) mit INSERT übergeben

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Dropdown(sql-abfrage) mit INSERT übergeben

    Dropdownmenü fragt SQL-Tabelle ab und soll id in andere Tabelle eintragen. Abgefragt wird die cat_id mit vergleich des cat_name(ns) und soll in einer anderen Tabelle als art_cat_id abgespeichert werden wenn man eine entsprechende dropdownwahl getroffen hat.
    Nur er übergibt ständig 0 statt 1,2,3 - blick ich grad nich wo mein Denkfehler is.

    Dropdownmenü:
    PHP-Code:
        <select name="Kategorie" size="1"> 
            <?php   //Fragt im Dropdownmenü aus der SQL-Tabelle "catalog" die Spalte cat_name ab
            
    include "connection.php";
            
    mysql_free_result($result);
            
    $query "SELECT cat_name, cat_id FROM catalog";
            
    $result mysql_query($query);
                while (
    $row=mysql_fetch_assoc($result))
                {
                echo 
    "<option>".$row['cat_name']."</option>";
                }
            
    ?>
        </select>
    Code für INSERT:
    PHP-Code:
    <?php //Artikel speichern
    include "connection.php";
     
    $Groesse    $_POST['size'];
     
    $Farben    $_POST['wert'];
     
    $sent        $_POST['sent'];
     
    $Titel        $_POST['Titel'];
     
    $Price    $_POST['Preis'];
     
    $Text    $_POST['Artikelbeschreibung'];
     
    $Geschlecht $_POST['sex'];
     
    $Price       = (float)str_replace(',''.'$Price); //setzt Komma eingaben richtig um
     
    $Kategorie    $_POST['cat_id'];
     
     if(
    $sent == 'true'
        {
        
    $strFarben     implode(','$Farben); //schreibt mehrere Werte in ein Tabellenfeld
        
    $strGroesse implode(','$Groesse);
        
    $strGeschlecht implode(','$Geschlecht);
        
    $sql "INSERT INTO 
                    article 
                        (art_cat_id, art_name, art_size, art_color, art_price, art_text, art_sex) 
                    VALUES
                        ('"
    .$Kategorie."','".$Titel."', '".$strGroesse."', '".$strFarben."', '".$Price."', '".$Text."', '".$strGeschlecht."')";
      
        if(!
    mysql_query($sql))
            {
            die(
    mysql_error());
            }
        else
            {
            echo 
    'Produkt eingefügt'
            }
     }
     
    ?>


  • #2
    Wer übergibt wo 0 statt 1,2,3?
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Der Bösewicht hier übergibt 0 egal was ich im Dropdown auswähl:
      PHP-Code:
      $Kategorie    $_POST['cat_id']; 
      also die verglichene cat_id mit dem cat_name soll als gleicher wert in einer anderen Tabelle als art_cat_id übergeben werden.
      art_cad_id steht dabei auf (INT 11) in der table

      Kommentar


      • #4
        //schreibt mehrere Werte in ein Tabellenfeld
        Würde ich nicht machen, ein Wert = Ein Tabellenfeld ...
        Normalisierung (Datenbank) – Wikipedia

        Außerdem SQL-Injections...
        SQL-Injection – Wikipedia

        Edit: Außerdem würd ich mich entscheiden für Deutsche Variablen oder Englische, aber nicht mixxen, das stiftet nur Verwirrung.

        Edit2:
        <select name="Kategorie" size="1">
        $Kategorie = $_POST['cat_id'];
        Soll das da rein ?
        Signatur:
        PHP-Code:
        $s '0048656c6c6f20576f726c64';
        while(
        $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

        Kommentar


        • #5
          ja sorry manchmal fehlen mir die englischen worte und ich nehm einfach nen deutsches und umgekehrt. Soll ja nix produktives werden sondern nur zum verständnis von SQL wo ich ja echt supi unterstützung hier kriege. Hab die Tage jetzt verdammt viel gelernt von euch.*auf Knie geh und anbet* Nur haperts noch ebend noch bei übergaben und deren Vorraussetzungen und Bedingungen. Übung macht den Meister sag ich da und es werden wohl noch ne Menge Kästen Bier die ich hier spendieren muss ^^
          Das Dropdownfeld hab ich jetzt ersma "Kategorie" genannt und die variable $Kategorie holt sich die verglichene cat_id aus der Tabelle catalog (Bsp.=2) und trägt diese Zahl in die Spalte art_cat_id in der Tabelle article ein. Damit hat mein inseriertes Produkt ein Kategorienamen anhand einer eindeutigen id.

          Ich wunder mich grad warum keiner antwortet aber Läuft ja grad das Spiel Deutschland vs. Ghana! OK ersma Denkpause hier und schön Bierchen kippen!

          Kommentar


          • #6
            ja sorry manchmal fehlen mir die englischen worte
            dafür gibts google / leo, was auch immer du willst !! fang gleich damit aun, und gewöhns dir an !!
            PHP-Code:
            if ( $humans >= ) {
               
            war ();

            Kommentar


            • #7
              es wird ja auch nur name=Kategorie übergeben und die cat id sowieso nirgends als option value

              Kommentar


              • #8
                es wird ja auch nur name=Kategorie übergeben und die cat id sowieso nirgends als option value
                ich finds nur trotzdem nicht gerade übersichtlich, wenn man zwischendrinnen einfach so die Srache der Variablen ändert, des kann ganz schnell sehr unübersichtlich und blöd ausgehen, für gewöhnlich ist die Sprache in der man ein Programm kommentiert und nach der man die Variablennamen wählt ENGLISCH, sogar ich schaue hin und wieder bei LEO nach, wie der einen Bestimmten Begriff übersetzten würde, damit ich da korrekt unterwegs bin!!
                PHP-Code:
                if ( $humans >= ) {
                   
                war ();

                Kommentar


                • #9
                  Deutschland Sieg!

                  @Harry: meinste das so mit dem option value?Muss da noch was rein?

                  @Phil:Bin ja noch anfänger sry, wenn ich grad nen gedankenblitz hab dann hab ich keine zeit noch nachzuschlagen aber in der regel versuche ich mich engagiert daran, alles in englisch zu halten.

                  Nichts desto trotz häng ich noch grad bei:
                  PHP-Code:
                  <?php //Artikel speichern
                  include "connection.php";
                   
                  $Groesse    $_POST['size'];
                   
                  $Farben    $_POST['wert'];
                   
                  $sent        $_POST['sent'];
                   
                  $Titel     $_POST['Titel'];
                   
                  $Price        $_POST['Preis'];
                   
                  $Text        $_POST['describtion'];
                   
                  $Geschlecht$_POST['sex'];
                   
                  $Price = (float)str_replace(',''.'$Price); //setzt Komma eingaben richtig um
                   
                  $setCat_id    mysql_real_escape_string($_POST['category']);
                   
                   if(
                  $sent == 'true'
                      {
                      
                  $strFarben     implode(','$Farben); //schreibt mehrere Werte in ein Tabellenfeld
                      
                  $strGroesse implode(','$Groesse);
                      
                  $strSex implode(','$Sex);
                      
                  $sql "INSERT INTO 
                                  article 
                                      (art_cat_id, art_name, art_size, art_color, art_price, art_text, art_sex) 
                                  VALUES
                                      ('"
                  .$setCat_id."','".$Titel."', '".$strGroesse."', '".$strFarben."', '".$Price."', '".$Text."', '".$strGeschlecht."')";
                    
                      if(!
                  mysql_query($sql))
                          {
                          die(
                  mysql_error());
                          }
                      else
                          {
                          echo 
                  'Produkt eingefügt'
                          }
                   }
                   
                  ?>
                  Dropdownabfrage:
                  PHP-Code:
                      <select name="category" size="1"> 
                          <?php   //Fragt im Dropdownmenü aus der SQL-Tabelle "catalog" die Spalte cat_name ab
                          
                  include "connection.php";
                          
                  mysql_free_result($result);
                          
                  $query 'SELECT 
                                   c.cat_id, c.cat_name, a.art_cat_id
                                   FROM
                              catalog c
                                        LEFT JOIN  
                              article a ON c.cat_id = a.art_cat_id'
                  ;
                          
                  $result mysql_query($query);
                              while (
                  $row=mysql_fetch_assoc($result))
                              {
                              echo 
                  '<option value="">'.$row['cat_name'].'</option>';
                              }
                          
                  ?>
                      </select>

                  Kommentar


                  • #10
                    PHP-Code:
                    $setCat_id    mysql_real_escape_string($_POST['category']); 
                    Naja, immerhin ein Schritt in die richtige Richtung...

                    Du willst aber doch in die Tabelle einen INT-Wert - nämlich die ID der Kategorie - eintragen.
                    Fragst aber immer noch den Namen ab!

                    Du mußt Dein Formular anpassen und den Options als Value die cat_id mitgeben.
                    Dann würde ich persönlich nicht mysql_real_escape_string() verwenden, sondern in dem Fall
                    PHP-Code:
                    $setCat_id    intval($_POST['category']); 
                    da Du eh einen Integer erwartest!
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #11
                      PHP-Code:
                      echo '<option value="' $row['cat_id'] .  '">'.$row['cat_name'].'</option>'
                      Da gehört ins value noch die ID übergeben, sonst kriegste immer 0 oder was undefiniertes raus!
                      </span></span>
                      "My software never has bugs, it just develops random features."
                      "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                      Kommentar


                      • #12
                        Ja, so können wir natürlich den Lerneffekt aufs Mindestmaß reduzieren...
                        Competence-Center -> Enjoy the Informatrix
                        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                        Kommentar


                        • #13
                          Ja schon, aber der TE hat es ja nach langer Zeit selbst nicht gesehn gehabt... Naja bei nächsten mal wirds ihm/ihr sicherlich selbst auffallen.
                          "My software never has bugs, it just develops random features."
                          "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                          Kommentar


                          • #14
                            Ja schon, aber der TE hat es ja nach langer Zeit selbst nicht gesehn gehabt...
                            Umso wichtiger finde ich es, ihn dorthin zu lenken, als ihm die Lösung vorzuwerfen...
                            Egal, jetzt is' zu sapät.
                            Competence-Center -> Enjoy the Informatrix
                            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                            Kommentar


                            • #15
                              Wow hätt ich gewusst das ihr in der zwischenzeit mir schon die lösung schreibt hätt ich nich verkrampft noch stundenlang dran suchen müssen - bin jetzt erst wieder ran - hab heut morgen mit nem SQL dozenten rumphilosophiert drüber und das hier is bei rausgekommen.also thx aufjedenfall. Also ARNE DREWS muss ich rechtgeben es bringt nix den fertigen code schon gleich zu geben sondern mehr hinweise auf die betreffenden zeilen zu geben und was da so passiert, um was zu lernen
                              PHP-Code:
                              <select name="category" size="1">
                              echo 
                              '<option value="'.$row['cat_id'].'">'.$row['cat_name'].'</option>';

                              //und

                              $setCat_id    mysql_real_escape_string($_POST['category']); 
                              Also er trägt jetzt auch die korrekte ID als zahlenwert ein ohne intval. aber stimmt schon, dass es später nachvollziehbarer ist was er da tut wenn ich intval benutze und laufe auch nich gefahr das er mir was anderes ins Feld schreibt bzw dann nen Fehler ausgibt.

                              Kommentar

                              Lädt...
                              X