Suchanfrage zusammen setzen!!!

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

  • Suchanfrage zusammen setzen!!!

    Wie muss ich folgende Suchanfrage zusammensetzen, damit es geht?
    PHP-Code:
    $sql "SELECT * FROM whg WHERE ";
    $sql .= "z_anzahl = betwen $zi1 $zi2 "//hier muss eine Abfrage rein die von bis sucht.
    $sql .= "AND k_miete = betwen $mi1 $mi2 "//hier muss eine Abfrage rein die von bis sucht. 
    if($balkon != "")
        {
        
    $sql .= "AND balkon='1' ";
        }
    if(
    $garten != "")
        {
        
    $sql .= "AND garten='1' ";
        }
    if(
    $ofen != "")
        {
        
    $sql .= "AND ofen='1' ";
        }
    if(
    $oel != "")
        {
        
    $sql .= "AND oel='1' ";
        }
    if(
    $gas != "")
        {
        
    $sql .= "AND gas='1' ";
        }
    if(
    $zentral != "")
        {
        
    $sql .= "AND zentral='1' ";
        }
    if(
    $aufzug != "")
        {
        
    $sql .= "AND aufzug='1' ";
        }
    if(
    $behindert != "")
        {
        
    $sql .= "AND behinderten='1' ";
        }
    if(
    $dach != "")
        {
        
    $sql .= "AND dachwhg='1' ";
        }
    $res1 mysql_query("$sql ORDER BY z_anzahl ASC") or die(mysql_error()); 
    Bin ich überhaupt auf dem Richtigen Weg, oder habe ich mich da irgendwie verzettelt?

    Fehlermeldungen gibt es noch nicht, da es noch nicht so geht und es nur erstmal im Gedenken zusammen gestellt habe.
    *winks*
    Gilbert
    ------------------------------------------------
    Hilfe für eine Vielzahl von Problemen!!!
    http://www.1st-rootserver.de/

  • #2
    wenn die AND bedingung korrekt ist, mußt du nur noch die Between bedingung richtig schreiben

    ausdruck BETWEEN min AND max
    Wenn ausdruck größer oder gleich min ist und ausdruck kleiner oder gleich max ist, gibt BETWEEN 1 zurück, andernfalls 0. Das ist äquivalent zum Ausdruck (min <= ausdruck AND ausdruck <= max), wenn alle Argumente vom selben Typ sind. Das erste Argument (ausdruck) legt fest, wie der Vergleich durchgeführt wird:
    Wenn ausdruck eine TIMESTAMP-, DATE- oder DATETIME-Spalte ist, werden MIN() und MAX() im selben Format formatiert als wären sie Konstanten.
    Wenn ausdruck ein Zeichenketten-Ausdruck ohne Berücksichtigung der Groß-/Kleinschreibung ist, wird ein Zeichenkettenvergleich ohne Berücksichtigung der Groß-/Kleinschreibung durchgeführt.
    Wenn ausdruck ein Zeichenketten-Ausdruck mit Berücksichtigung der Groß-/Kleinschreibung ist, wird ein Zeichenkettenvergleich mit Berücksichtigung der Groß-/Kleinschreibung durchgeführt.
    Wenn ausdruck ist ein Ganzzahl-Ausdruck ist, wird ein Ganzzahlvergleich durchgeführt.
    Ansonsten wird ein Fließkommazahlenvergleich durchgeführt.
    mysql> select 1 BETWEEN 2 AND 3;
    -> 0
    mysql> select 'b' BETWEEN 'a' AND 'c';
    -> 1
    mysql> select 2 BETWEEN 2 AND '3';
    -> 1
    mysql> select 2 BETWEEN 2 AND 'x-3';
    -> 0

    Kommentar


    • #3
      Kannst du mir das mal umsetzen. Stehe heut irgendwie auf dem Schlauch!!!
      *winks*
      Gilbert
      ------------------------------------------------
      Hilfe für eine Vielzahl von Problemen!!!
      http://www.1st-rootserver.de/

      Kommentar


      • #4
        PHP-Code:
        <?php
        $sql 
        "SELECT * FROM whg WHERE ";
        $sql .= "z_anzahl = betwen $zi1 $zi2 ";
        $sql .= "AND k_miete = betwen $mi1 $mi2 ";

        //müßte sowas geben:
        $sql "SELECT * FROM whg WHERE ";
        $sql .= "z_anzahl BETWEEN ($zi1 AND $zi2)";
        $sql .= "AND k_miete BETWEEN ($mi1 AND $mi2)";
        ?>
        aber ohne garantie, bin selber nich fit

        Kommentar


        • #5
          Nett Fehlermeldung!!!
          Code:
          Notice: Undefined variable: mi1 in C:\wampp2c\htdocs\wwwrootbau\immo\miete_whg2.php on line 7
          
          Notice: Undefined variable: balkon in C:\wampp2c\htdocs\wwwrootbau\immo\miete_whg2.php on line 11
          
          Notice: Undefined variable: garten in C:\wampp2c\htdocs\wwwrootbau\immo\miete_whg2.php on line 15
          
          Notice: Undefined variable: ofen in C:\wampp2c\htdocs\wwwrootbau\immo\miete_whg2.php on line 19
          
          Notice: Undefined variable: oel in C:\wampp2c\htdocs\wwwrootbau\immo\miete_whg2.php on line 23
          
          Notice: Undefined variable: gas in C:\wampp2c\htdocs\wwwrootbau\immo\miete_whg2.php on line 27
          
          Notice: Undefined variable: zentral in C:\wampp2c\htdocs\wwwrootbau\immo\miete_whg2.php on line 31
          
          Notice: Undefined variable: aufzug in C:\wampp2c\htdocs\wwwrootbau\immo\miete_whg2.php on line 35
          
          Notice: Undefined variable: behindert in C:\wampp2c\htdocs\wwwrootbau\immo\miete_whg2.php on line 39
          
          Notice: Undefined variable: dach in C:\wampp2c\htdocs\wwwrootbau\immo\miete_whg2.php on line 43
          You have an error in your SQL syntax near 'AND ) ORDER BY z_anzahl ASC' at line 1
          Hängt glaube ich mit meiner Wampp Version zusammen.
          Wenn ein Var nicht übergeben wird meldet er mir das immer. Wie kann ich das in der php.ini abschalten?
          *winks*
          Gilbert
          ------------------------------------------------
          Hilfe für eine Vielzahl von Problemen!!!
          http://www.1st-rootserver.de/

          Kommentar


          • #6
            entweder astrein überprüfen oder das error_reporting in der PHP-ini oder im skript hochsetzen (E_ALL & ~ E_NOTICE)...

            dann isses weg...

            versuchs auch mal so:
            if(isset($balkon))

            gruss

            Kommentar


            • #7
              Mit isset habe ich 95% der Fehlermeldungen weg bekommen!

              Bleibt jetzt nur noch:
              Code:
              You have an error in your SQL syntax near 'ORDER BY z_anzahl ASC' at line 1
              und hier das echo dazu:
              Code:
              SELECT * FROM whg WHERE z_anzahl BETWEEN ('3' AND '1') AND k_miete BETWEEN ('' AND '')
              Das zweite BETWEEN dürfte er garnicht bringen. Da die Werte garnicht gesetzt sind.
              Übergeben habe ich vom Formular nur die 1 und 3.

              PHP-Code:
                  $sql  "SELECT * FROM whg WHERE ";
                  
              $sql .= "z_anzahl BETWEEN ('$zi1' AND '$zi2') ";
                  if(isset(
              $mi1) && isset($mi2))
                      {
                      
              $sql .= "AND k_miete BETWEEN ('$mi1' AND '$mi2') ";
                      } 
              *winks*
              Gilbert
              ------------------------------------------------
              Hilfe für eine Vielzahl von Problemen!!!
              http://www.1st-rootserver.de/

              Kommentar


              • #8
                poste mal bitte den kompletten SQL-String (die Ausgabe mit echo() !!)!

                gruss

                Kommentar


                • #9
                  PHP-Code:
                  $sql  "SELECT * FROM whg WHERE ";
                  $sql .= "z_anzahl BETWEEN ('$zi1' AND '$zi2') ";
                  if(isset(
                  $mi1) && isset($mi2))
                      {
                      
                  $sql .= "AND k_miete BETWEEN ('$mi1' AND '$mi2') ";
                      }
                  if(isset(
                  $balkon))
                      {
                      
                  $sql .= "AND balkon='1' ";
                      }
                  if(isset(
                  $garten))
                      {
                      
                  $sql .= "AND garten='1' ";
                      }
                  if(isset(
                  $ofen))
                      {
                      
                  $sql .= "AND ofen='1' ";
                      }
                  if(isset(
                  $oel))
                      {
                      
                  $sql .= "AND oel='1' ";
                      }
                  if(isset(
                  $gas))
                      {
                      
                  $sql .= "AND gas='1' ";
                      }
                  if(isset(
                  $zentral))
                      {
                      
                  $sql .= "AND zentral='1' ";
                      }
                  if(isset(
                  $aufzug))
                      {
                      
                  $sql .= "AND aufzug='1' ";
                      }
                  if(isset(
                  $behindert))
                      {
                      
                  $sql .= "AND behinderten='1' ";
                      }
                  if(isset(
                  $dach))
                      {
                      
                  $sql .= "AND dachwhg='1' ";
                      }
                  echo 
                  "$sql<br><hr>";
                  $res1 mysql_query("$sql ORDER BY z_anzahl ASC") or die(mysql_error());
                  while(
                  $row mysql_fetch_array($res1)) 
                  *winks*
                  Gilbert
                  ------------------------------------------------
                  Hilfe für eine Vielzahl von Problemen!!!
                  http://www.1st-rootserver.de/

                  Kommentar


                  • #10
                    nein, das meinte ich nicht... du kannst doch mit echo $query; die query ausgeben lassen, wie sie abgearbeitet wird...

                    gruss

                    Kommentar


                    • #11
                      Code:
                      SELECT * FROM whg WHERE z_anzahl BETWEEN ('3' AND '1') AND k_miete BETWEEN ('' AND '') ORDER BY z_anzahl ASC
                      Oder was meinst du?
                      *winks*
                      Gilbert
                      ------------------------------------------------
                      Hilfe für eine Vielzahl von Problemen!!!
                      http://www.1st-rootserver.de/

                      Kommentar


                      • #12
                        jepp, dass meinte ich!

                        nimm mal das raus:
                        SELECT * FROM whg WHERE z_anzahl BETWEEN ('3' AND '1') AND k_miete BETWEEN ('' AND '') ORDER BY z_anzahl ASC

                        dann sollte der fehler weg sein...

                        z_anzahl BETWEEN ('3' AND '1')

                        das sind doch integer oder ?? dann kannst du die ' auch weglassen!

                        gruss

                        Kommentar


                        • #13
                          Code:
                          SELECT * FROM whg WHERE z_anzahl BETWEEN ('3' AND '1') 
                          
                          --------------------------------------------------------------------------------
                          You have an error in your SQL syntax near '' at line 1
                          Belibt dabei!!!
                          *winks*
                          Gilbert
                          ------------------------------------------------
                          Hilfe für eine Vielzahl von Problemen!!!
                          http://www.1st-rootserver.de/

                          Kommentar


                          • #14
                            Nicht ganz!
                            1
                            1.5
                            2
                            2.5
                            3
                            3.5
                            usw.

                            in der Db sind es double (5,2)
                            *winks*
                            Gilbert
                            ------------------------------------------------
                            Hilfe für eine Vielzahl von Problemen!!!
                            http://www.1st-rootserver.de/

                            Kommentar


                            • #15
                              Ich glaube ich habe den Fehler gefunden!

                              Mein Query ist leer!
                              Aber wieso?
                              PHP-Code:
                              $res1 mysql_query("$sql")or die(mysql_error()); 
                              *winks*
                              Gilbert
                              ------------------------------------------------
                              Hilfe für eine Vielzahl von Problemen!!!
                              http://www.1st-rootserver.de/

                              Kommentar

                              Lädt...
                              X