OOP Problem

Hi,

ich beschäftige mich erst seit kurzem mit OOP und prompt bin ich auf ein Problem gestoßen. In folgendem Script soll zunächst ermittelt werden, wieviele Einträge dem Kriterium „publ_id“ (in dem Fall „21“) entsprechen (Datenbankabfrage):

$field=‚publ_id‘;
$publ_rel_authors_list->get_entry_exact( 0,$author_rel_received_data, $field, 21 );
$num_author_rel = $publ_rel_authors_list->count_entries_exact( 0,$author_rel_received_data, $field, 21 );

die Anzahl der Einträge aus der DB entspricht hier exakt 3.

im nächsten Schritt gehe ich diese 3 Einträge aus der DB durch:

for($i=1;$iget_next_entry( $author_rel_received_data );
}

am Ende jedes Schleifendurchlaufs wird im assoziativen Array $author_rel_received_data der gesamte Datensatz abgelegt. Das heisst, wenn ich die ID des Datensatzes ausgeben möchte, kann ich diese über

echo $author_rel_received_data[‚ID‘];

ausgeben lassen.

Soweit so gut. Sobald ich jedoch innerhalb der Schleife nochmals das Objekt „$publ_rel_authors“_list benötige, um den Verweis zu einer anderen Tabelle zu ermitteln, die nicht numerische Daten von Autoren enthält, bekomme ich im Array $author_rel_received_data[] plötzlich ganz andere Werte (Dieses bleibt innerhalb der Schleife jedoch unverändert). So befinde ich mich im letzten Schleifendurchlauf urplötzlich nicht mehr in den Datensätzen, die ursprünglich dem Suchkriterium $field=21 entsprechen. Überprüft habe ich dies, indem ich stets $author_rel_received_data[„publ_id“] ausgebe und dies nicht mehr die 21 ist d.h die Schleife wird zwar dreimal durchlaufen, jedoch nicht mehr innerhalb der Datensätze, die mich interessieren.

Ich befürchte mit meinen Kenntnissen der OOP komme ich an dieser Stelle nicht weiter.

Bin dankbar für jede Hilfe

Peeayoo

Hi,

ohne die verwendete DB-Klasse zu kennen, ist das etwas schwierig, ich denke aber, das das SQL Result Handle irgendwo innerhalb dieses Objektes zwischengespeichert wird, so das dieses beim erneuten Verwenden der Instanz für eine andere Anfrage verloren geht.

Wenn dem so ist, solltest du für deine Unterabfrage ein weiteres Objekt der DB-Klasse anlegen und mit diesem die Unterabfrage durchführen (oder, evtl. lässt diese sich ja durch ein JOIN ganz vermeiden, der die Daten in einer Abfrage aus der DB holt?).

Alexander