radiobutton datenbank

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

  • radiobutton datenbank

    Hallo!

    Ich zerbreche mir schon Stundenlang meinen Kopf darüber wie ich es lösen kann, dass ich die Radiobuttonabfrage (die ich in dem Fall dringend brauche, da es zwischen Lieferant und Kunden unterscheidet) hinbekomme. Dazu habe ich mir gedacht füge ich in der Tabelle einfach ein Flag ein, das den Wert des Buttons übernimmt.
    Mein Problem dabei ist aber, dass dann alle in der Tabelle befindlichen Flags mit dem einem überschrieben werden.
    Die ganzen Werte für die Tabelle werden in der selben php datei eingegeben und eingefügt.

    PHP-Code:
       <br>
        Ich m&ouml;chte:
        <label>
          <input type="radio" name="radio" id="anbieten" value="2" />
          Ress anbieten</label>
        <label>
          <input type="radio" name="radio" id="bestellen" value="1" checked />
          Ress bestellen</label><br>
        <input type="submit" name="Bestellung" id="button" value="Senden"/>
        <input type='hidden' name='speichern' value='speichern'>
      </p>
    </td>
            </tr>
        </table>
    </form>
    <?php

    include("connect.php");

      
    $user $_COOKIE["dblogin"];
      
    $ti $_POST["Titan"];
      
    $si $_POST["Silicium"];
      
    $na $_POST["Nahrung"];
      
    $he $_POST["Helium"];
      
    $wa $_POST["Wasser"];
      
    $ba $_POST["Bauxit"];
      
    $al $_POST["Aluminium"];
      
    $ur $_POST["Uran"];
      
    $pl $_POST["Plutonium"];
      
    $ws $_POST["Wasserstoff"];
      
    $cr $_POST["Credits"];
      
      
    $eintrag "INSERT INTO Ress (User, Titan, Silicium, 
    Helium, Nahrung, Wasser, Bauxit, Aluminium,
     Uran, Plutonium, Wasserstoff, Credits) 
    VALUES ('
    $user', '$ti','$si', '$he', 
    $na$wa$ba$al$ur$pl$ws$cr)";
      
    $eintragen mysql_query($eintrag);

    if(isset(
    $speichern)){
        if(
    $radio == "1")
        {
            
    mysql_query ("UPDATE Ress SET Flag='1'");
        }
        if(
    $radio == "2")
        {
            
    mysql_query ("UPDATE Ress SET Flag='2");
        }
    }  

    ?>
    </body>
    </html>

  • #2
    Mein Problem dabei ist aber, dass dann alle in der Tabelle befindlichen Flags mit dem einem überschrieben werden.
    und wieviele gibt es davon? ein WHERE würde da weiterhelfen.

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      also es gibt 1 spalte die Flag heißt. Für jeden Eintrag der über das Formular erstellt wird soll auch das Flag dementsprechend gesetzt werden.

      Die Spalte Flag soll 2 Zustände (Flag=1 oder Flag=2) besitzen.

      wenn ich es so mit where mache:

      PHP-Code:
      if(isset($speichern)){
          if(
      $radio == "1")
          {
              
      mysql_query ("UPDATE Ress SET Flag='1' where id='$id'");
          }
          if(
      $radio == "2")
          {
              
      mysql_query ("UPDATE Ress SET Flag='2 where id='$id'");
          }
      }  

      ?> 
      Bleibt das Flag 0 was standardmäßig(von der db her) eingestellt ist.
      Ich müsste erst die Daten ins Formular eingeben und absenden damit ich die id überhaupt von der Tabelle abfragen kann...

      Kann ich alles zusammen überhaupt in nur einer php file machen?

      Kommentar


      • #4
        Hallo,


        Warum überhaupt ein nachträgliches UPDATE?

        PHP-Code:
        <label>
              <input type="radio" name="auswahl" id="anbieten" value="2" />
              Ress anbieten</label>
            <label>
              <input type="radio" name="auswahl" id="bestellen" value="1" checked />
              Ress bestellen</label><br>

        <?php

        include("connect.php");
         
          
        $aw $_POST["auswahl"];
          
        $user $_COOKIE["dblogin"];
          
        $ti $_POST["Titan"];
          
        $si $_POST["Silicium"];
          
        $na $_POST["Nahrung"];
          
        $he $_POST["Helium"];
          
        $wa $_POST["Wasser"];
          
        $ba $_POST["Bauxit"];
          
        $al $_POST["Aluminium"];
          
        $ur $_POST["Uran"];
          
        $pl $_POST["Plutonium"];
          
        $ws $_POST["Wasserstoff"];
          
        $cr $_POST["Credits"];
          
          
        $eintrag "INSERT INTO Ress (User, Titan, Silicium, 
        Helium, Nahrung, Wasser, Bauxit, Aluminium,
         Uran, Plutonium, Wasserstoff, Credits, auswahl) 
        VALUES ('
        $user', '$ti','$si', '$he', 
        $na$wa$ba$al$ur$pl$ws$cr$aw)";
          
        $eintragen mysql_query($eintrag);
        ?>
        Oder irre ich da so sehr?

        Kommentar


        • #5
          du hast recht, das update nachher war total unnötig ^^

          Danke vielmals für eure Hilfe!

          Kommentar


          • #6
            Hab da eine andere Frage die(indirekt) auch mit diesem Thema zu tun hat.

            Wie kann ich die Farbe der ausgegebenen Tabellenzeile in Abhängigkeit vom Flag ändern?
            (bei Flag=1 soll die Zeile orange sein, bei Flag=2 soll sie grün sein)

            Hab da folgende Ausgabe:

            PHP-Code:
            //Abfrage machen
            $query "SELECT * FROM Ress";
            $insert mysql_query($query);
            while(
            $datensatz mysql_fetch_assoc($insert))
            {
                
            //Tabelle ausgeben

            //Bezeichnungen
            $res mysql_query("select * from Ress");
            $cols mysql_num_fields($res);

            echo 
            "<tr bgcolor=\"#CCCCCC\">\n";
            for(
            $i=0;$i $cols ;$i++){
               echo 
            "<td>".mysql_field_name($res$i)."</td>\n";
            }    
            echo 
            "</tr>\n";

            //Ausgabe der Werte
            foreach($datensatz as $key => $value)
            {
            print 
            "\t<td>".stripslashes($value)."</td>\n";

            Ich hab es bereits mit einer if-Abfrage probiert, es ist jedoch dann alles in einer Farbe geblieben.

            PHP-Code:
            //Abfrage machen
            $query "SELECT * FROM Ress";
            $insert mysql_query($query);
            while(
            $datensatz mysql_fetch_assoc($insert))
            {

            $farbe=mysql_query ("select `Flag` from lieferung");

            if(
            $farbe "1")    
            {
                echo 
            "<tr bgcolor=\"#DF8418\">\n";
            }

            echo 
            "<tr bgcolor=\"#18DF18\">\n";

            $res mysql_query("select * from Ress");
            $cols mysql_num_fields($res);

            for(
            $i=0;$i $cols ;$i++){
               echo 
            "<td>".mysql_field_name($res$i)."</td>\n";
            }    
            echo 
            "</tr>\n";

            //Werteausgabe

            echo "<tr>";

            foreach(
            $datensatz as $key => $value)
            {
            print 
            "\t<td>".stripslashes($value)."</td>\n";

            Kommentar


            • #7
              Hi,

              zuerst einmal solltest du die Spalte für Flag 2 in den else-Zweig setzen, ansonsten werden bei Flag 1 beide ausgegeben.
              Dann solltest du nicht das Attribut bgcolor="..." verwenden, sondern das Attribut class (class="flag1", class="flag2"). Das ganze formatierst du dann per CSS:
              Code:
              tr.flag1 td {
                  background-color:#df8418;
              }
              tr.flag2 td {
                  background-color:#18df18;
              }

              Kommentar


              • #8
                Danke für deine Antwort, aber ich weiß leider nicht wie ich

                sondern das Attribut class (class="flag1", class="flag2"). Das ganze formatierst du dann per CSS:

                code:tr.flag1 td {
                background-color:#df8418;
                }
                tr.flag2 td {
                background-color:#18df18;
                }
                einbinden soll. Die hintergrundänderung für Flag=2 hab ich jetzt in den else zweig gschrieben. Jedoch werden immernoch beide Zeilen mit der selben Farbe ausgegeben.(obwohl sie unterschiedliche Flags haben)

                Mein Code sieht jetzt insgesamt so aus:

                PHP-Code:
                <style type="text/css"> 
                tr.flag1 td {
                    background-color:#df8418;
                }
                tr.flag2 td {
                    background-color:#18df18;
                }
                </style>

                <?php 
                include("connect.php");
                echo 
                "Es liegen folgende Resourcenanfragen/angebote vor:<br>";
                echo 
                "Resourcenanfragen sind BLAU<br>";
                echo 
                "Resourcenangebote sind GRÜN<br>";



                //Öffnen Tag der Tabelle ausgeben
                echo "<table>";

                //Abfrage machen
                $query "SELECT * FROM Ress";
                $insert mysql_query($query);
                while(
                $datensatz mysql_fetch_assoc($insert))
                {

                $farbe=mysql_query ("select `Flag` from lieferung");

                if(
                $farbe "1")    
                {
                    echo 
                "<tr bgcolor=\"#DF8418\">\n";
                }
                else
                {
                echo 
                "<tr bgcolor=\"#18DF18\">\n";
                }
                //Bezeichnungen die über den werten stehen(Titan,Silizium usw.)
                $res mysql_query("select * from Ress");
                $cols mysql_num_fields($res);

                for(
                $i=0;$i $cols ;$i++){
                   echo 
                "<td>".mysql_field_name($res$i)."</td>\n";
                }    
                echo 
                "</tr>\n";

                //Werteausgabe, also erst eine neue Zeile machen:

                echo "<tr>";
                //Hier deine Ausgabe:
                foreach($datensatz as $key => $value)
                {
                print 
                "\t<td>".stripslashes($value)."</td>\n";
                }

                //liefer-spalte
                echo "<td><a href='bestaetigung.php?id={$datensatz['id']}&flag={$datensatz['Flag']}'>"?>
                 <img src='../img/f21.jpg'> </a></td>

                <? echo "<td><a href='delete.php?id={$datensatz['id']}'>"?>
                <img src='../img/f18.jpg'> </a></td>
                <? echo "</tr>";
                }

                //Schliessen Tag der Tabelle ausgeben
                echo "</table>";

                Kommentar


                • #9
                  PHP-Code:
                  if($farbe "1"
                  was ist denn das bitteschön? das ist ja wohl falsch. informier dich mal über vergleichsoperatoren!

                  greuß
                  peter
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10
                    Oja, glatt übersehen.
                    Aber noch etwas: die schönen CSS-Angaben kannst du dir sparen, wenn du immer noch bgcolor verwendest.

                    Kommentar


                    • #11
                      wenn du immer noch bgcolor verwendest
                      das kommt noch hinzu!

                      gruß
                      peter
                      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                      Meine Seite

                      Kommentar


                      • #12
                        oha da hab ich in der hektik glatt das zweite = vergessen.
                        nunja aber dadurch wirds auch nicht besser, jetzt ist es halt nur in der anderen farbe.

                        Danke für die Hinweise, habt ihr vll noch eine Idee wie ich es ändern muss um die Farben nicht gleich zu haben?

                        Kommentar


                        • #13
                          ja, mit einem vernünftigen debugging

                          gruß
                          peter
                          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                          Meine Seite

                          Kommentar


                          • #14
                            Suchet, so werdet ihr finden.

                            Ich denke, das haben wir dir oft genug erklärt. Lies dir am besten nochmal die obigen Posts genau durch.

                            Kommentar

                            Lädt...
                            X