Dropdown -> Auswahl selektieren oder alles

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

  • Dropdown -> Auswahl selektieren oder alles

    Leider noch ein Problem... sorry

    Über ein Auswahlmenü möchte ich einen Status wählen, welcher als Variable übergeben wird. Alles noch kein Problem.

    PHP-Code:
        <td <? echo $tabcol2 ?> align=left>Abgerechnet:</td>
        <td <? echo $tabcol2 ?>><select name="abgerechnet" size="3">
    <option value="1">JA</option>
    <option value="0">NEIN</option>
    <option value="*">ALLE</option>
    </select>
    Jedoch bei der Erstellung der Tabellenabfrage kommt es wohl mit dem * nicht zurecht.

    SELECT * FROM projekte where abgerechnet=$abgerechnet

    Klar, wenn abgerechnet = '*' anzeigen soll!
    Gibt es eine Art Wildcard (% oder so...) die hier funktioniert?
    Oder muss ich die Sache wieder mal ganz anders angehen.

    Danke für Denkanstösse im voraus.
    Gruss Sven

  • #2
    Ich würde das Statement einfach so aufbauen:

    $stat="SELECT * FROM projekte".($abgerechnet=="*"?"":" where abgerechnet=$abgerechnet");
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      Hi goth,

      danke für die superschnelle antwort. Leider verstehe ich das nicht so ganz. Ein kurzer check gibt mir da leider auch nichts brauchbares aus. Soll die Variable $stat von der Auswahlseite übergeben werden oder in mein select für den Tabellenaufbau?
      Gruss Sven

      Kommentar


      • #4
        Nein ... irgendwo baust Du doch Dein Statement:

        SELECT * FROM projekte where abgerechnet=$abgerechnet

        dort baust Du das Statement zusammen wie von mir vorgeschlagen ...
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          Fehler

          SQL-Befehl :

          SELECT * FROM projekte".('1' =="*"?"":" where abgerechnet='1'") LIMIT 0, 30


          MySQL meldet:


          You have an error in your SQL syntax near '".('1' =="*"?"":" where abgerechnet='1'") LIMIT 0, 30' at line 1

          Habe mal die Variable durch eine 1 ersetzt.....????
          Gruss Sven

          Kommentar


          • #6
            PHP-Code:
            $sql "SELECT * FROM projekte".($abgerechnet!='*' " WHERE abgerechnet='$abgerechnet'" "")." LIMIT 0, 30";
            $result mysql_query($sql) or die("Error in $sql<br>\n".mysql_error()); 
            [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
            [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
            [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

            © Harald Schmidt

            Kommentar


            • #7
              Sorry, aber das geht auch nicht (wieder mit der 1 versucht):

              Fehler

              SQL-Befehl :

              SELECT * FROM projekte".('1'='*' ? " WHERE abgerechnet='1'" : "")." LIMIT 0, 30


              MySQL meldet:


              You have an error in your SQL syntax near '".('1'='*' ? " WHERE abgerechnet='1'" : "")." LIMIT 0, 30' at line 1
              Gruss Sven

              Kommentar


              • #8
                Übernimm das Beispiel doch bitte so, wie es da steht.
                Der Ausdruck in Klammern ist kein String, sondern ein php ausdruck und darf deshalb nicht in " " stehen:

                "String1".(ausdruck)."string2";
                [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
                [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
                [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

                © Harald Schmidt

                Kommentar


                • #9
                  Habs nur überflogen. Aber wäre nicht das einfachste folgendes:

                  SELECT * FROM projekte WHERE abgerechnet = '1' OR abgerechnet = '0'

                  Aber wenn du alle anzeigen willst, dann brauchst du doch gar kein WHERE.

                  Hab bestimmt was übersehen. Die Sache wäre ja sonst zu einfach. Ich gucke bei Gelegenheit noch mal rein.

                  Kommentar


                  • #10
                    Hi TobiaZ,

                    schau mal in mein 1. Posting. Ich wähle auf der 1. Seite über ein Dropdownmenü den Staus aus. (abgerechnet - JA - NEIN - ALLE)
                    Es soll später dort noch mehrere Kriterien geben. (Abteilung, Projekt ID, etc.)
                    Diese Auswahl wird dann als Variable mit auf die Seite 2 genommen und soll mir dort eine Übersicht (Tabelle) erstellen mit den vorgewählten Kriterien. Also muss ich auf Seite 2 schon mit select ... where arbeiten. Vielleicht könnte man ja auch auf Seite 2 mehrere Abfragen einbauen. Z.B. wenn die Variable abgerechnet = '*' ist, dann soll er im select ... where einfach den Parameter abgerechnet = '$abgerechnet' weglassen....???
                    Ich dachte aber, dass es eine Art Wildcard gibt, die mir diesen Weg erspart.
                    Fällt Dir noch was ein?
                    Gruss Sven

                    Kommentar


                    • #11
                      Du hast also später mehrere DropDown Menüs.?

                      Dann gehst du wie folgt vor:

                      IF *
                      dann lässt du dieses Feld in deiner abfrage raus
                      Else
                      das Feld kommt in den SQL-String.

                      So gehst du dann mit allen Abfragen vor. Am Besten mit ner Schleife.

                      Kommentar


                      • #12
                        Hier dann meine Lösung (für alle anderen):

                        PHP-Code:
                        if ($abgerechnet == '*' and $projekt == '*') {
                        $sql="SELECT * FROM projekte where datum2 between '$datum_vom' and '$datum_bis'";
                        } elseif (
                        $abgerechnet == '*') {
                        $sql="SELECT * FROM projekte where projekt='$projekt' and datum2 between '$datum_vom' and '$datum_bis'";
                        } elseif (
                        $projekt == '*') {
                        $sql="SELECT * FROM projekte where abgerechnet=$abgerechnet and datum2 between '$datum_vom' and '$datum_bis'";
                        } else {
                        $sql="SELECT * FROM projekte where projekt=$projekt and abgerechnet=$abgerechnet and datum2 between '$datum_vom' and '$datum_bis'";
                        }
                        $result mysql_query($sql) or die("Error in $sql<br>\n".mysql_error());

                        for (
                        $i=1$daten=mysql_fetch_array($result); $i++) 
                        Das geht ganz gut und lässt sich beliebig schnell erweitern.
                        Danke für die Anregungen hier im Forum!
                        Gruss Sven

                        Kommentar


                        • #13
                          ich würde sagen, wenn da noch drei Felder dazu kommen, sieht das nicht mehr so übersichtlich aus.

                          Ich hatte das zu Anfang in meinem Script auch so gedacht. Hatte aber zu viele Möglichkeiten.

                          Kommentar

                          Lädt...
                          X