Foros del Web » Programando para Internet » PHP »

subir imagenes

Estas en el tema de subir imagenes en el foro de PHP en Foros del Web. Hola... tengo una base de datos con dos campos: foto0 y foto1 ..... tambien tengo un formulario: <form action="upload.php" method="post"> <input type="file" name="userfile"><br> <input type="file" ...
  #1 (permalink)  
Antiguo 18/11/2004, 14:04
Avatar de Ludwingg  
Fecha de Ingreso: diciembre-2002
Ubicación: San Salvador
Mensajes: 951
Antigüedad: 15 años
Puntos: 5
subir imagenes

Hola...

tengo una base de datos con dos campos: foto0 y foto1 ..... tambien tengo un formulario:

<form action="upload.php" method="post">
<input type="file" name="userfile"><br>
<input type="file" name="userfile1"><br>
<input type="submit" name="enviar" value="enviar">
</form>

y tengo el script upload.php el cual me muestra un "error" y no sube las imagenes al servidor, se supone que el <input type=file name=userfile> debe subir una fotografia al servidor e insertar la ruta en el campo foto0 de la base de datos y <input type=file name=userfile1> debe subir otra fotografia al servidor e insertar la ruta en el campo foto1...... en conclucion ninguno de los dos archivos sube y la ruta se inserta en la base de manera erronea, por ejemplo: c:imagenes/fotografia.jpg cuando realmente tendria que insertarse asi: images/fotografia.jpg ...................aqui esta el codigo:

$conexion=mysql_connect("localhost","","");
mysql_select_db("base",$conexion);
//
$nombre1=$HTTP_POST_FILES['userfile']['name'];
$tipo1=$HTTP_POST_FILES['userfile']['type'];
$size1=$HTTP_POST_FILES['userfile']['size'];
//
$nombre2=$HTTP_POST_FILES['userfile1']['name'];
$tipo2=$HTTP_POST_FILES['userfile1']['type'];
$size2=$HTTP_POST_FILES['userfile1']['size'];
//
if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $nombre1) && move_uploaded_file($HTTP_POST_FILES['userfile1']['tmp_name'], $nombre2)){
echo "bien";
}
else{
echo "error";
mysql_query("Insert into tabla(foto0,foto1) values('$userfile','$userfile1')");
}

el codigo lo he hecho yo solo asi que seguramente tiene muchos errores de principiante... espero que me ayuden....

muchas gracias
  #2 (permalink)  
Antiguo 18/11/2004, 14:09
 
Fecha de Ingreso: enero-2004
Mensajes: 235
Antigüedad: 13 años, 11 meses
Puntos: 0
1. Mirate este ejemplo del manual de php:
http://www.php.net/manual/es/features.file-upload.php

2. te falta en la cabecera del form : enctype="multipart/form-data"
  #3 (permalink)  
Antiguo 18/11/2004, 19:16
Avatar de Ludwingg  
Fecha de Ingreso: diciembre-2002
Ubicación: San Salvador
Mensajes: 951
Antigüedad: 15 años
Puntos: 5
hola... gracias por contestar...

pues ya lei ese articulo, pero la informacion es muy poca, ademas ese ejemplo que aparece en esa pagina creo que es para enviar varias imagenes pero la ruta se inserta en un mismo campo en la database... no???

hay algun tutorial o algo asi???

gracias
  #4 (permalink)  
Antiguo 18/11/2004, 19:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Una vez corregido el problema con la codificación del formulario ..
¿ Te sigue presentando el mismo "error"?

Por cierto .. fijate lo que haces en tu IF():
Código PHP:
if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $nombre1) && move_uploaded_file($HTTP_POST_FILES['userfile1']['tmp_name'], $nombre2)){ 
echo 
"bien";
}
else{
echo 
"error";
mysql_query("Insert into tabla(foto0,foto1) values('$userfile','$userfile1')");

ahí dices .. "si las imagenes se han podido mover a su destino definitivo .. entonces muestras el mensaje: "bien" .. y si no se puede hace dicees "error" y ejecutas tu consulta SQL para crear el registro ..".

Eso no deberìa ser así .. el mysql_query() lo tienes que ponre bajo tu echo "bien" ...

Otro punto a tener presente:
NO uses los arrays $HTTP_POST_FILES usa los arrays superglobales $_FILES en lugar de estos .. esto te asegurará compatibilidad hacia adelante (versiones PHP 4.1.0 en adelante) y hacer independiente tu código del valor de la directiva de PHP: register_globals .. entre otras cosas ..

Por lo demás .. el tutorial oficial de PHP sobre "Upload HTTP" tiene un capítulo que habla de "Upload multiple" para eso mismo . .para que veas la tècnica que se deberìa usar para subir N archivos a la vez .. En esa técnica no se numera como tu lo haces los N imagenes con nombre de variable (file) diferente .. sino que se usa notación tipo "array".

<input type="file" name="archivo[]">

para que en tu script PHP lo recojas por el array que se genera en:

$_FILES['archivo']['propiedad'][$indice] .. donde propiedad serìa "tmp_name", "name", "size", "type" ... y el $indice sera un contador (que puedes generar con un bucle for() ) que indica desde 0 a X archivos que subistes.

Un saludo,
  #5 (permalink)  
Antiguo 19/11/2004, 12:27
Avatar de Ludwingg  
Fecha de Ingreso: diciembre-2002
Ubicación: San Salvador
Mensajes: 951
Antigüedad: 15 años
Puntos: 5
Hola nuevamente....

ya le agregue el enctype="multipart/form-data" al formulario... y tambien aplique algunos cambios que me sugirio cluster......

necesito es subir 2 fotos, pero aun no lo he logrado, no se que es lo que estoy haciendo mal .... este es el codigo de upload.php:

$conexion=mysql_connect("localhost","","");
mysql_select_db("base",$conexion);
//
$nombre1=$_FILES['archivo']['name'][0];
$tipo1=$_FILES['archivo']['type'][0];
$size1=$_FILES['archivo']['size'][0];
//
$nombre2=$_FILES['archivo']['name'][1];
$tipo2=$_FILES['archivo']['type'][1];
$size2=$_FILES['archivo']['size'][1];
//
for($i=0; $i<=1; $i++){
if (move_uploaded_file($_FILES["archivo"]["tmp_name"][$i], "motorsal/" . $_FILES["archivo"]["name"][$i]) && move_uploaded_file($_FILES["archivo"]["tmp_name"][$i], "motorsal/" . $_FILES["archivo"]["name"][$i])){
echo "bien";
mysql_query("Insert into tabla(foto0,foto1) values('$archivo','$archivo1')")
}
else{
echo "error";
}
}
  #6 (permalink)  
Antiguo 22/11/2004, 07:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y .. ahora que error obtienes?

Un saludo,
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 16:59.