DB-Funktion und Anzahl der Datensätze

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

  • DB-Funktion und Anzahl der Datensätze

    Moin zusammen....

    mein Auftraggeber benutzt folgende Datenbankfunktion, aber ich bin nun nicht gerade ein spezi (ich bin eine 0) mit funktionen.
    Meine frage ist, wie kann ich die anzahl der betroffenen Datensätze ermitteln nach einer select-abfrage?
    Muss ich eine weitere funktion mit einbringen, und wenn ja wie und wo?

    Bitte nochmal um dringend hilfe!!!!

    PHP-Code:
    <?
        $admin = "Admin@hilfe.de";
        $logType = 0;
        $logFile = "./mysql-class.txt";
        $errorPage = "";

        $debug = true;
        $staticLink = null;
        define("ROW_AS_ARRAY", 0);
        define("ROW_AS_OBJECT", 1);
        $defaultMethod = ROW_AS_OBJECT;
        ob_start();

        class MySQL
        {
            var $link, $db, $result, $numrows;

                    function MySQL($db, $host, $user, $pass)
                    {
                            $this->connect($db, $host, $user, $pass);
                    }


            function connect($db, $host, $user, $pass)
            {
                global $logtype, $staticLink;;

                $this->link = @mysql_connect($host, $user, $pass)
                    or @MySQL::_reportError();

                if($db)
                {
                    if(!mysql_select_db($db))
                        @MySQL::_reportError();
                    $this->db = $db;
                }

                $staticLink = $this->link;


            }

            /*
             * boolean close()
             */
            function close()
            {
                global $logtype;
                $value = @mysql_close($this->link)
                    or @MySQL::_reportError();
                return $value;
            }

            /*
             * boolean dbSelect(string database)
             */
            function dbSelect($db)
            {
                global $logtype;
                $value = @mysql_select_db($db)
                    or @MySQL::_reportError();
                return $value;
            }


            /*
             * resource getLink()
             */
            function getLink()
            {
                global $staticLink;

                if ($staticLink)
                    return $staticLink;
                else
                    @MySQL::_reportError("can't get database link");

            }

        class Query extends MySQL
        {
            /*
             * int/resource Query(string query)
             */
            function Query($query)
            {
                global $staticLink, $logtype, $defaultMethod;

                if(!$staticLink)
                    @MySQL::_reportError();

                $this->result = @mysql_query($query, $staticLink);

                if($this->result)
                {
                    if(ereg("^insert", strtolower($query)))
                    {
                        $this->insertId = mysql_insert_id();
                        return $this->result;
                    }
                    elseif(ereg("^select", strtolower($query)))
                    {
                        $this->numrows = mysql_num_rows($this->result);
                        return $this->result;
                    }
                    else
                        return;
                }
                else
                    @MySQL::_reportError();
            }

            /*
             * int getInsertId()
             */
            function getInsertId(){    return $this->insertId;    }

            /*
             * array/object next([const method])
             */
            function next($method = -1)
            {
                global $defaultMethod;
                if($method == -1)
                    $method = $defaultMethod;

                if($method == ROW_AS_OBJECT)
                    return $this->_fetchObjectRow();
                elseif($method == ROW_AS_ARRAY)
                    return $this->_fetchArrayRow();
            }

            /*
             * object _fetchObjectRow()
             */
            function _fetchObjectRow()
            {
                if(!($row = @mysql_fetch_object($this->result)))
                    return false;
                else
                    return $row;
            }

            /*
             * array _fetchArrayRow()
             */
            function _fetchArrayRow()
            {
                if(!($row = @mysql_fetch_array($this->result)))

                    return false;
                else
                    return $row;
            }

            /*
             * array fetchObjects()
             */
            function fetchObjects()
            {
                $obj = Array();
                while($val = @mysql_fetch_object($this->result))
                {
                    $obj[] = $val;
                }
                return $obj;
            }

            /*
             * array fetchArrays()
             */
            function fetchArrays()
            {
                $arr = Array();
                while($val = @mysql_fetch_array($this->result))
                {
                    $arr[] = $val;
                }
                return $arr;
            }

            /*
             * void free()
             */
            function free()
            {
                @mysql_free_result($this->result) or
                    @MySQL::_reportError();
            }

            /*
             * void reset()
             */
            function reset()
            {
                @mysql_data_seek($this->result, 0) or
                    @MySQL::_reportError();
            }
        }

    ?>
    Zuletzt geändert von RoNoX; 24.03.2006, 10:24.

  • #2
    PHP-Code:
    $anzahl=mysql_num_rows($result

    Kommentar


    • #3
      1. für dich ist's vielleicht DRINGEND - aber das interessiert hier niemanden.
      2. http://www.php-resource.de/forum/sho...threadid=50454 <- Lesen und befolgen wegen Querscroller
      3. Guck dir mal die Zeile an:

      PHP-Code:
      $this->numrows mysql_num_rows($this->result); 
      Deine Klasse liefert in ->numrows ja eh von alleine die Anzahl der ausgelesenen Datensätze.
      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
      Schön - etwas Geschichte kann ja nicht schaden.
      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

      Kommentar


      • #4
        zu 1. ist völlig korrekt.
        zu 2. ich habe ja schon umbrüche reingebaut, aber noch mehr und alles wäre unübersichtlich geworden.
        zu 3. wie rufe ich den diese funktion auf? Die zeile hab ich mir ja auch schon angesehen und rumexperimentiert, aber ich kann nicht darauf zugreifen.

        Kommentar


        • #5
          die Zeile mit dem <a href.... kannst getrost umbrechen oder gleich weglassen, weil eh völlig uninteressant und schon sollte der Querscroller wenigstens bei 1280er Auflösung weg sein.

          hab mir die Klasse ned genau angesehen aber du gehst ja da ungefähr so vor:

          $ergebnis = new Query($query);

          danach müsstest mit

          echo $ergebnis->numrows;

          die Anzahl der Datensätze bekommen.
          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
          Schön - etwas Geschichte kann ja nicht schaden.
          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

          Kommentar


          • #6
            DANKE!!!!! nun funzt es

            PS: umbrechen tu ich sofort...

            Kommentar


            • #7
              Hi, ich nochmal...

              ist zwar schon eine weile her, aber ich habe dennoch mal eine frage. es geht immernoch um die obige db-klasse. da ich immernoch ne NULL mit klassen bin, wende ich mich nochmal hilfesuchend an euch.

              wie kann ich aus dieser klasse mir den sql-string ausgeben lassen. ich habe da schon einiges probiert aber immer ohne positiven ergebniss.

              Danke schonmal im vorraus.

              RoNoX

              Kommentar


              • #8
                gegenfrage - wie kommt die query "in die klasse"* rein?


                * - falsch formuliert, überlege dir, wie das richtig heißt.

                Kommentar


                • #9
                  PHP-Code:
                  $db = new MySQL($db_name$db_host$db_user$db_pass);
                  $query = new Query("Select *
                          FROM
                          tabelle"
                  ); 
                  sry. hab ich in meinem übereifer mal wieder vergessen.
                  ich bin halt mit klassen und funktionen nicht wirklich ne leuchte.

                  Kommentar


                  • #10
                    ok, dann schau dir den konstruktor dieser klasse an. (function Query($query)). dieser muss den parameter zwischenspeichern, z.b. in einer privaten eigenschaft. diese musst du natürlich erst deklarieren.

                    anschließend kannst du eine methode schreiben (z.b. getQuery()), die lediglich den wert dieser eigenschaft zurückliefert.

                    Kommentar


                    • #11
                      also ich hab da sowas reingeschrieben wie...

                      function show_my_sql(){
                      $test = $this->$query;
                      return;
                      }


                      nach...


                      function Query($query)
                      {
                      global $staticLink, $logtype, $defaultMethod;

                      if(!$staticLink)
                      @MySQL::_reportError();

                      $this->result = @mysql_query($query, $staticLink);


                      aber ich komme nie zu einem ergebniss. das beste was ich rausbekomme war etwas wie ressource id #6, aber damit kann ich nichts anfangen!

                      hast du noch einen wink für mich...

                      Kommentar


                      • #12
                        Original geschrieben von RoNoX

                        function show_my_sql(){
                        return $this->query;

                        }


                        nach...


                        function Query($query)
                        {
                        global $staticLink, $logtype, $defaultMethod;

                        if(!$staticLink)
                        @MySQL::_reportError();
                        $this->query=$query;
                        $this->result = @mysql_query($query, $staticLink);

                        hab mal etwas geändert.
                        ps: komische klasse hast du da

                        Kommentar


                        • #13
                          Fettes DANKE! Ich könnte dich umarmen!

                          Kommentar

                          Lädt...
                          X