Seite 2 von 3

Re: Buchausleihe Skript

Verfasst: Mi 17. Dez 2025, 21:16
von Volker
Ich hab mal das widget geändert ;)

Pagenierung und Suchfeld sind nun auch drin. Ist jetzt auch im Download.

https://www.niederastroth.de/buch_leihe.zip

Nach wie vor im widget einstellen: Pfad zur api
und auch die Anzahl der Bücher ( steht gerade auf 4 ) Kann auch 10 oder 15 sein.

Ab Zeile 347 direkt am Anfang des Script Tags.

https://www.niederastroth.de/buch/

Re: Buchausleihe Skript

Verfasst: Mi 17. Dez 2025, 21:34
von Bushisan
schau ich mir morgen an - DANKESCHÖN und noch nen entspannten Abend !!!!!

Re: Buchausleihe Skript

Verfasst: Do 18. Dez 2025, 11:06
von Bushisan
Guten Morgen Volker,

hab das neue eingebaut - MEGA - WOW !!!!

Eine hoffentlich in dieser Sache letzte Frage (ich hoffe das steht nirgens) - wie kann ich die Pagination einstellen wieviel Bücher pro Seite angezeigt werden?

Ich muss es nochmal schreiben - bin total begeistert was daraus geworden ist - und nochmal DANKESCHÖN

Re: Buchausleihe Skript

Verfasst: Do 18. Dez 2025, 12:17
von Bushisan
Wäre ja auch zu schön gwesen.
In der alten Version habe ich die Buchcover von einem lokalen Ordner verwendet. Jetzt werden keine Grafiken mehrr angezeigt :( Was hab ich schon wieder falsch gemacht ?

https://www.shotokan-karate-dojo-neukir ... .php?del=1


User: Hubert
PW: 100355

:crying: :crying: :crying:

Re: Buchausleihe Skript

Verfasst: Do 18. Dez 2025, 12:23
von Bushisan

Re: Buchausleihe Skript

Verfasst: Do 18. Dez 2025, 13:50
von Volker
Hat der Ordner uploads/books Lese Rechte ? 755 sollte der haben. In Filezilla Dateiberechtigungen auf den Ordner rechte Maustaste

Re: Buchausleihe Skript

Verfasst: Do 18. Dez 2025, 14:56
von Volker
Bushisan hat geschrieben: Do 18. Dez 2025, 11:06 Guten Morgen Volker,

hab das neue eingebaut - MEGA - WOW !!!!

Eine hoffentlich in dieser Sache letzte Frage (ich hoffe das steht nirgens) - wie kann ich die Pagination einstellen wieviel Bücher pro Seite angezeigt werden?

Ich muss es nochmal schreiben - bin total begeistert was daraus geworden ist - und nochmal DANKESCHÖN
Hatte ich ja oben bereits geschrieben ;) Musst du im widget im Code ändern, steht im Moment auf 4
const apiBase = "/buch/api";
const ITEMS_PER_PAGE = 4;
Das sin die beide Dinge die man ändern muss, kann. 1. der Pfad und 2. die Anzahl an Einträgen

Re: Buchausleihe Skript

Verfasst: Do 18. Dez 2025, 16:09
von Bushisan
Hallo Volker,

die Berechtigung hab ich korrigiert.

die Änderungen in widget hab ich auch gemacht

Code: Alles auswählen

const apiBase = "/buch_leihe/api"; // Pfad hier anpassen !!!
  const ITEMS_PER_PAGE = 10; // Anzahl hier einstellen
Alle Engaben werden gespeichert. Bücher, ausleihe, zurückgeben usw. nach einloggen usw. - alles funktioniert. Nur nicht die Cover

Entschuldige das ich mich wieder mal so blöd anstelle - haste Di sicherlich einfacher vorgestellt :D

Re: Buchausleihe Skript

Verfasst: Do 18. Dez 2025, 16:27
von Volker
Hast du die Bilder über das Admin hoch geladen ?
Das muss gehen !

Da stimmt was mit den Rechten nicht.

Re: Buchausleihe Skript

Verfasst: Do 18. Dez 2025, 16:46
von Bushisan
Ich check das nachher alles nochmal :D Bis denne

Re: Buchausleihe Skript

Verfasst: Do 18. Dez 2025, 16:55
von Volker
Ansonsten config.php und die sqlight db löschen und nochmals installieren.

Kopier mal diesen Code hier in die books.php:

Code: Alles auswählen

<?php
declare(strict_types=1);

require __DIR__ . '/db.php';
require_installed();

try {
    $pdo = db();

    $sql = "
        SELECT
            b.id,
            b.title,
            b.author,
            b.isbn,
            b.note,
            b.image,
            b.created_at,
            CASE WHEN l.id IS NULL THEN 1 ELSE 0 END AS available,
            u.name AS loaned_to,
            l.loaned_at
        FROM books b
        LEFT JOIN loans l ON l.book_id = b.id AND l.returned_at IS NULL
        LEFT JOIN users u ON u.id = l.user_id
        ORDER BY b.id DESC
    ";

    $books = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);

    /*
     * Web-BASISPFAD sicher ermitteln
     * Beispiel:
     *   /buch/api/books.php  -> /buch
     *   /buch_leihe/api/books.php -> /buch_leihe
     */
    $script = $_SERVER['SCRIPT_NAME'] ?? '';
    $baseUrl = rtrim(dirname(dirname($script)), '/');

    foreach ($books as &$b) {
        if (!empty($b['image'])) {
            // WICHTIG: nur Webpfad, kein Serverpfad!
            $b['image_url'] = $baseUrl . '/uploads/books/' . $b['image'];
        } else {
            $b['image_url'] = $baseUrl . '/assets/no-cover.svg';
        }
    }
    unset($b);

    json_response([
        'ok'    => true,
        'books' => $books
    ]);

} catch (Throwable $e) {
    json_response([
        'ok'    => false,
        'error' => $e->getMessage()
    ], 500);
}
Das scheint ein Pfadproblem. ist aber komisch das es gestern lief.
Die Bilder werden nicht gefunden weil sie nicht auf uploads/books verlinken sondern ins root :angst:

book_37c93b076c60d5b3.png:1 Failed to load resource: the server responded with a status of 404 ()
book_5287719138a77401.png:1 Failed to load resource: the server responded with a status of 404 ()
book_ac8fb138d660bd62.jpg:1 Failed to load resource: the server responded with a status of 404 ()
book_dc56fdad467f74d2.png:1 Failed to load resource: the server responded with a status of 404 ()
book_9c7fedb2973f2cca.png:1 Failed to load resource: the server responded with a status of 404 ()

Re: Buchausleihe Skript

Verfasst: Do 18. Dez 2025, 19:51
von Bushisan
Hallo Volker,

Hab grade ein Buch angelegt. Im Ordner "buch_leihe/uploads/books" werden die Bilder angezeigt. Aber nicht in der Benutzeroberfläche.


Bild

Re: Buchausleihe Skript

Verfasst: Do 18. Dez 2025, 20:00
von Volker
Ich hab echt keine Ahnung was jetzt los ist. Berechtigung auf 755?
Ich weiß nur das es bei mir einwandfrei läuft :confused:

Alles löschen neu Installieren, wenn dann immer noch der Fehler da ist nochmal melden.

Hast du die books.php geändert wie ich es gepostet hatte ?

Re: Buchausleihe Skript

Verfasst: Do 18. Dez 2025, 21:09
von Bushisan
Ja hab - ich lösche alles nochmal und fang nochmal von vorne an - schönen Abend noch !!!

Re: Buchausleihe Skript

Verfasst: Fr 19. Dez 2025, 09:35
von Bushisan
Guten Morgen Volker,

hab jetzt nochmal alles neu installiert. das ist alles sehr seltsam.
Wenn ich die Seite das erste mal aufrufe, dann wird mir das eingegebene Buch richtig angezeigt - auch von wem es ausgeliehen wurde.

Bild

wenn ich dann auf die Adminseite gehen um z.B. die Ausleihe zurückzugeben, dann bekomme ich auf beiden Adminseiten diese Anzeigen.


Bild


Bild

Re: Buchausleihe Skript

Verfasst: Fr 19. Dez 2025, 09:58
von Bushisan
Ich kann aber auch die Vorgängerversion wieder hochladen - könnte mir shon vorstellen, das Dir das alles irgndwann auch zu dumm wird.

Gruß Hubert

Re: Buchausleihe Skript

Verfasst: Fr 19. Dez 2025, 12:32
von Bushisan
Hallo Volker,

schau mal:

das ist der Link zur Grafik die nach dem Löschen des Browsercache nach ersten Aufruf angezeigt wird (in dem Menue "Bibliothek-Ausleihe" Hier mal der Link:


https://www.shotokan-karate-dojo-neukir ... 9c808b.png


wenn ich mich dann als Admin einlogge und in den Bereich "zu den Büchern" wechsel, dann wird mir die Grafik nicht mehr angezeigt und es ist folgender Link hinterlegt:

https://www.shotokan-karate-dojo-neukir ... 9c808b.png

Blöde Frage: Müsste das nicht der gleiche Link sein? Nur mal so als Gedankenstütze oder Hinweis auf nen Installationsfehler

Re: Buchausleihe Skript

Verfasst: Fr 19. Dez 2025, 12:34
von Volker
Wenn Du das alte Zip noch hast nimm das mal und kopier nur die widget.php aus dem neuen zip da rein.
Ich hatte die db.php auch geändert, kann sein das Ionos da strikter ist. Probier das mal.

Re: Buchausleihe Skript

Verfasst: Fr 19. Dez 2025, 14:04
von Bushisan
Nee - leider nicht :crying:

Bild

sobald ich in den Adminbreich wechsle werden die Cover dort nicht angezeigt. Wenn ich dann wieder auf die Benutzerseite (s. Bild) wechsel dann werden sie dort angezeigt - halt nur nicht im Adminbereich

Re: Buchausleihe Skript

Verfasst: Fr 19. Dez 2025, 14:25
von Volker
Letzter Versuch ;)

den code hier komplett in /api/books.php ersetzen

Code: Alles auswählen

<?php
declare(strict_types=1);

require __DIR__ . '/db.php';
require_installed();

try {
    $pdo = db();

    $sql = "
        SELECT
            b.id,
            b.title,
            b.author,
            b.isbn,
            b.note,
            b.image,
            b.created_at,
            CASE WHEN l.id IS NULL THEN 1 ELSE 0 END AS available,
            u.name AS loaned_to,
            l.loaned_at
        FROM books b
        LEFT JOIN loans l ON l.book_id = b.id AND l.returned_at IS NULL
        LEFT JOIN users u ON u.id = l.user_id
        ORDER BY b.id DESC
    ";

    $books = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);

    // 🔑 robuster Web-Basispfad (funktioniert überall)
    $script  = $_SERVER['SCRIPT_NAME'] ?? '';
    $baseWeb = rtrim(dirname(dirname($script)), '/');

    foreach ($books as &$b) {
        if (!empty($b['image'])) {
            $b['image_url'] = $baseWeb . '/uploads/books/' . $b['image'];
        } else {
            $b['image_url'] = $baseWeb . '/assets/no-cover.svg';
        }
    }
    unset($b);

    json_response([
        'ok'    => true,
        'books' => $books
    ]);

} catch (Throwable $e) {
    json_response([
        'ok'    => false,
        'error' => $e->getMessage()
    ], 500);
}