Forum
Tipps
News
Menu-Icon

Datei upload mit javascript prüfen

Hallo
ich glaube ich stehe vor einem unlösbaren Problem:

Ich will einen Dateiupload durchführen, zumdem wird die Datei in eine Datenbank geschrieben.

Dafür wird dann natürlich erst überprüft ob der dateiname schon in der Datenbank enthalten ist.
Überprüfung: WHERE datei=$_POST["datei"]
Wenn er es nicht ist, also mysql_num_rows == 0, dann wird die datei hochgeladen.
Jetzt kann es aber auch sein, dass die Datei überschrieben werden soll.
Also ein javascript confirm("Soll die datei überschrieben werden").
So wenn TRUE(JA gedrückt) dann soll die datei überschrieben werden,ansonsten abrechen.

SO wenn ich diesen confirm jetzt ausgebe, bevor ich das Formular gesendet,habe ich ja noch nicht die Überprüfung gemacht.
Und zu Fragen ob überschrieben werden soll, falls vorhanden, ist auch nicht schön.

Also den confirm machen wenn das formular gesendet wurde.
Ja alles Schön und gut, dann drückt man halt "JA" und mann kann man java script rausfinden ob JA gedrückt wurde, aber "wie um alles in der welt" soll man jetzt dem php code sagen, dass javascript das erkannt hat.also quasi javascript var in $var umwandeln.
->geht meines wissens nicht

Ich hoffe ihr versteht meine Problematik, ansonsten fragen ;D;D;D

formular:

<?php echo "<form name=&#39;eintragen&#39; action=&#39;index.php?kategorie=$kategorie_id&action=insert&#39; method=&#39;post&#39; enctype=&#39;multipart/form-data&#39;>"?>
   <table class="upload">
   <tr>
   <td><ul>Datei:</ul></td>
   <td> <input type="file" name="datei" /></td>
   </tr>
   <td><ul>Anzeigename:</ul></td>
   <td><input type="text" name="anzeigename" size="30" onChange="document.eingabe.submit();" ></td>
   </tr>
   </table>
   <input type="hidden" name="kategorie_id_post" value="<?php echo $kategorie_id?>">
   <input type="hidden" name="js_vorhanden" value="">
   <br><input type="submit" name="submit" value="Hochladen" >
  </form>


also wenn empty($submit)
dann kommt das formular und sonst kommt halt die folgende
auswertung
<?php
  $abfrage 
"SELECT name,id FROM kategorien WHERE id=&#39;$get_id&#39; ";
  
$ergebnis mysql_query($abfrage) or die(mysql_error());
  
$filename $_FILES[&#39;datei&#39;][&#39;name&#39;];

$anzeigename$_POST["anzeigename"];
$kategorie_id_post$_POST["kategorie_id_post"];
$datum time();
  
$abfrage "SELECT anzeigename,dateiname FROM dateien WHERE anzeigename=&#39;$anzeigename&#39; OR dateiname=&#39;$filename&#39; ";
  
$ergebnis mysql_query($abfrage) or die(mysql_error());
 
$vorhanden mysql_num_rows($ergebnis);



if(
$vorhanden==&#39;0&#39;) {
if(isset($anzeigename))
{


        if (isset(
$_FILES[&#39;datei&#39;]) and ! $_FILES[&#39;datei&#39;][&#39;error&#39;])
        
{
          
$filename $_FILES[&#39;datei&#39;][&#39;name&#39;];
          
move_uploaded_file($_FILES[&#39;datei&#39;][&#39;tmp_name&#39;], dateien."/".$filename);

          
$eintragen "INSERT INTO dateien(anzeigename,dateiname,kategorie_id,datum)
                        VALUE (&#39;
$anzeigename&#39;,&#39;$filename&#39;,&#39;$kategorie_id_post&#39;,&#39;$datum&#39;)";
          
$insert mysql_query($eintragen) or die(mysql_error());
          echo 
"<b class=&#39;erfolg&#39;>Der Upload ist komplett!</b>";

        }
        else
        {
           echo 
"<b class=&#39;fehler&#39;>Fehler beim Upload.Bitte versuchen Sie es noch einmal!</b><br><br><br><br><br><a class=&#39;back&#39; href=&#39;javascript:history.back()&#39;>Zurück</a>\n";
        }
}else { echo 
"<b class=&#39;fehler&#39;> Sie müssen einen Anzeigenamen eingeben</b><br><br><br><br><br><a class=&#39;back&#39; href=&#39;javascript:history.back()&#39;>Zurück</a>\n"; }
}else {


   echo 
"<b class=&#39;fehler&#39;>Der Anzeigename oder der Dateiname ist schon vorhanden!</b><br><br><br><br><br><a class=&#39;back&#39; href=&#39;javascript:history.back()&#39;>Zurück</a>\n";

}
?>


vielen Dank schonmal

der_webi



.
 


Antworten zu Datei upload mit javascript prüfen:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi,
muss es denn unbedingt das JavaScript Confirm sein? Das einfachste hier wäre doch, dass du in dem letzten Else-Zweig, wo du ausgibst das die Datei schon existiert, einfach nochmal ein kleines Forumlar mit zwei Optionsboxen hinbastelst (Ja/Nein), und dass dann nochmal abschickst. Ist erstens sicherer im Sinne von JavaScript ein- und ausschalten. Somit hast du die Abfrage IMMER in deiner Hand, d.h. sie kommt auf jeden Fall. Und zweitens sicherer im Sinne davon, dass die Confirm-Box einfach mal schnell ohne lesen weggeklickt wird, und wenn du das >bestätigen< auch noch auf "Ja" legst, könnte sich der ein oder andere User sicherlich ärgern (oder du, je nachdem für wen die Dateien relevant sind).

Mario 8)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo
Alles klar.
Das sind natürlich Argumente.
Wäre natürlich schön wenns so geht, aber wenn bei morgen keiner ne bessere idee hat, dann werde ich das wohl so mit dem neuen formular machen

gruß
der_webi

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Wenn du es mit der Confirm Message trotzdem realisieren willst, gibt es da im Prinzip 2 Ansätze.

1) Du liest beim Aufruf der Seite alle in der DB vorhandenen Dateien in ein JavaScript-Array ein, und kannst dann nach dem Abschicken natürlich prüfen, ob die Datei bereits im Array vorhanden ist. Vorteil: Du kommst ohne Seitenrefresh aus. Nachteil: Ja gut... reden wir nicht über die Performance ;)
2) Wenn du im PHP-Skript feststellst, dass die Datei bereits vorhanden ist, machst du in dem Else-Zeig ein Forward auf die gleiche Seite und setzt eine Variable, die du dann wiederum auswertest und in Abhängigkeit davon nun die Confirm-Message einbauen kannst. Vorteil: So, wie du das haben willst. Nachteil: Seitenrefresh notwendig. Der Einbau wird bestimmt tricky, denn der Aufruf des JS, das die Message darstellt, müsste dann ganz am Ende der Seite erfolgen, denn sonst hast du das Confirm-Fenster und dahinter ne weiße Seite. Je nachdem, wie weit der Seitenaufbau bis zum Zeitpunkt des Aufrufs ist.
Ich persönlich würde es so machen, wie in meiner ersten Antwort.

Mario 8)

Hallo
Ich habe noch eine Frage.
Ich will jetzt die erste Möglichkeit realisieren, mit dem neuen formular.
Klappt auch alles nur eine wichtige Sache noch nicht und zwar:
Kann die ich Datei irgendwie weiter in diesem neuen Formular übergeben?
Also als hidden feld oder so.
Weil die Seite wird ja dann neu geladen und dann kann ich ja nicht mehr mit $_FILES arbeiten.
Wenn das nicht geht, kann man irgdnwie dann ein Value bei dem <input type="file"...> machen ?
Also so das man nicht nochmal durchsuchen klicken muss?

Danke schonmal
der_webi

JUHU
Ich habs geschaff, zwar sehr umständlich wie ich finde aber es läuft.
Die Datei wird erst in einen anderen Ordner hochgeladen und dann wenn das formular zum überschreiben bestätigt wurde, wird sie kopiert.
Warum ich das gemacht habe,
weil ich Internet gelesen habe, dass man dateien nicht über hidden Felder weitergeben kann


gruß und besten Dank
der_webi

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Warum ich das gemacht habe,
weil ich Internet gelesen habe, dass man dateien nicht über hidden Felder weitergeben kann

Richtig. Das liegt am enctype des Formulars. Würde das nicht auf multipart/form-data stehen, könntest du auf den Value des file-Formelements durchaus zugreifen, allerdings nichts mehr hochladen ;)

greez 8)
JoSsiF

Jop
trotzdem alles eine schwer Geburt.
Nur damit man gefragt wird ob man das überschrieben will
 ;D;D;D
Naja was solls ich bin fertig und damit gut  8)

bis dann
der_webi


« VektorgrafikenGästebuch »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Auslagerungsdatei
Die Auslagerungsdatei, auch bekannt als virtueller Speicher, ist ein wichtiges Element im Windows-Betriebssystem. Sie dient als Erweiterung des physischen Arbeitsspeicher...

Dateiendungen
Die Dateiendung, auch Dateinamenerweiterung, Dateierweiterung oder einfach "Endung" genannt, besteht aus meistens drei oder vier Buchstaben und wird mit einem Punkt an de...

Dateisystem
Das Dateisystem eines Computers definiert, wie Daten auf einem Speichermedium organisiert werden. Es bestimmt dabei, wie die Informationen auf dem Medium gespeichert, gel...