Foros del Web » Programando para Internet » PHP »

subir imagenes php

Estas en el tema de subir imagenes php en el foro de PHP en Foros del Web. Hola! Tengo un codigo en PHP con el que subo mediante un FORM informacion a una base de datos. Lo que no se como hacer ...
  #1 (permalink)  
Antiguo 01/08/2012, 07:52
 
Fecha de Ingreso: julio-2012
Mensajes: 16
Antigüedad: 11 años, 9 meses
Puntos: 0
subir imagenes php

Hola! Tengo un codigo en PHP con el que subo mediante un FORM informacion a una base de datos.
Lo que no se como hacer es subir imagenes.
Alguien podria ayudarme a modificar este codigo para poder subir las fotos por medio de este form?
porque de esta manera las tendria que subir luego por FTP y es muy incomodo.

Gracias!

El código es este:

<form action="alta-infotecnica.php" method="post">

TITULO
<input type="text" name="inf_tit" size="70">

TEXTO INTRODUCCION
<textarea name="inf_text1" cols="100" rows="10"></textarea>

TEXTO LARGO
<textarea name="inf_text2" cols="100" rows="100"></textarea>

FOTO1
<input name="inf_foto1" type="text" value="nombredelafoto.jpg" size="30">

FOTO2
<input name="inf_foto2" type="text" value="nombredelafoto.jpg" size="30">

<input type="submit" class="botonespanel" value="AGREGAR">
</form>



"alta-infotecnica.php"

<?php
$inf_tit=$_POST['inf_tit'];
$inf_text1=$_POST['inf_text1'];
$inf_text2=$_POST['inf_text2'];
$inf_foto1=$_POST['inf_foto1'];
$inf_foto2=$_POST['inf_foto2'];

include("conexion.php");

$alta="insert into informacion values (
null,'$inf_tit','$inf_text1','$inf_text2','$inf_fo to1','$inf_foto2')";

mysql_query($alta);
mysql_close();
?>
  #2 (permalink)  
Antiguo 01/08/2012, 09:17
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: subir imagenes php

para subir archivos utiliza el
<input type='file'>
y en tu archivo "alta-infotecnica.php"
almanecenas los datos del archivoen la bdd (obtenidos de $_FILES[])y en tu servidor(podrias utilizar move_uploaded_file()),para luego hacer referencia a dicho archivo
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #3 (permalink)  
Antiguo 01/08/2012, 09:38
 
Fecha de Ingreso: julio-2012
Mensajes: 16
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: subir imagenes php

Hola Muchas Gracias por contestar!
Entiendo la primer parte es asi:

<input type="file" name="inf_foto1" id="fileField">

pero luego no se como seguir con el otro archivo porque si lo dejo como esta no me carga nada.

Me podrias ayudar con el codigo restante? Gracias !
  #4 (permalink)  
Antiguo 01/08/2012, 10:03
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: subir imagenes php

para utilizar el input type file a tu formulario debes agregarle

<form name="miform" method="post" enctype="multipart/form-data" >
<input type="file" name="inf_foto1" id="fileField">
<input typoe="submit" value="enviar"/>
</form>

y en el archivo donde recibes puedes utilizar este codigo

Código PHP:
Ver original
  1. $NombreArchivo=$_FILES["txtarchivo"]["name"];
  2. $txtPath    = "../directoriodeservidordondealmacenaras tuarchivo/";
  3. if($NombreArchivo!="")
  4. {
  5.     $NombreArchivo=$_FILES["txtarchivo"]["name"];
  6.     move_uploaded_file($_FILES["txtarchivo"]["tmp_name"],$txtPath . $NombreArchivo);
  7. }
  8. podrias almacenar la ruta y el nombre del archivo para despues consultarlo
  9. $alta="insert into informacion values
  10. (null,'$inf_tit','$inf_text1','$inf_text2','$inf_fo to1','$inf_foto2','$txtPath','$NombreArchivo')";

y para ver la imagen podrias hacer la consulta
Código PHP:
Ver original
  1. $BUSCARIMAGEN="SELECT nombredetucampoenlabdddelarutadelarchivo,nombredetucampoenlabdddelnombredetuarchivo FROM informacion WHERE titulo='principito'";
  2. $res=mysql_query($BUSCARIMAGEN);
  3. $datos=mysql_fetch_array($res);
  4.  
  5. ?>
  6. <img src="<?php echo $datos[0]. $datos[1];?>"title="<?php echo  $datos[1];?>"/>
  7. <?php
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #5 (permalink)  
Antiguo 01/08/2012, 10:16
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: subir imagenes php

Tu código esta bien, pero tiene un "error" el cual puede comprometer tu sitio, y es que el archivo que estas recibiendo no estas comprobando que en realidad esta siendo subido por un formulario, por lo tanto pueden inyectarte cualquier archivo via externa, para evitar eso usa is_oploaded_file...

Código PHP:
Ver original
  1. $NombreArchivo=$_FILES["txtarchivo"]["name"];
  2. $txtPath    = "../directoriodeservidordondealmacenaras tuarchivo/";
  3. if($NombreArchivo!="")
  4. {
  5.     if (is_uploaded_file($_FILES&#960;'txtarchivo']['name'])) {
  6.        $NombreArchivo=$_FILES["txtarchivo"]["name"];
  7.         if (move_uploaded_file($_FILES["txtarchivo"]["tmp_name"],$txtPath . $NombreArchivo)) {
  8.             echo 'Archivo subido correctamente';
  9.         }else {
  10.             echo 'Error al guardar el archivo';
  11.         }
  12.     }
  13. }
  14. podrias almacenar la ruta y el nombre del archivo para despues consultarlo
  15. $alta="insert into informacion values
  16. (null,'$inf_tit','$inf_text1','$inf_text2','$inf_fo to1','$inf_foto2','$txtPath','$NombreArchivo')";
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #6 (permalink)  
Antiguo 02/08/2012, 10:18
 
Fecha de Ingreso: julio-2012
Mensajes: 16
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: subir imagenes php

Hola muchas gracias a ambos por ayudarme!!!
no lo logre, borre el codigo que tenia en el archivo donde se recibe el form y coloque este pero me da un error

Parse error: syntax error, unexpected ';' in /Applications/XAMPP/xamppfiles/htdocs/webs/jjp/alta-infotecnica.php on line 38

Que estoy haciendo mal?

Gracias!!
  #7 (permalink)  
Antiguo 02/08/2012, 10:24
 
Fecha de Ingreso: julio-2012
Mensajes: 16
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: subir imagenes php

Mi archivo quedo asi:

<?php
include("conexion.php");

$inf_tit=$_POST['inf_tit'];
$inf_text1=$_POST['inf_text1'];
$inf_text2=$_POST['inf_text2'];
$inf_foto1=$_POST['inf_foto1'];
$inf_foto2=$_POST['inf_foto2'];


$NombreArchivo=$_FILES["txtarchivo"]["name"];
$txtPath = "../informacion/";
if($NombreArchivo!="")
{
if (is_uploaded_file($_FILESπ'txtarchivo']['name'])) {
$NombreArchivo=$_FILES["txtarchivo"]["name"];
if (move_uploaded_file($_FILES["txtarchivo"]["tmp_name"],$txtPath . $NombreArchivo)) {
echo 'Archivo subido correctamente';
}else {
echo 'Error al guardar el archivo';
}
}
}
podrias almacenar la ruta y el nombre del archivo para despues consultarlo
$alta="insert into informacion values
(null,'$inf_tit','$inf_text1','$inf_text2','$inf_f oto1','$inf_foto2','$txtPath','$NombreArchivo')";


mysql_query($alta);
mysql_close();
?>


Esta mal?
  #8 (permalink)  
Antiguo 02/08/2012, 11:59
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: subir imagenes php

Cuando publiques código usa la herramienta highlight!!!

en cuanto tu problema es porque tienes una linea que se supone es un comentario pero no lo formateas como tal...

Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3.  
  4. $inf_tit=$_POST['inf_tit'];
  5. $inf_text1=$_POST['inf_text1'];
  6. $inf_text2=$_POST['inf_text2'];
  7. $inf_foto1=$_POST['inf_foto1'];
  8. $inf_foto2=$_POST['inf_foto2'];
  9.  
  10.  
  11. $NombreArchivo=$_FILES["txtarchivo"]["name"];
  12. $txtPath = "../informacion/";
  13. if($NombreArchivo!="")
  14. {
  15. if (is_uploaded_file($_FILES['txtarchivo']['name'])) {
  16. $NombreArchivo=$_FILES["txtarchivo"]["name"];
  17. if (move_uploaded_file($_FILES["txtarchivo"]["tmp_name"],$txtPath . $NombreArchivo)) {
  18. echo 'Archivo subido correctamente';
  19. }else {
  20. echo 'Error al guardar el archivo';
  21. }
  22. }
  23. }
  24.  
  25. //Es esta linea de abajo!!!
  26. //podrias almacenar la ruta y el nombre del archivo para despues consultarlo   <-----
  27.  
  28.  
  29. $alta="insert into informacion values
  30. (null,'$inf_tit','$inf_text1','$inf_text2','$inf_f oto1','$inf_foto2','$txtPath','$NombreArchivo')";
  31.  
  32.  
  33. mysql_query($alta);

Siempre que se agrega un comentario debes darle su formato correspondiente, o le agregas dos diagonales al comienzo de cada linea o los encierras dentro de un /* y */, también hay un error en la linea "if (is_uploaded_file($_FILE['txtarchivo']['name'])) {" que ya arregle!
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #9 (permalink)  
Antiguo 02/08/2012, 15:43
Avatar de novamix  
Fecha de Ingreso: enero-2007
Ubicación: Getafe, Spain
Mensajes: 50
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: subir imagenes php

a mi me da este error..

Notice: Undefined index: txtarchivo in /var/www/vhosts/dconcierto.com/V2/admin/add2.php on line 38

y el codigo que tengo es:

Código PHP:
<?php include('header.php'); ?>
<?php 
include('conect.php'); ?>
<div class="container-fluid">
  <div class="row-fluid">
    <div class="span2">
    <?php include('sidebarevent.php'); ?>
    </div>
    <div class="span10">
      <?php 
if
   (isset(
$_POST['username'])) {
 
$username $_POST['username'];
 
$artista $_POST['artista'];
 
$fecha $_POST['fecha'];
 
$hora $_POST['hora'];
 
$sala $_POST['sala'];
 
$direccion $_POST['direccion'];
 
$localidad $_POST['localidad'];
 
$provincia $_POST['provincia'];
 
$pais $_POST['pais'];
 
$valor $_POST['valor'];
  
 
$inf_foto1=$_POST['inf_foto1']; 
  
  
   }
  
 
 
?>

<?php

$NombreArchivo
=$_FILES["txtarchivo"]["name"];
$txtPath "../imagenes/";
if(
$NombreArchivo!="")
{
if (
is_uploaded_file($_FILES['txtarchivo']['name'])) {
$NombreArchivo=$_FILES["txtarchivo"]["name"];
if (
move_uploaded_file($_FILES["txtarchivo"]["tmp_name"],$txtPath $NombreArchivo)) {
echo 
'Archivo subido correctamente';
}else {
echo 
'Error al guardar el archivo';
}
}
}


$sql "INSERT INTO `v2`.`concierto` (`username`, `artista`, `fecha`, `hora`, `sala`, `direccion`, `localidad`, `provincia`, `pais`,`imagen`,`valor`) VALUES ( '$username', '$artista', '$fecha', '$hora', '$sala', '$direccion', '$localidad', '$provincia', '$pais','$txtPath $NombreArchivo', '$valor');";

mysql_query($sql,$conexion);

$my_error mysql_error($conexion);

if(!empty(
$my_error)) { 

echo 
"Ha habido un error al insertar los valores. $my_error"

} else{
echo 
"los datos se introdujeron correctamente";
}

?>
  #10 (permalink)  
Antiguo 02/08/2012, 16:21
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: subir imagenes php

o.O y el formulario? supongo que si le diste nombre al input file "txtarchivo"?, el código que muestras es insuficiente, pero, de manera sencilla no existe el input file "txtarchivo"...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #11 (permalink)  
Antiguo 03/08/2012, 00:14
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: subir imagenes php

http://www.php.net/manual/es/functio...oaded-file.php ahi te dejo ejemplos
  #12 (permalink)  
Antiguo 03/08/2012, 07:47
Avatar de novamix  
Fecha de Ingreso: enero-2007
Ubicación: Getafe, Spain
Mensajes: 50
Antigüedad: 17 años, 3 meses
Puntos: 1
Exclamación Respuesta: subir imagenes php

te incluyo el formulario.. pero no me funciona tampoco.. gracias por los ejemplos los estoy probando pero tambien me salen errores. .. haber si lo consigo..

Código PHP:
Ver original
  1. <?php
  2. include_once( dirname(dirname(__FILE__)) . '/classes/check.class.php');
  3. protect("1");
  4.  
  5. if(empty($_POST))
  6.     include_once('header.php');
  7.    
  8.     if(empty($_POST))
  9.     include_once('conect.php');
  10.  
  11. ?>
  12. <div class="container-fluid">
  13.   <div class="row-fluid">
  14.     <div class="span2">
  15.     <?php include('sidebarevent.php'); ?>
  16.     </div>
  17.     <div class="span10">
  18.     <h1> Añadir Nuevo Evento </h1>
  19.    
  20.     <form action="./add2.php" method="post" name="NewEvent">
  21.       <p>
  22.         <input name="username" type="hidden" id="username" value="<?php echo $_SESSION['jigowatt']['username']; ?>" />
  23.       </p>
  24.       <p>
  25.         <label for="artista">Artista</label>
  26.         <input type="text" name="artista" id="artista" />
  27.         <br />
  28.         <label for="fecha">Fecha</label>
  29.         <input type="text" name="fecha" id="fecha" />
  30.         <br />
  31.         <label for="hora">Hora</label>
  32.         <input type="text" name="hora" id="hora" />
  33.         <br />
  34.         <label for="sala">Sala</label>
  35.         <input type="text" name="sala" id="sala" />
  36.         <br />
  37.         <label for="direccion">Direccion</label>
  38.         <input type="text" name="direccion" id="direccion" />
  39.         <br />
  40.          <label for="localidad">Localidad</label>
  41.         <input type="text" name="localidad" id="localidad" />
  42.         <br />
  43.        
  44.         <label for="provincia">Provincia</label>
  45.         <input type="text" name="provincia" id="provincia" />
  46.         <br />
  47.        
  48.         <label for="pais">País</label>
  49.         <input type="text" name="pais" id="pais" />
  50.         <br />Imagen <input type="file" name="txtarchivo" />Solo Jpg
  51.         <input name="valor" type="hidden" id="valor" value="0" />
  52.       </p>
  53.       <p>
  54.         <input type="submit" name="enviar" id="enviar" value="Enviar" />
  55.         <input type="reset" name="button" id="button" value="Restablecer" />
  56.       </p>
  57.     </form>
  58.    
  59.    
  60.  
  61.     </div>
  62.   </div>
  63. </div>
  64.  
  65. <?php include_once('footer.php'); ?>
  #13 (permalink)  
Antiguo 03/08/2012, 07:57
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: subir imagenes php

o.O te falta en el form el 'enctype="multipar/form-data"', por eso no sube el archivo...

Código PHP:
Ver original
  1. <?php
  2. include_once( dirname(dirname(__FILE__)) . '/classes/check.class.php');
  3. protect("1");
  4.  
  5. if(empty($_POST))
  6.     include_once('header.php');
  7.    
  8.     if(empty($_POST))
  9.     include_once('conect.php');
  10.  
  11. ?>
  12. <div class="container-fluid">
  13.   <div class="row-fluid">
  14.     <div class="span2">
  15.     <?php include('sidebarevent.php'); ?>
  16.     </div>
  17.     <div class="span10">
  18.     <h1> Añadir Nuevo Evento </h1>
  19.    
  20.     <form action="./add2.php" method="post" name="NewEvent" enctype="multipart/form-data">
  21.       <p>
  22.         <input name="username" type="hidden" id="username" value="<?php echo $_SESSION['jigowatt']['username']; ?>" />
  23.       </p>
  24.       <p>
  25.         <label for="artista">Artista</label>
  26.         <input type="text" name="artista" id="artista" />
  27.         <br />
  28.         <label for="fecha">Fecha</label>
  29.         <input type="text" name="fecha" id="fecha" />
  30.         <br />
  31.         <label for="hora">Hora</label>
  32.         <input type="text" name="hora" id="hora" />
  33.         <br />
  34.         <label for="sala">Sala</label>
  35.         <input type="text" name="sala" id="sala" />
  36.         <br />
  37.         <label for="direccion">Direccion</label>
  38.         <input type="text" name="direccion" id="direccion" />
  39.         <br />
  40.          <label for="localidad">Localidad</label>
  41.         <input type="text" name="localidad" id="localidad" />
  42.         <br />
  43.        
  44.         <label for="provincia">Provincia</label>
  45.         <input type="text" name="provincia" id="provincia" />
  46.         <br />
  47.        
  48.         <label for="pais">País</label>
  49.         <input type="text" name="pais" id="pais" />
  50.         <br />Imagen <input type="file" name="txtarchivo" />Solo Jpg
  51.         <input name="valor" type="hidden" id="valor" value="0" />
  52.       </p>
  53.       <p>
  54.         <input type="submit" name="enviar" id="enviar" value="Enviar" />
  55.         <input type="reset" name="button" id="button" value="Restablecer" />
  56.       </p>
  57.     </form>
  58.    
  59.    
  60.  
  61.     </div>
  62.   </div>
  63. </div>
  64.  
  65. <?php include_once('footer.php'); ?>
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #14 (permalink)  
Antiguo 03/08/2012, 08:32
 
Fecha de Ingreso: julio-2012
Mensajes: 16
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: subir imagenes php

Hola! Gracias!! ahora no me sale mas el error pero tampoco me esta subiendo nada a la base de datos. que puede ser?
  #15 (permalink)  
Antiguo 03/08/2012, 08:35
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: subir imagenes php

depura la sentencia:

Código PHP:
Ver original 
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #16 (permalink)  
Antiguo 03/08/2012, 08:47
 
Fecha de Ingreso: julio-2012
Mensajes: 16
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: subir imagenes php

Me aparece esto:

Column count doesn't match value count at row 1

puede ser que tenga que agregar algo en la base de datos?

Tendria que agregar en la base las columnas:

txtPath
NombreArchivo
?

Última edición por LauraNext; 03/08/2012 a las 08:54
  #17 (permalink)  
Antiguo 03/08/2012, 08:54
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: subir imagenes php

No, esta mal tu consulta, debes indicar el nombre de cada campo forzosamente, al menos los que tiene como propiedad NOT NULL:

Código PHP:
Ver original
  1. //mal
  2. $alta="insert into informacion values
  3. (null,'$inf_tit','$inf_text1','$inf_text2','$inf_f oto1','$inf_foto2','$txtPath','$NombreArchivo')";
  4.  
  5. //bien, PERO, obviamente es un ejemplo, porque no se los nombres reales te los
  6. //campos que existen en tu tabla, reemplaza por los nombres reales...
  7. $alta="insert into informacion (campo1, campo2, campo3, campo4, campo5, campo6, campo7, campo8) values
  8. (null,'$inf_tit','$inf_text1','$inf_text2','$inf_f oto1','$inf_foto2','$txtPath','$NombreArchivo')";

Ahora, ese "null" en tu sentencia PHP esta mal, para comenzar es NULL (si, con mayúsculas), ahora, ese campo debe de tener como propiedad NULL, porque si es NOT NULL te dará problemas y no te dejará insertar el registro!, verifica primero las propiedades de ese campo en la tabla de la base de datos!
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #18 (permalink)  
Antiguo 03/08/2012, 10:40
Avatar de novamix  
Fecha de Ingreso: enero-2007
Ubicación: Getafe, Spain
Mensajes: 50
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: subir imagenes php

o si nemutagk es verdad... ya lo arregle y ahor asi me sube y funciona todo bien. gracias :)

Etiquetas: imagenes, mysql, upload
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:19.