Aus Datenbank einträge ein Download bauen

  • Ich hoffe ich kann das jetzt erklären.

    Ich baue gerade ein Download und Upload System.

    Beim Hochladen werden ,Zeichen ,Zeilen,Kb,Code,und Name in der Datenbank gespeichert. Jetzt möchte ich das aber aus der Datenbank direkt zum Download anbeiten können.

    Habe mir gedacht ich frage das ab und mache das mit fwrite() zu einer Datei und lasse die dann Downloaden. Doch so muß ja beim jeden Download so eine Datei erstellt werden.Das kann ja auch nicht richtig sein. Ich könnte ja die Datein anzeigen lassen( was auch schon geht ) aber ich will die Datei ja als fertiges Script zum Download anbieten.

    Ich hoffe ihr versteht mich was ich meine. Wie kann man das an besten umsetzten??

  • Beim speichern in der Datenbank speichere ich ja den Namen weil Link gibt es ja noch nicht. Aber wie kann ich den das dann öffnen? Weil der Code steht ja in der Datenbank ,es gibt ja noch keine Datei die ich runterladen kann.Die ist ja noch in der Datenbank verteilt und soll zusammen gebaut werden wenn man die runterladen möchte.

    An den download attribute hatte ich auch schon gedacht ,nur weiß ich nicht ganz wie ich die Datei da rein bekomme?

  • Hey,


    dein Vorgehen erfordert viel mehr als es eigentlich notwenig ist. Bei einem Upload wird eine Datei hochgeladen. Diese verschiebst du dann mit der passenden PHP-Funktion nach der Überprüfung in einen Ordner. Den Pfad zu diesem Ordner erstellst du dir dann. Damit hast du den Pfad zur Datei. Diesen Pfad speicherst du dann in die Datenbank ab. Über diesen Pfad kannst du dann diese Datei aufrufen und ausgeben oder als Download anbieten.


    dateiId pfad usw....
    1 dateien/form.php


    Nun führst du ein Select aus welches den Pfad aus der DB liest. Dann hast du den Pfad in einer Variable mit der du dann weiterarbeiten kannst.


    PHP
    $dbv = //Datenbankverbindung
    query = $dbv->prepare(SELECT pfad, usw ... FROM dateien)
    query->execute()
    
    $dateien = query->fetch(PDO::FETCH_ASSOC)
    
    echo $dateien["pfad"]; // => hier sollte der Pfad dann drinstehen mit dem du weiterarbeiten kannst


    Grüße,

    Stef

  • Ja Stef,das wäre ja nicht das problem.Dazu bräuchte ich ja keine Datenbank.Da würde ein Script reichen der den Download Orner Scannt und den Kram in einer Tabelle oder so schreibt. Mein Vorhaben ist wahrscheinlich wieder schwer und wohl nicht nötig.Aber da ich den Code Inhalt von den Scripten auch als Suche verwenden möchte ,hatte ich mir das so gedacht. Ich könnte jetzt deine Variante nehmen und eine Zeile dazu nehmen und den Code trotzdem mit rein Speichern aber das wäre ja doppelt gemoppelt.

    Ok Fragen wir mal anders. Ist mein Vorhaben überhaupt möglich und wenn ja wie gehe ich davor . Ich habe jetzt die 3 wichtigsten Zeilen mit name des Scriptes .Format in den es gespeichert werden soll( bzw gedownloadet werden sol ). Und eine Zeile mit den Code.

  • Ok ihr habt mich überzeugt.Mit etwas rum probieren bin ich jetzt der Meinug ich mache beides.Da meine Upload Seite gleichzeitig sowas wie ein Editor werden soll wird der Text in der Datenbank gespeichert und das Format und co.


    Aufder Nächsten Seite wo man sich die Downloads Ankucken lassen kann wird beim erstellen der Tabelle gleich die Datein erstellt und ein Downloadlink mit in der Download Tabelle geschrieben. Wenn man die Seite wieder aufruft werden nur noch neue Einträge aus edr DB als Datei erstellt weil die anderen gibt es ja schon.


    Wenn fertig ist dann zeige ich euch was ich meine ist wohl einfacher zu verstehen bei mir

  • Mal nee frage. Den Quellcode der in einer Spalte steht kann ja mal mehrere 1000 Zeichen Lang sein.Zur Zeit schätze ich die grösse des Scriptes weil beim erstellen der Tabelle gibt es ja noch keine fertige Datei die ich mit php auslesen Könnte. Deswegen die Frage ,kann man die größe in Kb in einer Datenbank Zeile auslesen. Die Buchstaben length das geht ja aber mich interesiert wie viel Kb der eine Eintrag hat. Doctor Googel half mir bis jetzt nicht weiter .

  • Hey,


    ich schlage vor, dass du nur eine gewisse Anzahl an Zeichen zulässt. Kannst du aber machen wie du willst.


    Du kannst auf die Daten der hochgeladenen Datei mit der globalen Variable $_FILES zugreifen. In dieser stehen dann Informationen wie Type, Größe, usw.

    Die Größe ist in Bytes gegeben. Das heißt, diese musst du dann noch in Kilobytes (kb) umrechnen und somit hast du dies was du willst.


    Hilfreiche Links:


    Grüße,

    Stef

  • Ja das weiß ich ja das dies geht. Nur wenn ich die Daten in der Datenbank eingebe ,weiss ich die grösse ja noch nicht ,weil diese ja aus einen Textfeld in der Datenbank kommen .Wenn ich jetzt aber den Leuten die Datein zeigen will zb so .http://sebastian1012.bplaced.net/hauptseite/uploaddownload/abrufen.php soll da die grösse da stehen. Nur ist da noch keine Datei vorhanden wo ich die größe auslesen könnte.Die größe die da jetzt steht ist nur geschätzt und entspricht nicht ganz der Wahrheit Um die größe zu bekommen, wollte ich die größe des Codes haben die in der "CODE" Spalte in der Datenbank seht.


    Die größe habe ich in der Datebank begrenzt auf ca 2mb. Schreib zwar nie einer so eun größes Script aber wer weiß das schon.


    Gibt es überhaupt einen Code der die größe ( in kb ) einer Datenbank Spalte anzeigen kann ?

  • Was ist an der Größe so wichtig? Ob das nun 5 KB, 50 KB oder 500 KB sind, das ist doch heutzutage völlig wurscht.

    Heut zu Tage ist die Größe eigentlich egal aber ich brauche das für meine eigene zufriedenheit .


    Ist das den jetzt möglich die größe in der Db festzustellen oder nicht? Weil so einen DB tabellen Zeile muß ja auch eine größe haben jenachdem wie viel da drinne steht . Oder kann man das erst feststellen wenn man es geladen hat und auf den Pc ist bzw auf den Server mit php auszulesen.

  • Hey,


    basti1012 : Wie möchte eine Datenbank die größe einer Datei ermitteln können ? Meiner aktuellen Erfahrung nach geht dies nicht.

    Warum nimmst du eigentlich nichts an was wir dir hier an Infos geben. Meine vorigen Posts behandeln alle dies was du willst. Nämlich die Größe der Datei in KB.


    Wenn du diese Größe ermittelt hast füge diese einfach mit einem Insert in die DB ein.


    Wenn du die Länge des Codes haben willst benutzte die Funktion strlen. Diese liest alle Buchstaben der Variable ein und gibt dann die Anzahl als Integer zurück.

  • Hey,


    basti1012

    Warum nimmst du eigentlich nichts an was wir dir hier an Infos geben. Meine vorigen Posts behandeln alle dies was du willst. Nämlich die Größe der Datei in KB.

    Die Fuctionen kenne ich ja alle ,dann hätte ich auch nicht gefragt. Aber da ich noch KEINE Datein besitze kann ich auch keine größe auslesen.Die Datei exestiert ja noch nicht zusammen gebaut auf der Datenbank und da müsste man das auslesen fals es geht .


    Klar könnte ich es später auslesen und die Größen Angaben in der Tabelle schreiben.Aber warum soll ich alles Doppelt machen wenn es auch sofort gehe.


    Deswegen habe ich eine Einfache frage kann man die größe der Einträge der Datenbank auslesen?

    Jeder Buchstabe verbraucht Platz auf der Festplatte und das muß man doch auf der DB auch auslesen können ?

  • Also laut internet und anderen Forums sollte das in der Art so gehen

    Zwischen zeitig hate ich so viele verschieden Fehler ,die ich gar nicht alle aufzählen kann. Jetzt denke ich mal das alles richtig ist ,aber jetzt kommt der Fehler

    Zitat

    MySQL-Error: Access denied for user 'sebastian1012'@'localhost' to database 'downloads'

    Warum verweigert die Datenbank das ? Die Zugangsdaten stimmen aujedenfall weil im gleichen Script ja auch die SELECTS und UPDATES auch alle gehen ,nur das jetzt nicht .

  • Hey,


    m.scatello :


    Dies habe ich mir auch gedacht. War aber nach den mehreren Beiträgen verunsichert, ob das wirklich dies ist was Basti1012 möchte.

    Jeder hat seine eigene Meinung dazu.


    basti1012 :


    Zu deinem Script:


    Mal benutzt du mysql_ mal mysqli_ . Dies musst du ändern. Desweitern füge deine Datenbankverbindung als Paramter in die Funktion hinzu. Ich schlage dir vor nochmal die PHP-Functionen mit der Parameterübergabe anzuschauen.


    Du machst es dir unnötig kompliziert.

    Warum verweigert die Datenbank das ? Die Zugangsdaten stimmen aujedenfall weil im gleichen Script ja auch die SELECTS und UPDATES auch alle gehen ,nur das jetzt nicht .

    Wenn diese Meldung kommt, heißt es, dass du kein Zugriff auf die Datenbank hast. Schau dir nochmal deine Zugangsdaten an. Wenn alles stimmt ändere localhost zu 127.0.0.1 .


    Grüße,

    Stef

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!