PHP in php-Uploadscript eine gif-Bilddatei anzeigen

Clocker 2800+

Lt. Commander
Registriert
Apr. 2007
Beiträge
1.409
Hi.

ich habe ein Bild-Uploadscript.

Wie kann ich, wenn ich auf den Button "Bild hochladen" klicke,
per JavaScript (denn mit php geht es ja nicht) ein gif-Bild anzeigen lassen ?

Also dass noch vor dem Upload ein gif-Bild angezeigt wird, und dann erst wieder mit php das Bild hochgeladen wird ?


P.S.
Dass ein Bild angezeigt wird, hab ich jetzt schon mal,
aber jetzt funktioniert die Weiterleitung (dass nach dem Buttonklick die Funktion "if(isset($_POST['action']))" (Im unteren Code ganz am Ende) aufgerufen wird),
irgendwie nicht mehr.

Ach ja, hier mal der Codeausschnitt:
PHP:
$numoffiles = 2;
	echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'" enctype="multipart/form-data"'; ?> onsubmit="this.action.value='Bitte Warten...';this.action.disabled=true;zeigeBalken();return true;" <?php echo ">'";
	for ($i = 1; $i<=$numoffiles; $i++)
	{
		if ($i < 10) {
		echo 'Bild #0'.$i.': <input type="file" name="file[]" size="20" style="cursor:hand;"/> <br /> ';
		} else {
		echo 'Bild #'.$i.': <input type="file" name="file[]" size="20" style="cursor:hand;"/> <br /> ';
		}
	}
	# echo '<input type="hidden" name="sender" value="sender">';
	echo '<input type="submit" name="action" value="Bild hochladen">';
	echo '</form>';

	?>
	
	<div id="ladebalken">
  	<p style="width=100"><span></span></p>
	</div></font><p> 

	<script type="text/javascript">
	function zeigeBalken() {
    	document.getElementById("ladebalken2").style.display = "inline";
    	return true;
	}
	</script>

	<div id="ladebalken2" style="display:none">
  	<img src="balken.gif" alt="">
	</div>

	<?php

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

        # Hier kommt jetzt halt der Code, mit dem hochladen, DB-Eintrag, ... (der schon funktioniert)
        # Und diese funktion müsste halt aufgerufen werden, 
        # wenn der Button "Bild hochladen" gedrückt wurde, 
        # und wenn das Bild angezeigt wird.
	}

Echt, IHR seid meine letzte Hoffnung.
"Schraube" jetzt schon ein paar Stunden dran herum und nix geht.
 
Zuletzt bearbeitet:
Warum "this.action.disabled=true;"?
Damit weiss er nicht, wohin er es leiten soll, so zumindest würde ich das interpretieren.

Du meinst wahrscheinlich unten den Button mit dem Namen "action", mit this.action rufst du in dem Falle aber das Action-Attribut des Form-Tags auf und disablest es, was soweit ich weiss nichtmal geht, weil man ein Attribut nicht disabeln kann ;)
 
Zuletzt bearbeitet:
Was mir spontan einfällt ist du gibst dem Button die Funktion onclick='functionXY()' und da verändert du mit JavaScript dein HTML Code, sprich du blendest ein Bild ein, nehme an den Ladebalken. Ein und ausblenden haste ja schon gemacht bzw. willst es machen mit diesem display:inline und none. Mit PHP soll dann ja das PHP Script aufgerufen werden das die Datei hochlädt.

Nachdem du das Bild anzeigen lassen hast könntest du mit window.location.href="......" oder wie das Objekt genau heißt, das Script aufrufen und hängst die Parameter an die URL dran, gleiches als ob du das Formular per GET Methode abschickst.

Spontaner Einfall, vielleicht gibt es noch was besseres.

Edit: sehe gerade du verwendest POST, dann fällt das wohl flach... ;-)
 
Er muss Post verwenden. Ein Upload-Feld kann man nicht mit Get-Daten versenden.
 
Kann bitte jemand den Code korrigieren, so wie er meint.
Ich probiere es dann aus.

Du meinst wahrscheinlich unten den Button mit dem Namen "action"
Ja genau, der Button ("Bild hochladen") soll beim klicken darauf deaktiviert werden.

Dann soll sich das Bild anzeigen, und die untere Funktion aufgerufen werden.

So die Theorie.
 
Clocker 2800+ schrieb:
Kann bitte jemand den Code korrigieren, so wie er meint.

das schaffst du schon selbst, denn alles was in diesem thread steht, ist einfach verständlich und kannst es selbst umsetzen.



HTML:
onsubmit="this.action.value='Bitte Warten...';this.action.disabled=true;zeigeBalken();return true;"

funktioniert schon mal so überhaupt nicht. action.value gibt es nämlich nicht und action.disabled wäre mir auch neu. action erwartet nämlich eine url, wohin die daten gesendet werden und es ist ein einfaches attribut, kein objekt.

desweiteren reicht es aus (bei onsubmit), einfach document.getElementById('ladebalken2').style.display=''; zu schreiben. wenn du einen bitte warten text einbinden willst, musst du ein extra feld/text dafür erschaffen und nicht auf das formular verändern. das return true kannst du ebenso weglassen. es würde auch gehen, wenn du beim submit button ein onclick event eintragen würdest, wie schon richtig erwähnt wurde.

eine dokumentation des <form> tags, gibt es übrigens bei selfhtml.
 
Man kann doch auch die POST und GET-Methode kombinieren.
aus
PHP:
echo '<form method="post" action="'.$_SERVER['PHP_SELF'].' >';
machst du halt
PHP:
 echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'?Var='.$Variabel.' >';
 
action.value gibt es nämlich nicht und action.disabled wäre mir auch neu. action erwartet nämlich eine url, wohin die daten gesendet werden und es ist ein einfaches attribut, kein objekt.

Habe ich auch erst gedacht, allerdings meint er gar nicht das Attribut "action" des form-Objects, sondern das action steht für den Elementnamen des Submit-Buttons. Ob das ganze so funktioniert oder nicht, weiß ich nicht. Allerdings empfehle ich dringend, einen anderen Namen zu verwenden, da action eben auch ein Attribut des form-Objektes ist. Überhaupt ist der gesamte Quelltext verwirrend und nicht gerade wartungsfreundlich. Am besten wäre es natürlich, PHP, HTML und JS-Code strikt in verschiedenen Dateien zu speichern. Wem das zuviel Aufwand ist, der sollte den Code doch zumindest innerhalb der Datei trennen. HTML-Code, dann mittendrin die Definition einer JS-Funktion, dann wieder HTML-Code usw. ist ein absolutes NoGo.
 
Zuletzt bearbeitet:
Habe ich auch erst gedacht, allerdings meint er gar nicht das Attribut "action" des form-Objects, sondern das action steht für den Elementnamen des Submit-Buttons. Ob das ganze so funktioniert oder nicht, weiß ich nicht.

ich hab jetzt den namen von "action" in "hochladen" geändert.

/edit:
Ich habs jetzt hinbekommen, dass sich der "hochladen-Button" nicht deaktiviert, sondern nur ausgeblendet wird.

Dadurch geht das ganze Script wieder.

Wäre aber trotzdem besser, wenn man den Button deaktivieren könnte.

P.S.
Kann man eigentlich die Upload-Felder (Textfeld mit Durchsuchen-Button) irgendwie deaktivieren, ausblenden, .. ?
 
Zuletzt bearbeitet:
Zurück
Oben