 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
25.01.2005, 01:58
|
#1
|
|
TP-Senior
Registriert seit: May 2004
|
Upload - Ist File vorhanden?
Okay, Sorry, dass hier die n-te Frage zum Thema Upload steht. Mein Upload funktioniert eigentlich!  Ich habe jetzt aber eine Edit-Funktion im Sinn. Dort werden mir alle Daten meiner Auswahl angezeigt und auch das dazu gehörige Bild. Zudem ist noch ein
PHP-Code:
<input name="userFile\" type=\"file\">
vorhanden. Und ein
PHP-Code:
<input type="hidden\" name=\"altesfoto\" value=\"$altfoto\">
Letzteres ist dazu da, falls kein neues Bild hochgeladen wird, dann soll das alte Foto mit update (zusammen mit den anderen neuen/oder auch alten) (Text-)Daten in die DB eingetragen werden. Dazu muss ich bei der Übergabe der Daten schauen, ob das input-Feld leer ist. Bevor ich mich ins Eingemachte stürze, habe ich mir erst einmal einen kleinen Test geschrieben:
PHP-Code:
if (isset($_POST['mode']) && $_POST['mode'] == "store_edit"){
$tempName = $_FILES['userFile']['tmp_name'];
echo $tempName;
if(isset($_FILES['userFile']['tmp_name'])){
echo "ein neues bild";
}else{
echo "kein neues bild";
}
echo "\n<br>\n";
echo $neutext;
echo "\n<br>\n";
echo "$altesfoto";
}
*hmm* Also, der Modus wird übergeben, er rutscht in die erste Schleife rein. Dann gibt er mir unten auch den $neutext aus und das $altesfoto. Außerdem rutscht er oben in die else-Anweisung rein und gibt mir ein "kein neues bild" aus. Dabei ist es egal, ob ich ein neues Bild mitgeschickt habe oder nicht. Ein Ändern in $_FILES['userFile']['name'] hat auch nichts gebracht. Wie kann ich eine Abfrage gestalten, die mir anzeigt, ob in dem Upload-Feld eine Datei ausgewählt (und somit mitgeschickt) wurde? Ach so, $tempName zeigt er mir auch nicht an...
Und überhaupt: Wenn ich einen Upload mache, dann landet meine Datei doch mit einem temporären Namen (tmp_name) in dem Temp-Verzeichnis des Servers, oder? Es ist noch nicht in einem Ordner. Zumal ich an dieser Stelle noch keinen Speicherordner angegeben habe. Das kommt erst später. Doch erst einmal (viel wichtiger  ) die obere Frage nach dem "Wie stelle ich fest, ob in dem input etwas war?".
Grüße in die Nacht (oder den Morgen...  )
M.
__________________
<< Meine Ankunft war zeitlich schlecht gewählt...>>
|
|
|
25.01.2005, 13:48
|
#2
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
|
Zitat:
|
Wie kann ich eine Abfrage gestalten, die mir anzeigt, ob in dem Upload-Feld eine Datei ausgewählt (und somit mitgeschickt) wurde? Ach so, $tempName zeigt er mir auch nicht an...
|
PHP-Code:
echo isset( $_FILES['userFile'] ) ? "Neue Datei wurde hochgeladen" : "Keine Neue Datei Wurde Hochgeladen";
Zitat:
|
Und überhaupt: Wenn ich einen Upload mache, dann landet meine Datei doch mit einem temporären Namen (tmp_name) in dem Temp-Verzeichnis des Servers, oder?
|
In der Theorie schon. Nur - manchmal hat man das unwohle Gefühl, dass der nur im Speicher verbleibt, bis die Seite gekillt wird.
Btw.: Dein Ausslashen der Double Quotes scheint nicht ganz richtig zu sein:
Code:
//Original
<input name="userFile\" type=\"file\">
Muss entweder:
PHP-Code:
echo "<input name=\"userFile\" type=\"file\">";
//oder
echo '<input name="userFile" type="file">';
//oder
?>
<input name="userFile" type="file">
<?php
heißen!
__________________
Zwei Dinge sind Unbestreitbar:- In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
- Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
|
|
|
25.01.2005, 14:25
|
#3
|
|
TP-Senior
Registriert seit: May 2004
|
Hi Dennis. Danke für die Antwort. Aber leider ist es das noch nicht!  Das mit dem Ausslashen war nur ein Tipp-Fehler im Forum, nicht im Script.
Zitat:
|
echo isset( $_FILES['userFile'] ) ? "Neue Datei wurde hochgeladen" : "Keine Neue Datei Wurde Hochgeladen";
|
Da rutscht er mir immer in die "Ist keine neue Datei"-Schleife rein - egal, ob ein Bild dabei ist oder nicht. An dieser Stelle würde ich gerne einen heulenden Smiley einbauen...  Ein $_FILES['userFile']['tmp_name'] (man kann ja nie wissen...) hat ebenfalls nichts gebracht.
__________________
<< Meine Ankunft war zeitlich schlecht gewählt...>>
|
|
|
26.01.2005, 00:18
|
#4
|
|
TP-Senior
Registriert seit: May 2004
|
So. Habe mal in dem Teil, das die Daten aufnehem soll folgendes geschrieben:
PHP-Code:
echo "<pre>";
print_r($_FILES);
echo "</pre>";
Die Ausgabe (egal ob mit upgeloadetem Bild oder ohne) lautet immer: Was soll mir das sagen? Es kann mir bestimmt was sagen, doch was? 
__________________
<< Meine Ankunft war zeitlich schlecht gewählt...>>
|
|
|
26.01.2005, 00:32
|
#5
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
|
Das er keine Datei hochgeladen hat?
Du müsstest mal das komplette Problemskript (alles unwichtige kürzen) posten; sonst raten wir hier noch eine ganze Woche rum^^
__________________
Zwei Dinge sind Unbestreitbar:- In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
- Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
|
|
|
26.01.2005, 01:49
|
#6
|
|
TP-Senior
Registriert seit: May 2004
|
Na, das wäre doch 'ne schöne Beschäftigungsmaßnahme..  Okay, hier die beiden Files. Das erste wird aufgerufen, wenn ich aus allen vorhandenen Datensätzen eine Auswahl getroffen habe. Dann werden mir die ausgewählten Daten angezeigt und ich kann Änderungen vornehmen. Das klappt alles. Nur dieses &$@%#*§ Bild-Upload, das mag mich nicht...  Es soll geschaut werden, ob ein neues Bild hochgeladen wurde. Wenn ja, dann soll das Bild in die DB eingetragen werden (Bild in Ordner, Pfad in DB...). Wenn kein neues Bild "mitgeliefert" wurde, dann soll der alte Pfad (und das alte Bild) beibehalten bleiben. Daher das hidden input-Feld mit dem Foto (direkt über dem Absende-Button). Das mode=edit2 kommt vom ersten, dem "Auswahl-treffen"-Skript. Also hier Skript 1:
PHP-Code:
<table border="0" cellspacing="1" cellpadding="4" align="left">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>?mode=store_edit" method="post" name="signForm">
<input type="hidden" name="mode" value="store_edit">
<tr>
<td>
<div align="left">
<?php
// verbindungsdaten holen
include ('mySQL.inc.php');
//verbindung herstellen
$conn = mysql_connect($db_server,$db_user,$db_passwort) or die (mysql_error());
$link = mysql_select_db($db_name, $conn) or die (mysql_error());
// mysql-anweisungen
$sqlab = "select * from tabellenname where";
$sqlab .= " ID = '$auswahl'";
$res = mysql_db_query($db_name, $sqlab);
// "zwischenspeichern" der ausgelesenen werte
$altname = mysql_result($res, 0, "nname") or die (mysql_error());
$altvname = mysql_result($res, 0, "vname");
$altgeburtsjahr = mysql_result($res, 0, "gebjahr");
$alttext = mysql_result($res, 0, "text") or die (mysql_error());
$altfoto = mysql_result($res, 0, "bild");
$fotoname = substr($altfoto,14);
if (isset($_POST['mode']) && $_POST['mode'] == "edit2"){
//feldbezeichnungen
$feld1 = "Nachname";
$feld2 = "Vorname";
$feld3 = "Geburtsjahr";
$feld4 = "Beschreibung";
$feld5 = "Foto";
echo("\n\t\t\t\t<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"4\">" .
"\n\t\t\t\t\t<tr>" .
"\n\t\t\t\t\t\t<td>" .
"\n\t\t\t\t\t\tNachname" .
"\n\t\t\t\t\t\t</td>" .
"\n\t\t\t\t\t\t<td>" .
"\n\t\t\t\t\t\t<input name=\"neuname\" value=\"$altname\">" .
"\n\t\t\t\t\t\t</td>" .
"\n\t\t\t\t\t</tr>" .
"\n\t\t\t\t\t<tr>" .
"\n\t\t\t\t\t\t<td>" .
"\n\t\t\t\t\t\tVorname" .
"\n\t\t\t\t\t\t</td>" .
"\n\t\t\t\t\t\t<td>" .
"\n\t\t\t\t\t\t<input name=\"neuvname\" value=\"$altvname\">" .
"\n\t\t\t\t\t\t</td>" .
"\n\t\t\t\t\t</tr>" .
"\n\t\t\t\t\t<tr>" .
"\n\t\t\t\t\t\t<td>" .
"\n\t\t\t\t\t\tGeburtsjahr" .
"\n\t\t\t\t\t\t</td>" .
"\n\t\t\t\t\t\t<td>" .
"\n\t\t\t\t\t\t<input name=\"neugeburtsjahr\" value=\"$altgeburtsjahr\">" .
"\n\t\t\t\t\t\t</td>" .
"\n\t\t\t\t\t</tr>" .
"\n\t\t\t\t\t<tr>" .
"\n\t\t\t\t\t\t<td>" .
"\n\t\t\t\t\t\tBeschreibung" .
"\n\t\t\t\t\t\t</td>" .
"\n\t\t\t\t\t\t<td>" .
"\n\t\t\t\t\t\t<textarea name=\"neutext\" cols=\"60\" rows=\"9\" wrap=\"virtual\">" . $alttext . "</textarea>" .
"\n\t\t\t\t\t\t</td>" .
"\n\t\t\t\t\t</tr>" .
"\n\t\t\t\t\t<tr>" .
"\n\t\t\t\t\t\t<td>" .
"\n\t\t\t\t\t\tFoto" .
"\n\t\t\t\t\t\t</td>" .
"\n\t\t\t\t\t\t<td>" .
"\n\t\t\t\t\t\t<img src=\"" . $altfoto . "\" height=\"75\" width=\"60\"> Original Bild-Name: <b>". $fotoname."</b>" .
"\n\t\t\t\t\t\t</td>" .
"\n\t\t\t\t\t</tr>" .
"\n\t\t\t\t\t<tr>" .
"\n\t\t\t\t\t\t<td>" .
"\n\t\t\t\t\t\t<input name=\"userFile\" type=\"file\">" .
"\n\t\t\t\t\t\t</td>" .
"\n\t\t\t\t\t</tr>" .
"\n\t\t\t\t\t<tr>" .
"\n\t\t\t\t\t\t<td colspan=\"2\" align=\"right\">" .
"\n\t\t\t\t\t\t<input type=\"hidden\" name=\"zuaendern\" value=\"$auswahl\">" .
"\n\t\t\t\t\t\t<input type=\"hidden\" name=\"altesfoto\" value=\"$altfoto\">" .
"\n\t\t\t\t\t\t <input type=\"submit\" value=\"Absenden\"> <input type=\"reset\" value=\"Reset\">" .
"\n\t\t\t\t\t\t</td>" .
"\n\t\t\t\t\t</tr>" .
"\n\t\t\t\t</table>\n");
mysql_close($conn);
}
?>
</div>
</td>
</tr>
</form>
</table>
Ich habe also meine Veränderungen getätigt. Nun sollen die Daten in die DB, vorher möchte ich aber den besagten Check machen, ob ein neues oder noch das alte Foto genommen werden soll. Dazu habe ich jetzt einfach einmal einen kleinen Test getippert. Von dort wollte ich mich weiterhangeln. Aber bis jetzt klappt es eben nicht. Ich bekomme kein "Entweder-Oder" hin. *heul* In Skript 2 sind drei Testausgaben. Zwei davon auskommentiert. Alle haben den selben Effekt: Sie machen nichts. Unten sind dann weitere Testausgaben zu sehen. Diese werden von dem Skript davor angenommen und ausgegeben. Es kommt also "etwas rüber".
PHP-Code:
<?php
if (isset($_POST['mode']) && $_POST['mode'] == "store_edit"){
// test 1
//echo $_FILES['userFile']['error']?"Datei wurde übergeben":"Keine Datei übergeben.";
// test 2
//if($_FILES['userFile']['error'] != UPLOAD_ERR_OK)
//echo('Du sollst eine Datei waehlen!');
// test 3
echo "<pre>";
print_r($_FILES);
echo "</pre>";
// mitbringesel (werden ausgegeben)
echo "\n<br>\n";
echo $neutext;
echo "\n<br>\n";
echo $altesfoto;
}
?>
Mein erster Gehversuch war noch mit $_FILES['userFile']['tmp_name']. Ich wollte eben schauen, ob überhaupt irgendwas rübergekommen ist. Nichts.
Ich hatte zunächst eine Abfrage wie:
PHP-Code:
if(isset($_FILES['userFile']['tmp_name'])){
echo "neues bild";
}else{
echo "altes bild";
}
Dabei ist er mir immer in die "altes bild" gerutscht. Doch wir schauen uns jetzt nicht die "alten Sünden" an, sondern den Code von Skript 2.
Hoffe, wir werden nicht eine ganze Woche für den Fehlerteufel brauchen...
M.
__________________
<< Meine Ankunft war zeitlich schlecht gewählt...>>
|
|
|
26.01.2005, 22:53
|
#7
|
|
TP-Senior
Registriert seit: May 2004
|
*räusper* Ich gebe Entwarnung. Ich war so blind und habe in meinem <form>-Tag eine Kleinigkeit vergessen gehabt. Nun klappt es. *puhh* Was ich vergessen hatte? Och, nur so was Lächerliches wie enctype="multipart/form-data" 
__________________
<< Meine Ankunft war zeitlich schlecht gewählt...>>
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 07:46 Uhr.
|
 |