Portal > Foren > PHP > PHP-Programmierung > Interne Klassen zuweisung
Antwort
 
Themen-Optionen
Alt 02.04.2007, 17:36 Nach oben    #1
Benutzer
 
Registriert seit: 18.06.2006
Ort: Straubing
Beiträge: 85
Standard Interne Klassen zuweisung

Hallo. Ich habe folgende Klasse:

PHP-Code:
<?php

    
class Search
    
{
        
/**
         * Alle Produkte abrufen
         *
         * @access    public
         * @return    array $items
         */
        
public function getAllItems()
        {
            global 
$db;
            global 
$smarty;

            
$itemDB $db->query("SELECT
                                      `ID`,
                                      `artID`,
                                      `title`,
                                      `isbn`,
                                      `publisher`,
                                      `author`
                                  FROM
                                      `bero__articles`
                                  WHERE
                                      `check` = '1'
                                  ORDER BY
                                      `ID`
                                  DESC"
);

            
$items = array();
            for (
$i 0$i $db->numRows($itemDB); $i++)
            {
                
$row              $db->fetchAssoc($itemDB);
                
$row['publisher'] = $this->getInfoByID($row['ID']);
                
$items[]          = $row;
            }

            return 
$items;
        }


        
/**
         * Kategorie-Informationen abrufen
         *
         * @access    public
         * @param     int $id
         * @return    string $pub
         */
        
public function getInfoByID($id)
        {
            global 
$db;

            
$pubDB $db->query("SELECT
                                     `title`
                                 FROM
                                     `bero__categories`
                                 WHERE
                                     `ID` = '"
$id ."'");

            
$row $db->fetchAssoc($pubDB);
            
$pub $row['title'];

            return 
$pub;
        }
    }

?>
Wenn ich mit dieser Klasse arbeite, wird mir immer nur der erste Datensatz ausgegeben, obwohl mehrere vorhanden wären. Es muss an dieser Zeile liegen, denn wenn ich diese entferne gehts, aber warum?
PHP-Code:
<?php

                $row
['publisher'] = $this->getInfoByID($row['ID']);

?>

Geändert von Berti (03.04.2007 um 12:13 Uhr).
Berti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.04.2007, 17:43 Nach oben    #2
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

Na du hast ein $db-Object und sobald du getInfoByID() aufrufst, setzt du diesem Object ein neues Query vor die Nase und es liefert dir das Ergebnis davon zurück. Hast also das Query aus getAllItems() überschrieben.
Das Problem ist in dem Fall das "global".
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.04.2007, 17:48 Nach oben    #3
Neuer Benutzer
 
Registriert seit: 31.05.2006
Beiträge: 24
Standard

Wieso setzt du überhaupt $db global? Gerade wenn du mit Klassen arbeitest, bietet sich doch an dies als Klassenvariable zu speichern.
PHP-Code:
class abc {
  protected 
$_db null;
  
// usw

KingCrunch ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.04.2007, 21:46 Nach oben    #4
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 426
Standard

ich seh das Problem hier:
PHP-Code:
$row $db->fetchAssoc($pubDB);
$pub $row['name'];
return 
$pub
ich denkmal bei $db->fetchAssoc($pubDB); kommt nur ein datensatz zurück, also kann in $pub dann auch nur einer stehen. "richtiger" wäre es so:
PHP-Code:
$info_names = array();
while(
$row $db->fetchAssoc($pubDB)){
  
$info_names[] = $row['name'];
}
return 
$info_names
da durch haben wir ein Array mit allen Namen
Xean ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.04.2007, 11:48 Nach oben    #5
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 825
Standard

Nein, hier (bei den Katergorie-Infos) soll ja auch nur ein Wert ausgelesen werden, oder? Allerdings passt das alles irgendwie nicht, denn Du liest ja "title" aus und willst nachher auf den Index "name" zugreifen, den es ja gar nicht gibt (error_reporting mind. auf E_ALL setzen!). Und, es macht so ja null Sinn, bei einer so banalen Verknüpfung n+1 Abfragen zu starten, anstatt alles einfach in eine einzige Query zu setzen.

Basti
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.04.2007, 12:14 Nach oben    #6
Benutzer
 
Registriert seit: 18.06.2006
Ort: Straubing
Beiträge: 85
Standard

Hallo, danke Problem gelöst. Ich hab die Funktion einfach woanders erstellt und dann in der Klasse verwendet.
Berti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Klassen für Eingabeüberprüfungen ? Doggi PHP-Programmierung 15 31.01.2006 09:37
alle Klassen eines Packages ermitteln ehli75 Allgemeine Java-Programmierung 3 16.12.2005 13:30
PropertyChangeEvent etc. auch für Klassen, die keine Beans sind? NewYork Allgemeine Java-Programmierung 2 23.11.2005 00:07
Performanceeinbusen beim Laden von Klassen? Gottzilla Allgemeine Java-Programmierung 4 15.08.2005 02:08
MVC Programmierung nur mit Klassen mit UI Endung? Java17 Desktop-Applikationen und Grafik 5 14.03.2005 17:12


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:37 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44