$blnAND arbeitet nicht..warum ?

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

  • $blnAND arbeitet nicht..warum ?

    Hi Leute, ich hab nen kleines Problem mit meinem code, der für eine mitgliedersuche ist...... je nach suchkombination sollen sich die angaben für WHERE bilden..... aber derzeit sucht das script nur, wenn ich alle suchoptionen ausfülle.....
    ich hab mir mal nen echo vom slect ausgeben lassen, wenn ich nur das bundesland angebe.....

    SELECT user, typ, birth, state, bild, online FROM daten WHERE typ = '' AND state = 'Berlin' AND user = ''

    die leeren felder in der whereklausel sind wohl schuld... aber dafür soll ja das $blnAND helfen...... nur tut es das nicht....warum ???
    kann mir da jemand nen inweis eben ?

    wäre echt klasse

    PHP-Code:
    $strSQL   "SELECT user, typ, birth, state, bild, online FROM $table WHERE ";
    $blnAND false;
      if (isset(
    $typ))   #    abfrage zum Geschlecht
       
    {
       if(
    $blnAND$strSQL .= "AND ";
       
    $strSQL   .= "typ = '".$typ."' ";
       
    $blnAND true;
       }
       if (isset(
    $state))   #    abfrage zum Bundesland
       
    {
       if(
    $blnAND$strSQL .= "AND ";
       
    $strSQL   .= "state = '".$state."' ";
       
    $blnAND true;
       }
       if (isset(
    $usersearch))   #    abfrage zum Bundesland
       
    {
       if(
    $blnAND$strSQL .= "AND ";
       
    $strSQL   .= "user = '".$usersearch."' ";
       
    $blnAND true;
       } 
    Coder never die, they just GOSUB without RETURN

    Mein System

  • #2
    1. ausserdem prüfst du ja nur bei typ auf isset() ... wenn das ein texteingabefeld ist, ist isset() immer true, auch wenn es leer ist.

    2. du solltest für JEDES übergebene feld auf empty() prüfen und am besten
    noch mit trim() ... sonst liefert empty bei einem leerzeichen true zurück.

    3. könntest du das ganze auch mit arrays, foreach und implode eleganter lösen
    Kissolino.com

    Kommentar


    • #3
      Du musst Dir was einfallen lassen für das erste Kriterium!

      Versuch es mal so, vor deinen Bedingungen!

      $strSQL = "SELECT user, typ, birth, state, bild, online FROM $table WHERE ID>0 ";

      Kommentar


      • #4
        Original geschrieben von Wurzel
        1. ausserdem prüfst du ja nur bei typ auf isset() ... wenn das ein texteingabefeld ist, ist isset() immer true, auch wenn es leer ist.

        2. du solltest für JEDES übergebene feld auf empty() prüfen und am besten
        noch mit trim() ... sonst liefert empty bei einem leerzeichen true zurück.

        3. könntest du das ganze auch mit arrays, foreach und implode eleganter lösen

        typ ist bei mir die geschlechterangabe....

        und das mit isset is ja blöd von mir......
        und zu der empty sache....... das kann ich probieren..... aber wie wende ich das trim() an ?..... hab ich noch ned benutzt ! ;(
        Coder never die, they just GOSUB without RETURN

        Mein System

        Kommentar


        • #5
          schau mal ins manual. trim() entfernt überflüssige zeichen am anfen & ende einer zeichenkette.
          Kissolino.com

          Kommentar


          • #6
            Original geschrieben von Wurzel
            schau mal ins manual. trim() entfernt überflüssige zeichen am anfen & ende einer zeichenkette.
            ich werds mal versuchen ..... aber diese syntaxschreibweisen sind mir nicht immer ganz klar...... bin eher nen learning by doing exemplar ;-)
            Coder never die, they just GOSUB without RETURN

            Mein System

            Kommentar


            • #7
              Original geschrieben von ways
              ..... aber diese syntaxschreibweisen sind mir nicht immer ganz klar......
              dafür gibt es eben das manual... www.php.net
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Original geschrieben von Abraxax
                dafür gibt es eben das manual... www.php.net
                menno ;-)

                ich habs ja schon öfter versucht..... mit beispielen ist ja okay aber ohne wie sowas z.B für stripslashes : string stripslashes (string str);

                ist ekelhaft
                Coder never die, they just GOSUB without RETURN

                Mein System

                Kommentar


                • #9
                  Wo ist da das Problem?

                  string stripslashes (string str);

                  das erste String sagt du bekommst einen String zurück und das in der Klammer sagt du musst einen String übergeben

                  Hier bitte sollte passen bin heute besonders nett -> da letzter Arbeitstag juhu......
                  PHP-Code:
                  empty(trim($blabla)); 
                  [color=blue]MfG Payne_of_Death[/color]

                  [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                  [color=red]Merke:[/color]
                  [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                  Murphy`s Importanst LAWS
                  Jede Lösung bringt nur neue Probleme
                  Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                  In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                  Kommentar


                  • #10
                    ich habs geschafft...... und das ohne trim und empty

                    sondern mit if set und unset
                    nen spitzen kurzer codeschnipsel für dynamische suchoptionen ;-)
                    aber mir fehlt noch die art uns weise wie ich das mit dem alter mache



                    PHP-Code:
                     if($typ=="") unset ($typ);
                     if(
                    $state=="") unset ($state);
                    $strSQL   "SELECT user, typ, birth, state, bild, online FROM $table WHERE ";
                    $blnAND false;
                      if (isset(
                    $typ))   #    abfrage zum Geschlecht
                       
                    {
                       if(
                    $blnAND$strSQL .= "AND ";
                       
                    $strSQL   .= "typ = '".$typ."' ";
                       
                    $blnAND true;
                       }
                       if (isset(
                    $state))   #    abfrage zum Bundesland
                       
                    {
                       if(
                    $blnAND$strSQL .= "AND ";
                       
                    $strSQL   .= "state = '".$state."' ";
                       
                    $blnAND true;
                       } 
                    Coder never die, they just GOSUB without RETURN

                    Mein System

                    Kommentar


                    • #11
                      uuuhhhh.......


                      ich hab nen weiteres problem....mal abgesehen von der alterssuche...

                      wenn ich das script so nutze, dann werden die datensätze auf mehrere seiten verteilt.... wenn ich auf die nächste seite will, dann werden die WHERE klauseln nicht übergeben....... wie kann ich das bewerkstelligen ?

                      das script :

                      PHP-Code:
                       if($typ=="")       unset ($typ);
                      # ... und alle anderen formularfelder 

                      $strSQL   "SELECT user, typ, birth, state, bild, online FROM $table WHERE ";

                      $blnAND false;

                        if (isset(
                      $gender))   #    abfrage zum Geschlecht
                         
                      {
                         if(
                      $blnAND$strSQL .= "AND ";
                         
                      $strSQL   .= "typ = '".$gender."' ";
                         
                      $blnAND true;
                         }
                         if (isset(
                      $state))   #    abfrage zum Bundesland
                         
                      {
                         if(
                      $blnAND$strSQL .= "AND ";
                         
                      $strSQL   .= "state = '".$state."' ";
                         
                      $blnAND true;
                         }
                         
                         {
                       
                         
                      $strSQL  .= "LIMIT ".$start.",".$resultsperPage."";
                         
                        
                         } 
                      Coder never die, they just GOSUB without RETURN

                      Mein System

                      Kommentar


                      • #12
                        du musst die werte schon an den (blätter)link anhängen.
                        Kissolino.com

                        Kommentar


                        • #13
                          aha......okay...... hört sich natürlich sehr einfach an..... aber wie bring ich das in den link
                          hab schon jahre gebraucht, dieblätterfunktion zu erstellen....d


                          der bereich fü blättern :
                          PHP-Code:

                          <table width="483" border="0" cellspacing="1" cellpadding="2">
                            <tr>
                              <td width="50">
                          <? ####################     Funktionsbereich zum Vorblättern     ######################
                            echo (($start-$resultsperPage)>=0) ? "<a href=\"".$HTTP_SERVER_VARS["PHP_SELF"].'?start='.($start-$resultsperPage).'&searchaction=true&resultsperPage='.$resultsperPage."\"><img src=\"images/back.gif\" width=\"50\" height=\"20\" border=\"0\" /></a> " : "</td> ";
                          ?>
                              <td width="342" align="center"> <font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">
                          <?
                          ################## script019 start ########### Ausgabe der Seitenzahl-direktwahl ############################
                           $sql2 = ("SELECT * FROM $table  ");   # Auswahl aller Felder der Tabelle "Daten" und speichert das ergebnis in $sql2
                           $result2 = mysql_query($sql2);        # querey von sql2 wird in $result2 gespeichert
                           $anzahl = mysql_num_rows($result2);   # aus $result wird die Zeilenanzahl berechnet und in $anzahl gespeichert
                           {
                           $seiten_z1 = $anzahl/$resultsperPage; # <- 28:10 = 2,8
                           $seiten_z2 = ceil($seiten_z1);        # abrunden auf 2
                           $weiter = $nb+$resultsperPage;        # eine Seite weiter Fehlermeldung für diese Zeile
                           $zurueck = $nb-$resultsperPage;       # eine Seite zurück
                           }
                           FOR ($i=0;$i<$seiten_z2;$i++) {       # $seiten_z2 == 2
                           $g = $i*$resultsperPage;              # gibt den $limit wert für die einzelen seiten an
                           $s = $i+1;                            # gibt die aktuelle seitenzahl an

                           If ($start != $g) {                   # ist $start ungleich $g nicht makieren

                          ?>
                                <a href=membersearch.php?PHPSESSID=<? echo session_id(); ?>&language=<? echo $language; ?>&searchaction=true&start=<? echo $g?>&resultsperPage=<? echo $resultsperPage?>><? echo $s?></a>
                          <?
                           echo "<img src=\"spacer.gif\" width=\"5\" height=\"1\" />";
                           } Else {
                           echo "<font size='2' color='red'><strong>$s</strong></font>";
                           echo "<img src=\"spacer.gif\" width=\"5\" height=\"1\" ??????/>";
                           }
                           }
                           $nbsminus = ($seiten_z2-1)*$resultsperPage;
                          ################## script019 ende ########### Ausgabe der Seitenzahl-direktwahl #############################
                          ?>
                                </font></td>
                              <td width="50">
                          <? ###################    Funktionsbereich zum zurückblättern     #####################
                          echo  (($start+$resultsperPage)<$gesamtzahl) ? "<a href=\"".$HTTP_SERVER_VARS["PHP_SELF"].'?start='.($start+$resultsperPage).'&searchaction=true&resultsperPage='.$resultsperPage."\"><img src=\"images/next.gif\" width=\"50\" height=\"20\" border=\"0\" /></a>" : "</td> ";
                          ?>
                            </tr>
                          <?
                            mysql_close();                    # schließt vorerst die verbindung zur Datenabank
                          }
                          ####################################################################################
                          ?>
                          </table>
                          Coder never die, they just GOSUB without RETURN

                          Mein System

                          Kommentar


                          • #14
                            warum denkst du nicht einfach kurz nach und versuchst es selber?
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              hier machst du doch schon was:
                              PHP-Code:
                              echo  (($start+$resultsperPage)<$gesamtzahl) ? "<a href=\"".$HTTP_SERVER_VARS["PHP_SELF"].'?start='.($start+$resultsperPage).'&searchaction=true&resultsperPage='.$resultsperPage."\"><img src=\"images/next.gif\" width=\"50\" height=\"20\" border=\"0\" /></a>" "</td> "
                              einfach nach resultperPage mit "&typ=$typ&bla=$bla..." weitermachen ... dasselbe bei dem anderen link
                              Kissolino.com

                              Kommentar

                              Lädt...
                              X