selecterweiterung verursacht fehler

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

  • selecterweiterung verursacht fehler

    Hi Leute,

    ich sitze noch immer an einer suchabfrage für alter von-bis.....
    jedoch hab ich arge probleme, die ich nicht in den griff bekomme.....
    das ganze funktioneirt zwar.....also testfähig..... aber sobald ich die selectanfrage um weitere optionen wie activate=1 oder ORDER BY DESC oder between nutze, ist die ausgabe fehlerhaft...... meine DB hat extra nur 5 einträge, damit auch alle überschaubar ist, und dennoch kann ich den fehler nicht entdecken.....

    hab mal nen zip mit scriptdatei und sql datei rangehängt und die fehlerhaften optionsmöglichkeiten mit einkommentiert.....
    , vielleicht hat ja jemand ausreichend nerven, um sich das mal kurz anzuschauen ?..das script ist es kurz und besteht nur aus alterberechnung und selectanfrage

    für hilfe wäre ich wirklich dankbar !!!!

    Olli
    Angehängte Dateien
    Coder never die, they just GOSUB without RETURN

    Mein System

  • #2
    Du hast ein SQL Problem. Also poste es auch da! *verschieb*

    Kommentar


    • #3
      Original geschrieben von TobiaZ
      Du hast ein SQL Problem. Also poste es auch da! *verschieb*
      in dem fall, wußte ich nicht, woran es überhaupt liegt, dass es nicht funktioniert........
      Coder never die, they just GOSUB without RETURN

      Mein System

      Kommentar


      • #4
        lässt sich ja leicht überprüfen.

        Kommentar


        • #5
          nun ja...... ich kann den fehler leider nicht ausmachen, ob es an meinem sript liegt, oder an der sql-anfrage alein....

          wenn ich anfrage nur mit birth < x stelle , dann gibt er auch alles richtig aus...aber sobald die selectanfrage um ein AND erweitert wird spinnt die ausgabe rum....aber wieso...... activate ist z.b bei allen user 1 ( für aktiv )
          außer bei einem (=0 für inaktiv) aber das script verschluckt dennoch datensätze mit activate=1 ..... das ergibt doch keinen sinn :-(
          Coder never die, they just GOSUB without RETURN

          Mein System

          Kommentar


          • #6
            nun ja...... ich kann den fehler leider nicht ausmachen, ob es an meinem sript liegt, oder an der sql-anfrage alein....
            hmm, hatten wir das nicht letztes jahr schon?

            dein query ist falsch! laß dir doch mal im klartext ausgeben, was du da generierst, ...
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              Original geschrieben von derHund
              hmm, hatten wir das nicht letztes jahr schon?

              dein query ist falsch! laß dir doch mal im klartext ausgeben, was du da generierst, ...

              mag sein, ich sitzt auch schon wochen an dem problem.....echt zum heulen..
              denn ich brauch diesen vorgang auch, um den onine bzw. onlinestatus von usern zu ermitteln........

              aber erst mal für eine usersuche alter von xx bis xx


              aber wie lass ich den klartext ausgeben wenn die sqlanfrage in klammern ist...... bei der zweiten version mache ich einfach echo $sql..aber bei der ersten version geht das ja ned..... da gibt er ja die resourceId wieder

              $sql = mysql_query(" ");
              $sql = "";
              Coder never die, they just GOSUB without RETURN

              Mein System

              Kommentar


              • #8
                ganz ruhig jens,

                lager die query doch aus in einen string und gibt den aus .... afaik hatten wir das auch schon
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  wieso jens ? bin Olli :-)

                  und das mit dem zerlegen hatte ich wirklich schon mal ! :-)
                  da gings um das übergeben von where klauseln !! :-)

                  die sql anfrage scheint allerdings korrekt.... an ORDER BY FIELD DESC kann nix fasch sein, und dennoch verschluckt die ausgabe ein passendes ergebnis......

                  und das scrit ist ja nun wirklich klein....... ich wäre ja auch mit einer komplett anderen lösung zufrieden, aber auch die scheint nicht in sicht......
                  hab beim suchen im forum nen vielversprechnenden thread gefunden, aber der ist zu lückenhaft und zu unübersichtlich für nen einsteiger :-(

                  das einzig gute bisher ist das erfahrung sammeln... mittlerweile hab ich schon geburtsadten im form von , date, int, mediumtext uswerfolgreich umrechnen lassen
                  Coder never die, they just GOSUB without RETURN

                  Mein System

                  Kommentar


                  • #10
                    wieso jens ? bin Olli :-)
                    na, rate mal, wer sich hier selbst beruhigt hat
                    die sql anfrage scheint allerdings korrekt.... an ORDER BY FIELD DESC kann nix fasch sein, und dennoch verschluckt die ausgabe ein passendes ergebnis......
                    ich hatte so das gefühl, daß sie nicht richtig war, willst du nicht doch mal ne ausgabe machen, will ja nicht batteln ... ähh, betteln ...

                    wenn ich nachher zeit und lust hab, mach ich selbst die ausgabe, dann weiß ich mehr ... es liegt auch nicht an der order by, sondern an der art, wie du das datum bastelst. wenn ich mich richtig erinner ....
                    kommt davon, wenn man den code nicht direkt postet, bei der kürze.
                    Die Zeit hat ihre Kinder längst gefressen

                    Kommentar


                    • #11
                      Original geschrieben von derHund
                      na, rate mal, wer sich hier selbst beruhigt hat

                      ich hatte so das gefühl, daß sie nicht richtig war, willst du nicht doch mal ne ausgabe machen, will ja nicht batteln ... ähh, betteln ...

                      wenn ich nachher zeit und lust hab, mach ich selbst die ausgabe, dann weiß ich mehr ... es liegt auch nicht an der order by, sondern an der art, wie du das datum bastelst. wenn ich mich richtig erinner ....
                      kommt davon, wenn man den code nicht direkt postet, bei der kürze.
                      he,he...... ich hab mir einige ratschläge zu herzen genommen und den kompletten code nochmals überprüft..... warum datensätze vielleicht verschluckt werden..... und siehe da !!!.. ich fand nen fehler... und es war auch genau der fehler, der diese fasclen ergebnisse lieferte.....

                      ich hatte nen codeteil wie diesen doppelt : $row(mysql_fetch_array($sql))
                      hab diesen nur entfernt und alles läuft spitze......

                      ist auch so geschrieben, dass es also codeschnipsel funktioniert....
                      kann ja nen MOD dahin verschieben die Lösung ! und dieses lösung ist von nem anfänger...dürfte also keiner probleme mit haben..... außerdem ist alles nötige kommentiert :-)


                      PHP-Code:
                      <?php
                      ######################################################################################################
                      # script zur Suche für altersbereich ' von bis' -- sqlfield = 'birth' & fieldtyp = 'date' yyyy-mm-dd #
                      ######################################################################################################
                        
                      $hostip "localhost";                                    # variable für Hostnamen
                        
                      $benutzer "";                                           # legt den Benutzernamen fest,um Datenabnkzugriff zu erhalten
                        
                      $passwort "";                                           # legt das Passwort fest,um Datenabnkzugriff zu erhalten
                        
                      $db "portal";                                           # variable für den Datenbanknamen
                        
                      $table "daten";                                         # variable für den Tabellennamen
                        
                      $activation "1";                                        # wert für aktivierte User
                        
                      $vonmin    "30";                                        # 'von alter' kann z.B durch selectmenü festgelegt werden
                        
                      $bismax    "60";                                        # 'bis alter' kann somit auch durch selectmenü festgelegt werden
                        
                      if($vonmin=="")    unset ($vonmin);                       # alter von :
                        
                      if($bismax=="")    unset ($bismax);                       # alter bis :
                      #################################################################################################

                      function age($geby,$gebm,$gebd#  funktion zum berechnen von alter year-month-day
                          
                      {
                          
                      $time=time();
                          
                      $akty=date("Y"$time);
                          
                      $aktm=date("m"$time);
                          
                      $aktd=date("d"$time);
                          
                      $alter=$akty-$geby;
                          
                      $v=$aktm-$gebm;
                          if (
                      $v 0)
                              
                      $alter=$alter-1;
                          if (
                      $v == 0)
                          {
                            
                      $d=$aktd-$gebd;
                            if (
                      $d 0)
                              
                      $alter=$alter-1;
                          }
                          return 
                      $alter;

                          }
                      #################################################################################################
                      ?>
                      Alles suchen zwischen :<?php echo $vonmin ?> und <?php echo $bismax ?> Jahren.<br>
                      <?

                      ############ Hier wird die min. oder maximale altersangabe zum suchen errechnet #################
                      $day       = date("d");
                      $month     = date("m");
                      $year      = date("Y");
                      $biswann   = ($year - $bismax);
                      $age_stop  = "$biswann"."-"."$month"."-"."$day";
                      $vonwann   = ($year - $vonmin);
                      $age_start = "$vonwann"."-"."$month"."-"."$day";
                      ###############################################################################################
                      $allestring = "SELECT * FROM daten WHERE " ;
                        $blnAND = false;

                         if (isset($activation))   #    abfrage zum aktiviert ist immer gesetzt, damit die suche nur aktivierte User berücksichtig
                         {
                         if($blnAND) $allestring .= "AND ";
                         $allestring   .= "activate = '".$activation."' ";
                         $blnAND = true;
                         }
                         if (isset($vonmin))       #    falls abfrage zum mindestalter
                         {
                         if($blnAND) $allestring .= "AND ";
                         $allestring   .= "birth < '".$age_start."' ";
                         $blnAND = true;
                         }
                         if (isset($bismax))       #    falls abfrage zum maximumalter
                         {
                         if($blnAND) $allestring .= "AND ";
                         $allestring   .= "birth > '".$age_stop."' ";
                         $blnAND = true;
                         }

                      #################################################################################################
                      echo "$allestring";   // nur zu Demozwecken
                      #################################################################################################
                       $link = mysql_connect( $hostip, $benutzer, $passwort );
                       $link = mysql_select_db($db);
                       $sql = mysql_query( "$allestring"); # hier wird die Selectanfrage wieder zusammengesetzt
                      #################################################################################################
                      echo "<table border=\"1\">";
                        while( $row = mysql_fetch_array($sql) )
                      {
                      echo"<tr>";
                      echo "<td>";
                      echo " Datum : $row[birth] ";
                      echo "</td><td>";
                      echo " von : ";
                      echo $row[user];
                      echo "</td><td>";
                      echo " Alter : ";
                      $birthdate02 = $row[birth];
                      $birthdate01 = explode("-", $birthdate02) ;                  # hier wird das ergebnis in $birthdate01[array] ( 3 Teile ) gespeichert
                      echo age($birthdate01[0],$birthdate01[1],$birthdate01[2]);   # altersberechnung erfolgt durch $birthdate01[array]  ----   yyyy,mm,dd
                      echo "</td>";
                      echo"</tr>";

                      }
                      echo "<table>";
                      ?>
                      Coder never die, they just GOSUB without RETURN

                      Mein System

                      Kommentar

                      Lädt...
                      X