Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/09/2007, 06:13
SubZero_mb
 
Fecha de Ingreso: marzo-2004
Mensajes: 283
Antigüedad: 20 años, 2 meses
Puntos: 2
Subir imagen dentro de una funcion xajax

Hola a todos.
Aunque use Ajax para procesar, el problema tiene k ser la parte de php por eso ecribo en este foro. Tengo este formulario y esta funcion para xajax k sirve para procesar un formulario donde aparte de campos de texto hay una foto k subir:
Código:
<form id="form1" name="formulario" method="post" action="" enctype="multipart/form-data">
                        {$formulario.nombre}<br />
                        <input type="text" name="nombre" id="nombre" />
                        {$formulario.contrasena}<br />
                        <input type="password" name="password" id="password" />
                        {$formulario.foto}<br />
                        <input name="foto" type="file" id="foto" />
                        <input type="button" value="Enviar" onclick="xajax_procesar_formulario(xajax.getFormValues('formulario'))" />
</form>
Código PHP:
function procesar_formulario($form_entrada)
    {
       
//creo el xajaxResponse para generar una salida
       
$respuesta = new xajaxResponse('UTF-8');
    
       
//validación
       
$error_form "";
       if (
$form_entrada["nombre"] == "")
          
$error_form 'Porfavor escribe tu nombre';
       elseif (
$form_entrada["password"] == "")
          
$error_form "Porfavor escribe tu contraseña";
          
    
//Existe un campo vacio, el formulario no se procesa y se muestra en pantalla el campo que se debe rellenar:
        
if ($error_form != "")
        {
            
$respuesta->addAssign("mensaje","innerHTML","<span style='color:red;'><p>$error_form</p></span>");
        }
    
//Todos los campos han sido rellenados, el formulario se procesa:
        
else
        {    
    
//Enviamos a las bases los datos del formulario;
mysql_query("INSERT INTO usuarios (nombre,password) values ('".$form_entrada["nombre"]."','".$form_entrada["password"]."')") or die(mysql_error());
    
//Guardamos la foto original en el servidor;
move_uploaded_file($HTTP_POST_FILES[$form_entrada[$form_entrada["foto"]]['tmp_name'], $dir_fotos_originales."/".$nombre_foto); 
        }
        
       return 
$respuesta;
       
    } 
El caso es k la informacion se envia a las bases de datos perfectamente pero la segunda parte, la de subir la imagen nada de nada. Antes de usar xajax, procesando el formulario como toda la vida, la imagen se subia correctamente, el script k usaba antes (en el k no habia validaciones ni nada, simplemente se rellenaban los campos y se procesaba la informacion y se subia la foto) funcionaba perfectamente y es este:
Código PHP:
    //Enviamos a las bases los datos del formulario;
mysql_query("INSERT INTO usuarios (nombre,password) values ('$nombre','$password')") or die(mysql_error());
    
//Guardamos la foto original en el servidor;
move_uploaded_file($HTTP_POST_FILES[foto]['tmp_name'], $dir_fotos_originales."/".$nombre_foto); 
La diferencia esk en este las variables k enviamos a la base de datos son "$nombre y $password" recogidas directamente del formulario, mientras k usando xajax las variables pasan a ser: "$form_entrada["nombre"] y $form_entrada["password"]", cambiando eso la informacion se agrega a la base de datos sin problema. Sin embargo en la parte de subir la imagen es donde me pierdo, ya que si os fijais en el script k usaba anteriormente (antes de usar xajax) la orden para subir la imagen era esta:
Código PHP:
move_uploaded_file($HTTP_POST_FILES[foto]['tmp_name'], $dir_fotos_originales."/".$nombre_foto); 
Pues supongo k el fallo esk ahora al estar dentro de la funcion donde pone [foto] no funciona, probe a poner:
Código PHP:
move_uploaded_file($HTTP_POST_FILES[$form_entrada["foto"]]['tmp_name'], $dir_fotos_originales."/".$nombre_foto); 
pero nada, Porfavor alguien que sepa como hacerlo k me lo explike k ya estoy desesperado con esto. Muchas gracias.