php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.06.2007, 19:40  
Neuer Benutzer
 
Registriert seit: 20.06.2007
Beiträge: 7
shyrin
Standard Problem mit Fileupload (2 Bilder), Pfadübergabe an Mysql-DB

Hallo erstmal, ich habe nach einem PHP-Anfängerforum gegoogelt und bin hier gelandet. Ich hoffe ihr könnt mir weiterhelfen...

Das Problem ist folgendes: Ich möchte per Formular zwei Bilder uploaden, in einen Webordner verschieben und den Pfad in der DB speichern. Mit dem Formular werden auch noch andere Werte mitübergeben.
Eigentlich funktioniert fast alles, bis auf den Dateiupload...

Ich hab als Code:

if (isset($_FILES['photo1'])) {
echo 'Dateiname: ' . htmlspecialchars($_FILES['photo1']['name']);
echo '
temporärer Dateiname: ' . htmlspecialchars($_FILES['photo1']['tmp_name']);
echo '
Dateigröße: ' . $_FILES['photo1']['size'];
echo '
MIME-Typ: ' . $_FILES['photo1']['type'];

move_uploaded_file($_FILES['photo1']['tmp_name'],
'images/' . basename($_FILES['photo1']['name']));
}

(Die echo Ausgabe von Namen, Size und MIME Typ sind nur temporär um zu sehen, was überhaupt gemacht wird. Das schnmeiß ich dann raus)
Im Formular:

<input type="file" name="photo1" id="photo1" />

Als ich statt 'photo1' noch 'datei' als Name hatte (und natürlich oben im PHP CODE auch jeweils), hat wenigstens das Speichern im Verzeichnis noch funktioniert, nachdem ich alles ersetzt hatte nicht mehr;(
Aber man muss die Bezeichnung doch ändern können? Ich will ja schließlich 2 bilder hochladen?

Was von vornherein nicht klappte, ist die Datenbankübergabe.
Ich schreibe die anderen Werte nach dem Muster:
(htmlentities($_POST['wert']) in die DB.

und jetzt ne ganz blöde Frage: Warum kann ich den Dateinamen nicht einfach als ($_FILES['photo1']['name'])
übergeben? Ich meine, dass gibt doch genau den Wert aus, den ich Will?

Ich glaube, ich habe irgendwo nen Denkfehler

Danke schonmal
Greetings
Shy
shyrin ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.06.2007, 20:41  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo shyrin,

zunächst herzlich willkommen im phpfriend.de-Forum!

Hast du im Formular das Attribut "enctype" gesetzt? Falls nein, wird dein Browser auch keine Binärdaten im Protokoll mitsenden. Für das Debugging kannst du dir mit var_dump() das $_FILES-Array in deinem Script ausgeben lassen und dann siehst du, was passiert.

Ob eine Datei hochgeladen wurde sollte man allerdings mit

PHP-Code:
<?php
if(is_uploaded_file($_FILES['photo1']['tmp_name'])){
 
//
}
?>
abfragen. Siehe hierzu auch http://de.php.net/manual/en/function...oaded-file.php.

Solltest du nicht weiterkommen, meld dich einfach nochmal.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 20.06.2007, 20:45  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Hallo Shyrin,

willkommen hier im Forum.

Für einen erfolgreichen Upload ist es wichtig, das Formular selbst richtig zu basteln. Das zeigst Du uns leider nicht. Daher können wir dazu nicht viel sagen.
Wichtig ist, dass
Code:
enctype="multipart/form-data"
mit drinsteht.

Um Den Code-Schnipsel, den Du gepostet hast, lesbar zu machen, solltest Du ihn in PHP-Tags setzen. Dazu ist der PHP-Button über dem Eingabefeld gedacht. Sollte das (mangels aktiviertem Javascript) nicht funktionieren, dann pack den Code einfach in [ php] [ /php] ein. Die Leerzeichen müssen dabei aber weggelassen werden.


Was Du mit dem Eintragen in die DB und mit dem direkten Angeben des Dateinamen meinst, ist mir jetzt gerade nicht so ganz klar.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 20.06.2007, 21:20  
Neuer Benutzer
 
Registriert seit: 20.06.2007
Beiträge: 7
shyrin
Standard

oh, danke erstmal für die schnellen Antworten.

@dr.e: enctype ist gesetzt
PHP-Code:
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" enctype="multipart/form-data">
das merkwürdige war, dass bevor ich alle Einträge 'datei' mit 'photo1' ersetzt habe, die Bilder immerhin im Verzeichnis angekommen sind. Ich meine ich hab doch nur die Namen ausgetauscht *grübel*
Aber ich bau die Abfrage natürlich mit ein...

@Der_Gerhard: das ganze Skript hat um die 300 Zeilen, daher dachte ich, das wäre zu groß fürs Forum. Wenn das in Ordnung ist, kann ich gern noch das komplette Skript posten?

mit dem Eintragen in die DB und mit dem direkten Angeben des Dateinamen meine ich folgendes:

ich möchte ja nur den Dateinamen in die Datenbank geschrieben haben. Mit "($_FILES['photo1']['name'])" wird doch genau dieser ausgegeben. Warum kann ich dann nicht den Dateinamen an die Datenbank übergeben, indem ich sage insert in DB Feldname value ($_FILES['photo1']['name'])?
Und was muss ich stattdessen nehmen?
shyrin ist offline  
Alt 20.06.2007, 21:26  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Ich hab ja eigentlich erstmal nur nach dem Formular gefragt. Das ist hoffentlich keine 300 Zeilen lang.
Du hast Recht, das wäre wirklich etwas arg lang um es zu posten.

Das Eintragen in die DB müsste schon so funktionieren. Hier bräuchten wir aber doch mal etwas Code. Du kannst ja sicher den relevanten Teil herausnehmen und hier posten.

Wichtiger ist allerdings der Inhalt von $_FILES, wie dr. e schon geschrieben hat.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 20.06.2007, 21:48  
Neuer Benutzer
 
Registriert seit: 20.06.2007
Beiträge: 7
shyrin
Standard

aber klar doch

Part der für Photo1 relevant ist (photo2 kommt später^^):

PHP-Code:
  if (isset($_FILES['photo1'])) {
    echo 
'Dateiname: ' htmlspecialchars($_FILES['photo1']['name']);
    echo 
'
tempor&auml;rer Dateiname: ' 
htmlspecialchars($_FILES['photo1']['tmp_name']);
    echo 
'
Dateigr&ouml;&szlig;e: ' 
$_FILES['photo1']['size'];
    echo 
'
MIME-Typ: ' 
$_FILES['photo1']['type'];



    
move_uploaded_file($_FILES['photo1']['tmp_name'],
      
'images/' basename($_FILES['photo1']['name']));
  } 
Eintrag in die Datenbank:

PHP-Code:
// schreibe Felder in Datenbank
    
$db mysql_connect('localhost''******''******') OR die("Keine Verbindung:".mysql_error());
    
$database 'zominthos';
    
$table 'funde';
    
mysql_select_db($database) OR die("Konnte Datenbank nicht benutzen: ".mysql_error());
    
$sql "INSERT
             INTO $table (find, classify, quadrant, room, trench, unit, layer, fdate, xcoord, ycoord, zcoord, photo1, photo2, name, description)
             VALUES
                                          ('"
.addslashes(htmlentities($_POST['find']))."',
                          '"
.addslashes(htmlentities($_POST['classify']))."',
                          '"
.addslashes(htmlentities($_POST['quadrant']))."',
                          '"
.addslashes(htmlentities($_POST['room']))."',
                          '"
.addslashes(htmlentities($_POST['trench']))."',
                          '"
.addslashes(htmlentities($_POST['unit']))."',
                          '"
.addslashes(htmlentities($_POST['layer']))."',
                          '"
.addslashes(htmlentities($_POST['fdate']))."',
                          '"
.addslashes(htmlentities($_POST['xcoord']))."',
                          '"
.addslashes(htmlentities($_POST['ycoord']))."',
                          '"
.addslashes(htmlentities($_POST['zcoord']))."',
                          '"
.addslashes(htmlentities($_FILES['photo1']['name']))."',
                          '"
.addslashes(htmlentities($_POST['photo2']))."',
                          '"
.addslashes(htmlentities($_POST['name']))."',
                          '"
.addslashes(htmlentities($_POST['description']))."')";


    
mysql_query($sql$db) OR die("Cannot write into Database:".mysql_error());
    
mysql_close($db); 
Relevanter Teil aus dem Formular:

PHP-Code:
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" enctype="multipart/form-data">

    <label for="photo1">Name of Picture</label>
      <input type="file" name="photo1" id="photo1" />

<input type="image" style="WIDTH:22" WIDTH="22" style="HEIGHT:22" HEIGHT="22" value="submit" name="submit" src="../images/button_ok.png">
shyrin ist offline  
 


Themen-Optionen
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Galerie - Bilder nebeneinander Problem noOx PHP Tipps 2008 14 03.07.2008 23:48
MySQL Problem fkrauthan PHP-Fortgeschrittene 5 25.01.2008 18:18
mysql problem mit LIKE und AND kazuya Datenbanken 10 29.10.2007 21:36
MySQL kodierungs problem Mutatos Datenbanken 0 12.05.2006 20:02
MySQL Problem mit INSERT-Queries Arno Nühm Datenbanken 10 07.04.2006 16:46
Serverumzug - Problem mit MySQL Daten [GE]ReeN Datenbanken 6 28.03.2006 17:02
Mysql / Array Problem marcels PHP Tipps 2006 10 23.03.2006 18:30
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
[Erledigt] MYSQL Problem Datenbanken 4 09.02.2006 15:14
[Erledigt] Problem mit Sonderzeichen PHP -&gt; MySQL -&gt; HTML PHP Tipps 2007 18 07.12.2005 15:23
[Erledigt] Problem beim verbindungsaufbau zum Mysql Server Datenbanken 9 27.10.2005 11:27
Problem mit IIS6 und PHPMyAdmin PHP Tipps 2005-2 4 18.07.2005 21:58
[Erledigt] mysql installations problem Datenbanken 4 16.02.2005 18:46
Problem mit Fileupload PHP-Fortgeschrittene 4 18.08.2004 13:33
[Erledigt] Problem mit PHP und MYSQL Datenbanken 6 01.08.2004 05:59

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
bei fileupload dateinamen in datenbank speichern php, php upload für bilder in webordner, formular für pfadübergabe html

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.