wake-up-neo.com

Wie wird der Dateiname in der Datenbank mit anderen Informationen gespeichert, während das Bild mithilfe von PHP auf den Server hochgeladen wird?

Hallo, ich habe viele Foren und Websites gelesen, auf denen Sie erfahren, wie Sie ein Bild auf einen Server hochladen. Ich habe es geschafft, dies zu aktivieren. Ich kann eine Datei auf einen Server hochladen. Das Speichern des Dateinamens funktioniert jedoch an dem folgenden Beispiel, das ich gefunden habe und ich muss auch ein Formular erstellen, mit dem mehr Daten in die Datenbank eingegeben werden können. Ich bin fest damit beschäftigt, da ich schon viel PHP gemacht habe. Ich habe es geschafft, verschiedene Webseiten-Tutorials auszuprobieren, ohne viel Erfolg. Könnte mir jemand helfen? Ich brauche es für ein Projekt, das ich mache. 

Im Grunde versuche ich, ein CMS zu erstellen, mit dem Benutzer ein Foto eines Bandmitglieds hochladen und Informationen darüber speichern können, damit es auf einer Webseite für die Öffentlichkeit angezeigt werden kann. 


Mein Tisch sieht so aus: 

Field              Type             Null    Default     
id                 int(10)          No                   
nameMember         varchar(25)      No                   
bandMember         text             No                   
photo              varchar(30)      No                   
aboutMember        text             No                   
otherBands         text             No      

Die Form, die ich möchte, wird so aussehen:

   <h1>Adding a new Band Member or Affiliate</h1>
      <form method="post" action="addMember.php" enctype="multipart/form-data">
       <p>
              Please Enter the Band Members Name.
            </p>
            <p>
              Band Member or Affiliates Name:
            </p>
            <input type="text" name="nameMember"/>
            <p>
              Please Enter the Band Members Position. Example:Drums.
            </p>
            <p>
              Member's Position:
            </p>
            <input type="text" name="bandMember"/>
            <p>
              Please Upload a Photo in gif or jpeg format. The file name should be named after the Members name. If the same file name is uploaded twice it will be overwritten!
            </p>
            <p>
              Photo:
            </p>
            <input type="file" name="filep" size=35 />
            <p>
              Please Enter any other information about the band member here.
            </p>
            <p>
              Other Member Information:
            </p>
<textarea rows="10" cols="35" name="aboutMember">
</textarea>
            <p>
              Please Enter any other Bands the Member has been in.
            </p>
            <p>
              Other Bands:
            </p>
            <input type="text" name="otherBands" size=30 />
            <br/>
            <br/>
            <input TYPE="submit" title="Add data to the Database" value="Add Member"/>
          </form>

Das Beispiel, das ein Image auf den Server hochlädt und nur das heißt: 

<?

if ($_POST["action"] == "Load")
{
$folder = "images/";

move_uploaded_file($_FILES["filep"]["tmp_name"] , "$folder".$_FILES["filep"]["name"]);

echo "
<p align=center>File ".$_FILES["filep"]["name"]."loaded...";

$result = mysql_connect("localhost", "******", "*****") or die ("Could not save image name

Error: " . mysql_error());

mysql_select_db("project") or die("Could not select database");
mysql_query("INSERT into dbProfiles (photo) VALUES('".$_FILES['filep']['name']."')");
if($result) { echo "Image name saved into database

"; }

}

?>

Und das Beispiel-Formular, das ich verwenden muss, ist folgendes: 

<form action=addMember.php method=post enctype="multipart/form-data">
<table border="0" cellspacing="0" align=center cellpadding="3" bordercolor="#cccccc">
<tr>
<td>File:</td>
<td><input type="file" name="filep" size=45></td>
</tr>
<tr>
<td colspan=2><p align=center>
<input type=submit name=action value="Load">
</td>
</tr>
</table>
</form>

PS: Images-Datei ist zum Schreiben geöffnet. 

25
James

Hier ist das answer für diejenigen von euch, die aussehen, als würde ich im ganzen Web versuchen, herauszufinden, wie sie diese Aufgabe erledigen können. Hochladen eines Fotos auf einen Server mit dem Dateinamen, der in einer MySQL-Datenbank gespeichert ist, und anderen gewünschten Formulardaten in Ihrer Datenbank. Bitte lassen Sie mich wissen, ob es geholfen hat. 

Zuerst das Formular, das Sie benötigen: 

    <form method="post" action="addMember.php" enctype="multipart/form-data">
    <p>
              Please Enter the Band Members Name.
            </p>
            <p>
              Band Member or Affiliates Name:
            </p>
            <input type="text" name="nameMember"/>
            <p>
              Please Enter the Band Members Position. Example:Drums.
            </p>
            <p>
              Band Position:
            </p>
            <input type="text" name="bandMember"/>
            <p>
              Please Upload a Photo of the Member in gif or jpeg format. The file name should be named after the Members name. If the same file name is uploaded twice it will be overwritten! Maxium size of File is 35kb.
            </p>
            <p>
              Photo:
            </p>
            <input type="hidden" name="size" value="350000">
            <input type="file" name="photo"> 
            <p>
              Please Enter any other information about the band member here.
            </p>
            <p>
              Other Member Information:
            </p>
<textarea rows="10" cols="35" name="aboutMember">
</textarea>
            <p>
              Please Enter any other Bands the Member has been in.
            </p>
            <p>
              Other Bands:
            </p>
            <input type="text" name="otherBands" size=30 />
            <br/>
            <br/>
            <input TYPE="submit" name="upload" title="Add data to the Database" value="Add Member"/>
          </form>

Dann verarbeitet dieser Code Ihre Daten aus dem Formular: 

   <?php

// This is the directory where images will be saved
$target = "your directory";
$target = $target . basename( $_FILES['photo']['name']);

// This gets all the other information from the form
$name=$_POST['nameMember'];
$bandMember=$_POST['bandMember'];
$pic=($_FILES['photo']['name']);
$about=$_POST['aboutMember'];
$bands=$_POST['otherBands'];


// Connects to your Database
mysqli_connect("yourhost", "username", "password") or die(mysqli_error()) ;
mysqli_select_db("dbName") or die(mysqli_error()) ;

// Writes the information to the database
mysqli_query("INSERT INTO tableName (nameMember,bandMember,photo,aboutMember,otherBands)
VALUES ('$name', '$bandMember', '$pic', '$about', '$bands')") ;

// Writes the photo to the server
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
{

// Tells you if its all ok
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory";
}
else {

// Gives and error if its not
echo "Sorry, there was a problem uploading your file.";
}
?> 

Code bearbeitet von www.about.com

26
Cool Hand Luke

Sie haben für jedes Foto eine ID, so dass ich Ihnen vorschlagen sollte, das Foto umzubenennen. Beispielsweise benennen Sie es nach Datum um

<?php
 $date = getdate();
 $name .= $date[hours];
 $name .= $date[minutes];
 $name .= $date[seconds];
 $name .= $date[year];
 $name .= $date[mon];
 $name .= $date[mday];
?>

hinweis: Vergessen Sie nicht die Dateierweiterung Ihrer Datei oder Sie können eine zufällige Zeichenfolge für das Foto generieren, aber ich würde das nicht empfehlen. Ich würde Ihnen auch empfehlen, die Dateierweiterung zu überprüfen, bevor Sie sie in Ihr Verzeichnis hochladen.

<?php 
if ((($_FILES["photo"]["type"] == "image/jpeg")
            || ($_FILES["photo"]["type"] == "image/pjpg"))
            && ($_FILES["photo"]["size"] < 100000000))
            {
                move_uploaded_file($_FILES["photo"]["tmp_name"], $target.$name);

                if(mysql_query("your query"))
                {
                    //success handling
                }
                else 
                {
                    //failed handling
                }
            }
            else
            {
                //error handling
            }
?>

Hoffe das könnte helfen.

<form method="post" action="addMember.php" enctype="multipart/form-data">
    <p>
              Please Enter the Band Members Name.
            </p>
            <p>
              Band Member or Affiliates Name:
            </p>
            <input type="text" name="nameMember"/>
            <p>
              Please Enter the Band Members Position. Example:Drums.
            </p>
            <p>
              Band Position:
            </p>
            <input type="text" name="bandMember"/>
            <p>
              Please Upload a Photo of the Member in gif or jpeg format. The file name should be named after the Members name. If the same file name is uploaded twice it will be overwritten! Maxium size of File is 35kb.
            </p>
            <p>
              Photo:
            </p>
            <input type="hidden" name="size" value="350000">
            <input type="file" name="photo"> 
            <p>
              Please Enter any other information about the band member here.
            </p>
            <p>
              Other Member Information:
            </p>
<textarea rows="10" cols="35" name="aboutMember">
</textarea>
            <p>
              Please Enter any other Bands the Member has been in.
            </p>
            <p>
              Other Bands:
            </p>
            <input type="text" name="otherBands" size=30 />
            <br/>
            <br/>
            <input TYPE="submit" name="upload" title="Add data to the Database" value="Add Member"/>
          </form>

speichere es als addMember.php

<?php

//This is the directory where images will be saved
$target = "your directory";
$target = $target . basename( $_FILES['photo']['name']);

//This gets all the other information from the form
$name=$_POST['nameMember'];
$bandMember=$_POST['bandMember'];
$pic=($_FILES['photo']['name']);
$about=$_POST['aboutMember'];
$bands=$_POST['otherBands'];


// Connects to your Database
mysql_connect("yourhost", "username", "password") or die(mysql_error()) ;
mysql_select_db("dbName") or die(mysql_error()) ;

//Writes the information to the database
mysql_query("INSERT INTO tableName (nameMember,bandMember,photo,aboutMember,otherBands)
VALUES ('$name', '$bandMember', '$pic', '$about', '$bands')") ;

//Writes the photo to the server
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
{

//Tells you if its all ok
echo "The file ". basename( $_FILES['photo']['name']). " has been uploaded, and your information has been added to the directory";
}
else {

//Gives and error if its not
echo "Sorry, there was a problem uploading your file.";
}
?>

im obigen Code ein kleiner Fehler, den ich behoben habe.

2
arjun

Durch das Hinzufügen der folgenden Punkte werden Probleme mit Anführungszeichen in Dateinamen vermieden, z.

"freddy's pic.jpg"

welche auf einigen Betriebssystemen akzeptabel sind.

Vor:

$pic=($_FILES['photo']['name']);

Nach dem:

$pic=(mysql_real_escape_string($_FILES['photo']['name']));
0
pog

Wenn Sie weitere Daten in das Formular eingeben möchten, greifen Sie einfach über $ _POST auf die übermittelten Daten zu. 

Wenn Sie haben 

<input type="text" name="firstname" />

sie erreichen es mit 

$firstname = $_POST["firstname"];

Sie könnten dann Ihre Abfragezeile aktualisieren, um sie zu lesen

mysql_query("INSERT INTO dbProfiles (photo,firstname)
             VALUES('{$filename}','{$firstname}')");

Hinweis: Filtern und bereinigen Sie Ihre Daten immer.

0
Sampson

Dein Teil:

$result = mysql_connect("localhost", "******", "*****") or die ("Could not save image name

Error: " . mysql_error());

mysql_select_db("project") or die("Could not select database");
mysql_query("INSERT into dbProfiles (photo) VALUES('".$_FILES['filep']['name']."')");
if($result) { echo "Image name saved into database

";

Es macht nicht viel Sinn, Ihre Verbindung sollte nicht $ result heißen, aber dies ist ein Namensproblem und kein Programmierproblem.

Was ist ein Codierungsproblem, wenn ($ result), wenn Sie sagen, wenn Sie eine Verbindung zur Datenbank herstellen können, unabhängig davon, ob die Einfüge-Abfrage fehlschlägt oder erfolgreich ist, geben Sie "Bild in Datenbank gespeichert" aus.

Versuchen Sie, do hinzuzufügen 

$realresult = mysql_query("INSERT into dbProfiles (photo) VALUES('".$_FILES['filep']['name']."')");

und ändern Sie das if ($ result) in $ realresult

Ich vermute, Ihre Anfrage schlägt fehl. Vielleicht haben Sie zusätzliche Spalten oder etwas?

Versuchen Sie, Ihre Abfrage zu kopieren/einzufügen und ersetzen Sie ". $ _ FILES ['filep'] ['name']." mit test und starten Sie es in Ihrem Abfrage-Browser und sehen Sie, ob es hineinkommt.

0
savageguy