• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Upload eindeutige ID ?

maria1

Mitglied
Hy,

Ich mal wieder. Nun ein Problem mit nem Upload ..

Der Upload steht schon, die files werden hochgeladen , in einen Ordner gepackt, und der link zur datei sowie die UserID und eine Normale ID in die DB geschreiben.

Mein Problem jetzt ,
Ich muss den Uploads file_id 's zuordnen , sodass ich diese nach dem Upload ausgeben kann.

Also ich lade 5 Files hoch dann sieht das so aus :

id / path / uid / timestap /

Das Funkioniert alles, wenn ich aber 5 Files hochlade hab ich 5 ID's. Also müsste ich ne file_id haben sodass die 5 Files eine gemeinsame ID bekommen....

Hier mein Script (der teil den ich beim Upload include um die daten in die DB zu schreiben)

PHP:
<?php
// connect database
include('../config/mysql_connect.php');


if(isset($_POST)) {
  
    //echo $_POST['name'];
    $fileName = $_POST['name'];
    $time = time();
 
    mysql_query("INSERT INTO uploads(path, uid, timestap) VALUES('uploads/$fileName', 'uid', '$time')");
    $inserted_id = mysql_insert_id($connect);

    if($inserted_id > 0) { // if success
        echo "uploaded file: " . $fileName;
    }

}

Bzw. ist es möglich, das nach dem Upload eine ausgabe kommt mit den IDS der gerade hochgeladenen files ?

Danke :)
 
Ich würde noch eine zweite DB-Tabelle anlegen.

Eine Tabelle für die Files und eine weitere für den Upload. Die Upload-Tabelle bekommt ebenfalls eine ID (auto increment), diese wird dann in der Files Tabelle gespeichert.

Files:
id (auto increment)
path
uid (id aus der Tabelle Uploads

Uploads:
id (auto increment
timestamp

Bzw. ist es möglich, das nach dem Upload eine ausgabe kommt mit den IDS der gerade hochgeladenen files ?

MySQL :: MySQL 5.0 Reference Manual :: 11.13 Information Functions

Mit last_insert_id() nach der letzen ID der Tabelle Uploads fragen und dann in der Tabelle files nach Datensätzen suchen.
 
Zuletzt bearbeitet:
Hmm ich danke dir für deine Hilfe.
Leider muss ich sagen das ich dir nicht ganz folgen kann .

last_insert_id() hab ich bereits versucht, jedoch gibt er mir eben nur die letzte id aus ..
 
Willst du die Information dauerhaft speichern, dass x Dateien „in einem Schwung“ hochgeladen wurden?

Falls nein, kannst du einfach innerhalb einer Schleife jeweils per mysql_insert_id die letzte ID ermitteln und in ein Array schieben.

Wie trägst du überhaupt mehrere Dateien ein? Ich sehe dazu keinen Code.
 
Hier das Script für den Upload

Code:
<html>   
   <head>
    <link href="uploader/uploadify.css" type="text/css" rel="stylesheet" />
    <script type="text/javascript" src="uploader/jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="uploader/swfobject.js"></script>
    <script type="text/javascript" src="uploader/jquery.uploadify.v2.1.4.min.js"></script>
    <script type="text/javascript">
$(document).ready(function() {

    //alert('I am ready to use uploadify!');
    $("#file_upload").uploadify({
        'uploader': 'uploader/uploadify.swf',
        'script': 'uploader/uploadify.php',
        'cancelImg': 'uploader/cancel.png',
        'folder': 'uploads',
        'auto': false, // use for auto upload
        'multi': true,
        'wmode'       : 'transparent',
'hideButton'  : true,
        'queueSizeLimit': 4,
        'onQueueFull': function(event, queueSizeLimit) {
            alert("Please don't put anymore files in me! You can upload " + queueSizeLimit + " files at once");
            return false;
        },
        'onComplete': function(event, ID, fileObj, response, data) {
            // you can use here jQuery AJAX method to send info at server-side.
            $.post("uploader/insert.php", { name: fileObj.name }, function(info) {
                 setTimeout("self.location.href='uploader/'",1000);// alert UPLOADED FILE NAME
            });
        }
    });

});
    </script>

    </head>
    
    
    <body>
        <input id="file_upload" name="file_upload" type="file" />
<a href="javascript:$('#file_upload').uploadifyUpload();">Upload Files</a>
    </body>
    
    </html>

[COLOR=#000080][/COLOR]

insert.php ist die andere datei die ich bereits gepostet habe ..

Ich will nicht speichern das x dateien hochgeladen wurden aufeinmal..
Ich will einfach wenn ein User x Dateien hochladed , von diesen Dateien die Links ausgegeben werden nach dem Upload.
Das wollte ich eben anhand der ID machen , wäre halt gut wenn die x dateien die selbe id haben eben file_id oder so ...
 
Ah, okay. Ich sehe das Problem. Trotzdem noch kurz die Rückfrage:

Das wollte ich eben anhand der ID machen , wäre halt gut wenn die x dateien die selbe id haben eben file_id oder so ...

Du willst aber nicht dauerhaft speichern, dass die x Dateien zeitgleich hochgeladen wurden, sondern nur für eine einmalige Ausgabe direkt nach dem Upload? Das ist vermutlich wichtig, um zu entscheiden, ob du im Datenbankschema dafür etwas hinzufügen musst.
 
Ah, okay. Ich sehe das Problem. Trotzdem noch kurz die Rückfrage:



Du willst aber nicht dauerhaft speichern, dass die x Dateien zeitgleich hochgeladen wurden, sondern nur für eine einmalige Ausgabe direkt nach dem Upload? Das ist vermutlich wichtig, um zu entscheiden, ob du im Datenbankschema dafür etwas hinzufügen musst.

Nein im endeffekt nur einmal ! wobei wenn es einfacher ist , dann kann ichs auch für immer speichern ^^
Wie gesagt nur einmal nötig - direkt nach dem Upload ! Wenn es einfacher ist kann ichs auch ewig speichern ....

Hast du ne Idee bzw. einen Tipp oder einen Link zu nem Tutorial bzw. der Funktion die ich dafür benötige ?
 
Muss man schon pushen, weil man keine Antwort zwischen Freitagabend und Samstagmorgen bekommt? Das finde ich jetzt nicht so wahnsinnig überraschend.

Ich denke, du kannst einfach dein insert-Script die passenden Daten zurückgeben lassen (als JSON oder so). Das insert-Script wird ja offenbar per Ajax immer dann aufgerufen, wenn ein Upload fertig ist.

Die Rückgabedaten sammelst du dann in einer JavaScript-Datenstruktur und zeigst sie an, sobald alle Uploads fertig sind.
 
Ja das mit dem puschen tut mit leid :/

Hier das Script nochmal...

PHP:
<?php

// connect database
include('../config/mysql_connect.php');


if(isset($_POST['name'])) {
    


    //echo $_POST['name'];
    $fileName = $_POST['name'];
    $time = time();





    mysql_query("INSERT INTO uploads(path, uid, timestap) VALUES('$fileName', 'uid', '$time')");

  }  
  else {   
        
    $inserted_id = mysql_insert_id($connect);







echo "uploaded file: $fileName " .mysql_insert_id($connect) ;
    
    }

?>

Mir würde es ja schon reichen $fileName nach dem Upload auszugeben was aber so nicht funktioniert .. Warum ?
 
Du musst die Daten auf der JavaScript-Seite im $.post-Aufruf annehmen und verarbeiten. Wahrscheinlich ist es auch notwendig, die Daten (auf PHP-Seite) in einem bestimmten Format zu erzeugen (etwa JSON).

- jQuery.post() – jQuery API
- PHP: json_encode - Manual

Mit der Firebug-Extension für den Firefox kannst du zum Test überprüfen, welche Daten ein Ajax-Request zurückgibt („Net“-Tab).
 
Zurück
Oben