validar subir subida servidor mostrarla mostrar imagenes imagen guardar con como archivos archivo adjuntar php mysql database image-processing file-upload

subida - subir y mostrar archivos en php



¿Cómo almacenar el nombre del archivo en la base de datos, con otra información al cargar la imagen al servidor usando PHP? (6)

Agregar lo siguiente evita problemas con comillas en nombres de archivos, por ejemplo

"freddy''s pic.jpg"

que son aceptables en algunos sistemas operativos.

Antes de:

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

Después:

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

Hola. He leído muchos foros y sitios web que le dicen cómo cargar una imagen en un servidor y he logrado que funcione, puedo cargar un archivo en mi servidor pero el almacenamiento del nombre del archivo funciona en el siguiente ejemplo que encontré y también necesito crear un formulario que permita ingresar más datos a la base de datos. Estoy atascado con esto porque he hecho mucho PHP antes. He llegado al final de probar diferentes tutoriales de sitios web sin mucho éxito. ¿Alguien podría ayudarme? Lo necesito para un proyecto que estoy haciendo.

Básicamente estoy tratando de crear un CMS que permita a los usuarios subir una foto de un miembro de la banda y tener información almacenada sobre ellos para que se pueda mostrar en una página web para que el público la vea.

Mi tabla se ve así:

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

La forma que quiero se verá así:

<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>

El Ejemplo que carga una Imagen al servidor y solo, eso es esto:

<? 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 "; } } ?>

Y el formulario de ejemplos que tengo que usar es este:

<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>

PD: el archivo de imágenes está abierto para escribir en.


Si desea ingresar más datos en el formulario, simplemente tiene acceso a los datos enviados a través de $ _POST.

Si usted tiene

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

usted accede a ella con

$firstname = $_POST["firstname"];

Luego puede actualizar su línea de consulta para leer

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

Nota: siempre filtre y desinfecte sus datos.


Tienes una identificación para cada foto así que mi sugerencia es que cambies el nombre de la foto. Por ejemplo, le cambia el nombre por la fecha

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

nota: no olvides la extensión del archivo o puedes generar cadenas aleatorias para la foto, pero no lo recomendaría. También te recomendaría que compruebes la extensión del archivo antes de subirlo a tu directorio.

<?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 } ?>

Espero que esto pueda ayudar.


Tu parte:

$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 ";

No tiene mucho sentido, su conexión no debe llamarse $ result, pero es un problema de nomenclatura, no de codificación.

Lo que es un problema de codificación es si ($ resultado), diciendo que si puede conectarse a la base de datos independientemente de si la consulta de inserción falla o tiene éxito, obtendrá "Imagen guardada en la base de datos".

Intenta agregar do

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

y cambie el if ($ result) a $ realresult

Sospecho que su consulta está fallando, ¿quizás tiene columnas adicionales o algo así?

Intente copiar / pegar su consulta, reemplazando el ". $ _ FILES [''filep''] [''name'']". con prueba y ejecutarlo en su navegador de consultas y ver si entra.


Aquí está la respuesta para aquellos de ustedes que parece que hice en toda la web tratando de descubrir cómo hacer esta tarea. Cargar una foto en un servidor con el nombre de archivo almacenado en una base de datos mysql y otros datos de formulario que desee en su base de datos. Por favor, avíseme si ayudó.

Primero, el formulario que necesita:

<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>

Luego, este código procesa los datos del formulario:

<?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."; } ?>

Código editado desde www.about.com


<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>

guárdalo como 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."; } ?>

en el código anterior un pequeño error, arreglé ese error.