Start · Sprachen · PHP · Referenz · yaz_range

yaz_range

Funktion

Gibt den Bereich der abzurufenden Datensätze für eine YAZ-Verbindung an (Startposition und Anzahl).

seit PHP 4.0.1 Kategorie: misc

Signatur

yaz_range(resource $id, int $start, int $number): void

Beschreibung

yaz_range() legt fest, welcher Ausschnitt einer Treffermenge bei der nächsten Suchanfrage über eine YAZ-Verbindung abgerufen werden soll. Die Funktion gehört zur ANSI/NISO Z39.50-Erweiterung für PHP (YAZ) und wird typischerweise zusammen mit yaz_search() verwendet, um Paginierung in bibliografischen Datenbank-Abfragen zu realisieren.

Der Parameter start gibt die 1-basierte Position des ersten gewünschten Datensatzes in der Treffermenge an, number bestimmt, wie viele Datensätze maximal abgerufen werden. Wurde kein Bereich festgelegt, hängt die tatsächlich übertragene Datensatzmenge vom Server ab.

Die Funktion beeinflusst ausschließlich den nächsten Aufruf von yaz_wait() bzw. die darauffolgenden Datenabruf-Funktionen wie yaz_record(). Sie sendet keine Netzwerkdaten und liefert keinen Rückgabewert.

Hinweis: Die YAZ-Erweiterung (ext/yaz) gilt seit PHP 7.0 als nicht mehr aktiv gepflegt und ist in modernen PHP-Versionen nicht mehr im Standard enthalten.

Parameter

Name Typ Default Beschreibung
$id Pflicht resource Die YAZ-Verbindungsressource, die zuvor mit yaz_connect() erstellt wurde.
$start Pflicht int 1-basierter Index des ersten abzurufenden Datensatzes innerhalb der Treffermenge. Der Wert 1 entspricht dem allerersten Treffer.
$number Pflicht int Maximale Anzahl der abzurufenden Datensätze ab der Startposition start.

Rückgabewert

Typ
void
Beschreibung
Die Funktion gibt keinen Wert zurück. Sie konfiguriert lediglich den internen Zustand der YAZ-Verbindung für den nächsten Abruf.

Beispiele

Einfache Paginierung mit yaz_range

<?php
// Verbindung zum Z39.50-Server herstellen
$id = yaz_connect('z3950.example.com:210/biblio');

// Suchanfrage definieren
yaz_syntax($id, 'usmarc');
yaz_search($id, 'rpn', '@attr 1=4 "php programmierung"');

// Nur Datensätze 1 bis 10 abrufen (erste Seite)
yaz_range($id, 1, 10);

// Verbindung ausführen und auf Ergebnis warten
yaz_wait();

$error = yaz_error($id);
if ($error) {
    echo "Fehler: " . $error;
} else {
    $hits = yaz_hits($id);
    echo "Gesamttreffer: $hits\n";
    for ($i = 1; $i <= min(10, $hits); $i++) {
        echo yaz_record($id, $i, 'string') . "\n";
    }
}
?>
Gesamttreffer: 42 ... (Datensätze 1–10)

Zweite Seite abrufen (Datensätze 11–20)

<?php
$id = yaz_connect('z3950.example.com:210/biblio');
yaz_syntax($id, 'usmarc');
yaz_search($id, 'rpn', '@attr 1=4 "php programmierung"');

// Seite 2: Datensätze 11 bis 20
$page     = 2;
$pageSize = 10;
$start    = ($page - 1) * $pageSize + 1; // ergibt 11

yaz_range($id, $start, $pageSize);
yaz_wait();

if (!yaz_error($id)) {
    $hits = yaz_hits($id);
    $end  = min($start + $pageSize - 1, $hits);
    for ($i = $start; $i <= $end; $i++) {
        echo yaz_record($id, $i, 'string') . "\n";
    }
}
?>
... (Datensätze 11–20)

// Wichtig · Fallstricke

Deprecation / Verfügbarkeit: Die YAZ-Erweiterung wurde mit PHP 7.0 aus dem offiziellen PHP-Kern entfernt und wird nicht mehr aktiv weiterentwickelt. Für neue Projekte sollten moderne Bibliotheken für den Z39.50-Zugriff (z. B. über ZOOM-C-Bindings) bevorzugt werden.

1-basierter Index: Im Gegensatz zu vielen PHP-Arrays beginnt die Zählung bei yaz_range() mit 1, nicht mit 0. Ein Aufruf mit start = 0 kann zu unerwartetem Verhalten führen.

Reihenfolge der Aufrufe: yaz_range() muss vor yaz_wait() aufgerufen werden, da die Bereichsinformation beim Senden der Anfrage an den Server benötigt wird.