Antworten auf deine Fragen:
Neues Thema erstellen

php + mysql: bildupload in ext. verzeichnis + bildnamen in datenbank speichern, wie?

sphinxxx

Noch nicht viel geschrieben

AW: php + mysql: bildupload in ext. verzeichnis + bildnamen in datenbank speichern, w

hi paric,

verstehe ich nicht so ganz. denn ich habe ein anderes script, mit dem ich die datenbank meines profs ganz wunderbar mit sql und php und natürlich mit hilfe der verbindungsdaten auslesen kann, und mit dem oben veröffentlichten script kann ich der datenbank auch neue einträge hinzufügen (nur der bilderupload in das externe verzeichnis klappt halt nicht (s.o.)....

grüße,

lara
 

dlogic

Allrounder

AW: php + mysql: bildupload in ext. verzeichnis + bildnamen in datenbank speichern, w

hi paric,

verstehe ich nicht so ganz. denn ich habe ein anderes script, mit dem ich die datenbank meines profs ganz wunderbar mit sql und php und natürlich mit hilfe der verbindungsdaten auslesen kann, und mit dem oben veröffentlichten script kann ich der datenbank auch neue einträge hinzufügen (nur der bilderupload in das externe verzeichnis klappt halt nicht (s.o.)....

grüße,

lara

Ja, das ist richtig. Man kann sich mit einer DB über ein Script verbinden welches wo anders gehostet ist. Das hängt jedoch u.a. auch vom jeweiligen Provider ab ob er Verbindungen von aussen zu lässt oder nicht. Gegensatz zu dem Dateiupload verbindest du dich ja mit der DB über die Verbindungsparameter worüber deine Rechte in der DB hinterlegt sind. Du kannst z.B. ja auch Daten von mehreren DB's für deine Homepage ziehen.

Das selbe müsstest du auch für den Ordner auf dem anderen System machen. Das geht wohl nur über ftp Befehle... bin mir hier aber nicht so sicher wie man das macht da ich hiermit noch keine Erfahrungen habe.

Hinweis:
 
T

Toormser

Guest

AW: php + mysql: bildupload in ext. verzeichnis + bildnamen in datenbank speichern, w

Danke richtigen Denkanstoss bekommen in dem Topic.
 
R

richy149

Guest

AW: php + mysql: bildupload in ext. verzeichnis + bildnamen in datenbank speichern, w

Hi,
ich habe eine ähnliches Script Problem.
Ich habe ein Upload-Formuluar gestaltet, wo User Ihren Namen, Ihre Mail und eben eine Foto uploaden können.
Diese Daten werden in einen SQL DB gespeichert. Das funktioniert auch alles - bis eben auf den Dateinamen der hochgeladenen Datei, dieses Feld in der SQL-DB bleibt leer.
Ich hab das ganze mit dem phpFormGenerator erstellt. Vielleicht kann mir hier jemand helfen. Ich bin was PHP & SQL angeht nicht sehr bewandert ;)

Das hochladen der Datei selbst klappt. Aber der Dateiname wird nicht gespeichert.

Meine form.html
HTML:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
        <title>Upload - created by phpFormGenerator</title>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8"><link href="style.css" rel="stylesheet" type="text/css">
        <!-- calendar stuff -->
              <link rel="stylesheet" type="text/css" href="calendar/calendar-blue2.css" />
              <script type="text/javascript" src="calendar/calendar.js"></script>
              <script type="text/javascript" src="calendar/calendar-en.js"></script>
              <script type="text/javascript" src="calendar/calendar-setup.js"></script>
        <!-- END calendar stuff -->

        <!-- expand/collapse function -->
        <SCRIPT type=text/javascript>
        <!--
        function collapseElem(obj)
        {
            var el = document.getElementById(obj);
            el.style.display = 'none';
        }


        function expandElem(obj)
        {
            var el = document.getElementById(obj);
            el.style.display = '';
        }


        //-->
        </SCRIPT>
        <!-- expand/collapse function -->


        <!-- expand/collapse function -->
            <SCRIPT type=text/javascript>
            <!--

            // collapse all elements, except the first one
            function collapseAll()
            {
                var numFormPages = 1;

                for(i=2; i <= numFormPages; i++)
                {
                    currPageId = ('mainForm_' + i);
                    collapseElem(currPageId);
                }
            }


            //-->
            </SCRIPT>
        <!-- expand/collapse function -->


         <!-- validate -->
        <SCRIPT type=text/javascript>
        <!--
            function validateField(fieldId, fieldBoxId, fieldType, required)
            {
                fieldBox = document.getElementById(fieldBoxId);
                fieldObj = document.getElementById(fieldId);

                if(fieldType == 'text'  ||  fieldType == 'textarea'  ||  fieldType == 'password'  ||  fieldType == 'file'  ||  fieldType == 'phone'  || fieldType == 'website')
                {    
                    if(required == 1 && fieldObj.value == '')
                    {
                        fieldObj.setAttribute("class","mainFormError");
                        fieldObj.setAttribute("className","mainFormError");
                        fieldObj.focus();
                        return false;                    
                    }

                }


                else if(fieldType == 'menu'  || fieldType == 'country'  || fieldType == 'state')
                {    
                    if(required == 1 && fieldObj.selectedIndex == 0)
                    {                
                        fieldObj.setAttribute("class","mainFormError");
                        fieldObj.setAttribute("className","mainFormError");
                        fieldObj.focus();
                        return false;                    
                    }

                }


                else if(fieldType == 'email')
                {    
                    if((required == 1 && fieldObj.value=='')  ||  (fieldObj.value!=''  && !validate_email(fieldObj.value)))
                    {                
                        fieldObj.setAttribute("class","mainFormError");
                        fieldObj.setAttribute("className","mainFormError");
                        fieldObj.focus();
                        return false;                    
                    }

                }



            }

            function validate_email(emailStr)
            {        
                apos=emailStr.indexOf("@");
                dotpos=emailStr.lastIndexOf(".");

                if (apos<1||dotpos-apos<2) 
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }


            function validateDate(fieldId, fieldBoxId, fieldType, required,  minDateStr, maxDateStr)
            {
                retValue = true;

                fieldBox = document.getElementById(fieldBoxId);
                fieldObj = document.getElementById(fieldId);    
                dateStr = fieldObj.value;


                if(required == 0  && dateStr == '')
                {
                    return true;
                }


                if(dateStr.charAt(2) != '/'  || dateStr.charAt(5) != '/' || dateStr.length != 10)
                {
                    retValue = false;
                }    

                else    // format's okay; check max, min
                {
                    currDays = parseInt(dateStr.substr(0,2),10) + parseInt(dateStr.substr(3,2),10)*30  + parseInt(dateStr.substr(6,4),10)*365;
                    //alert(currDays);

                    if(maxDateStr != '')
                    {
                        maxDays = parseInt(maxDateStr.substr(0,2),10) + parseInt(maxDateStr.substr(3,2),10)*30  + parseInt(maxDateStr.substr(6,4),10)*365;
                        //alert(maxDays);
                        if(currDays > maxDays)
                            retValue = false;
                    }

                    if(minDateStr != '')
                    {
                        minDays = parseInt(minDateStr.substr(0,2),10) + parseInt(minDateStr.substr(3,2),10)*30  + parseInt(minDateStr.substr(6,4),10)*365;
                        //alert(minDays);
                        if(currDays < minDays)
                            retValue = false;
                    }
                }

                if(retValue == false)
                {
                    fieldObj.setAttribute("class","mainFormError");
                    fieldObj.setAttribute("className","mainFormError");
                    fieldObj.focus();
                    return false;
                }
            }
        //-->
        </SCRIPT>
        <!-- end validate -->




    </head>

    <body onLoad="collapseAll()">

    <div id="mainForm">




        <div id="formHeader">
                <h2 class="formInfo">Upload</h2>
                <p class="formInfo">1...2...3... mein Genussklick:
So einfach kann gewinnen sein! </p>
        </div>


        <BR/><!-- begin form -->
        <form method=post enctype=multipart/form-data action=processor.php onSubmit="return validatePage1();"><ul class=mainForm id="mainForm_1">

                <li class="mainForm" id="fieldBox_1">
                    <label class="formFieldQuestion">Name&nbsp;*</label><input class=mainForm type=text name=field_1 id=field_1 size='20' value=''></li>

                <li class="mainForm" id="fieldBox_2">
                    <label class="formFieldQuestion">E-Mail&nbsp;*</label><input class=mainForm type=email name=field_2 id=field_2 size=20 value="" style="background-image:url(imgs/email.png); background-repeat: no-repeat;  padding: 2px 2px 2px 25px;"></li>

                <li class="mainForm" id="fieldBox_3">
                    <label class="formFieldQuestion">Bild-Upload&nbsp;*</label><input class=mainForm type=file name=field_3 id=field_3 value=""></li>

                <li class="mainForm" id="fieldBox_4">
                    <label class="formFieldQuestion">Ich bin der Urheber des Bildes und erteile dem Sigibaldus e.V. die Nutzungsrechte&nbsp;*</label><span><input class=mainForm type=checkbox name=field_4[] id=field_4_option_1 value="Ja" /><label class=formFieldOption for="field_4_option_1">Ja</label></span></li>
        
        
        <!-- end of this page -->

        <!-- page validation -->
        <SCRIPT type=text/javascript>
        <!--
            function validatePage1()
            {
                retVal = true;
                if (validateField('field_1','fieldBox_1','text',1) == false)
 retVal=false;
if (validateField('field_2','fieldBox_2','email',1) == false)
 retVal=false;
if (validateField('field_3','fieldBox_3','file',1) == false)
 retVal=false;
if (validateField('field_4','fieldBox_4','checkbox',1) == false)
 retVal=false;

                if(retVal == false)
                {
                    alert('Please correct the errors.  Fields marked with an asterisk (*) are required');
                    return false;
                }
                return retVal;
            }
        //-->
        </SCRIPT>

        <!-- end page validaton -->



        <!-- next page buttons --><li class="mainForm">
                    <input id="saveForm" class="mainForm" type="submit" value="Submit" />
                </li>

            </form>
            <!-- end of form -->
        <!-- close the display stuff for this page -->
        </ul></div><div id="footer"><p class="footer"><a class=footer href=http://phpformgen.sourceforge.net>Generated by phpFormGenerator</a></p></div>

    </body>
    </html>
Meine processer.php
PHP:
<?php

$where_form_is="http://".$_SERVER['SERVER_NAME'].strrev(strstr(strrev($_SERVER['PHP_SELF']),"/"));

// File upload handling
if($_FILES['field_3']['name']!=''){
$field_3_filename = "file_3_".date("sihdmY").substr($_FILES['field_3']['name'],strlen($_FILES['field_3']['name'])-4);
if(!move_uploaded_file($_FILES['field_3']['tmp_name'], "./files/".$field_3_filename)){
die("File " .  $_FILES['field_3']['name'] . " was not uploaded.");
}
}

// Checkbox handling
$field_4_opts = $_POST['field_4'][0];

include("config.inc.php");
$link = mysql_connect($db_host,$db_user,$db_pass);
if(!$link) die ('Could not connect to database: '.mysql_error());
mysql_select_db($db_name,$link);
$query = "INSERT into `".$db_table."` (field_1,field_2,field_3,field_4) VALUES ('" . $_POST['field_1'] . "','" . $_POST['field_2'] . "','" . $_POST['field_3'] . "','" . $_POST['field_4'] . "')";
mysql_query($query);
mysql_close($link);

include("confirm.html");

?>
SQL-Struktur:
 
Zuletzt bearbeitet von einem Moderator:

dlogic

Allrounder

AW: php + mysql: bildupload in ext. verzeichnis + bildnamen in datenbank speichern, w

In welchem Feld der Datenbank soll denn der Dateiname, welcher sich aus
PHP:
$field_3_filename
ergibt gespeichert werden und welche Varibale beliefert deiner Meinung nach den bisherigen Wert für dieses Feld?
 

Duddle

Posting-Frequenz: 14µHz

AW: php + mysql: bildupload in ext. verzeichnis + bildnamen in datenbank speichern, w

Du kannst ruhig neue Threads starten, dann ist es für andere einfacher, den Überblick zu wahren.

Füge mal nach
PHP:
$query = "INSERT into `".$db_table."` (field_1,field_2,field_3,field_4) VALUES ('" . $_POST['field_1'] . "','" . $_POST['field_2'] . "','" . $_POST['field_3'] . "','" . $_POST['field_4'] . "')";
die Zeile
PHP:
 echo $query;
ein und führe einen Upload aus. Dir sollte eine Zeile mit "INSERT ..." angezeigt werden.

Wenn dort die Daten korrekt eingetragen sind, geh in phpMyAdmin und führe die SQL-Anfrage manuell aus (es gibt im PMA links oben einen Knopf dafür). Dort solltest du einen Fehler erhalten. Wenn du ihn nicht verstehst, poste ihn hier.

Wenn die Daten im ausgegebenen INSERT schon falsch sind, ist vorher schon etwas falsch.


Duddle
 
R

richy149

Guest

AW: php + mysql: bildupload in ext. verzeichnis + bildnamen in datenbank speichern, w

Die Zeile mit INSERT erscheint:

Code:
INSERT into `uploads` (field_1,field_2,field_3,field_4) VALUES ('NAME','name@mail.de','','Array')

Dort wo aber der Dateiname stehen sollte ist eben " also leer.
 

dlogic

Allrounder

AW: php + mysql: bildupload in ext. verzeichnis + bildnamen in datenbank speichern, w

aha.... also wird field_3 keinen Wert enthalten und field_4 ein Array.
field_3 ist das upload Feld für das Image (name=field_3) und der Inhalt wird per POST an das Verarbeitungsscript in processer.php in die Variable $field_3_filename gelegt. Hier wird dann der neue Name für die Datei festgelegt... somit muss der Inhalt der Variablen $field_3_filename an den SQL String weitergegeben werden.
 
R

richy149

Guest

AW: php + mysql: bildupload in ext. verzeichnis + bildnamen in datenbank speichern, w

Jepp field_3 ist das upload Feld für das Image. Wie genau gebe ich dann die Variable an den SQL String weiter
 

Duddle

Posting-Frequenz: 14µHz

AW: php + mysql: bildupload in ext. verzeichnis + bildnamen in datenbank speichern, w

Hmmm, bei mir landet der Name der Datei trotzdem in $_POST['field_3'], aber laut anderen Quellen steht er nur in $_FILES. Naja, du kannst jedenfalls deinen Code so ändern: wenn du den neuen Dateinamen willst, so wie ihn der Server abgespeichert hat, musst du
PHP:
 $query = "INSERT into `".$db_table."` (field_1,field_2,field_3,field_4) VALUES ('" . $_POST['field_1'] . "','" . $_POST['field_2'] . "','" . $field_3_filename . "','" . $_POST['field_4'] . "')";
nehmen, bzw.
PHP:
 $query = "INSERT into `".$db_table."` (field_1,field_2,field_3,field_4) VALUES ('" . $_POST['field_1'] . "','" . $_POST['field_2'] . "','" . "./files/".$field_3_filename . "','" . $_POST['field_4'] . "')";
falls du den Pfad mit Unterverzeichnis willst.

Falls du lieber den originalen Dateinamen speichern möchtest, brauchst du
PHP:
 $query = "INSERT into `".$db_table."` (field_1,field_2,field_3,field_4) VALUES ('" . $_POST['field_1'] . "','" . $_POST['field_2'] . "','" . $_FILES['field_3']['name'] . "','" . $_POST['field_4'] . "')";

Der Generator scheint allgemein fehlerhaft zu sein, du willst ja in Feld 4 sicher wissen ob die Checkbox aktiv war. In dem Fall müsstest du das $_POST['field_4'] im Query durch $field_4_opts ersetzen.


Duddle
 
R

richy149

Guest

AW: php + mysql: bildupload in ext. verzeichnis + bildnamen in datenbank speichern, w

Super! So klappts. Großen dank an euch Zwei. :)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.613
Beiträge
1.538.345
Mitglieder
67.524
Neuestes Mitglied
BSKGA
Oben