Ver Mensaje Individual
  #5 (permalink)  
Antiguo 08/02/2014, 09:04
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pasar valores entre varios formularios

Encantado amigo, pero quizás el error que estás cometiendo es darlo por solucionado tan pronto, quizás tu objetivo no es que funcione, sino comprender por qué funciona, lo que te ayudará en futuros proyectos a saber manejarte mejor y crear un entorno agradable para tí.

Tengo un rato y me gustaría explicarte, por que por más que la solución sea válida, lo bonito está en todo eso que no se entiende.

1 (form.html). Doy por hecho que comprendes el fichero form.html, no contiene ninguna lógica desde el momento que no es php.

2 (db.php). Sobre PDO:
[URL="http://www.forosdelweb.com/f18/anuncio-extension-mysql-considera-obsoleta-1008145/"]Anuncio del foro sobre la extensión mysql de php[/URL]
Te recomiendo siempre que utilices una herramienta consultes única y exclusivamente su documentación oficial, lo que no significa que el resto no sea válida, pero tendrás la garantía de saber como funciona concretamente esa tecnología con la que estás desarrollando y estar al día de sus últimas actualizaciones.
[URL="http://es.php.net/pdo"]Aquí tienes el manual oficial de PDO.[/URL] a partir de este momento, leyendo esa documentación empezarás a comprender mejor como funciona PDO.

Lo que hago en el fichero db.php es devolver un objeto PDO, es decir un enlace a la base de datos como el que me devolvía el antiguo mysql_connect.

3 (index.php).
a) ¿Porqué '?,?,?,?,...'? [URL="http://es.php.net/manual/es/pdo.prepare.php"]PDO::prepare[/URL]
b) ¿Porqué if($_POST && $_FILES)? Porque necesito que haya post y haya algún fichero en $_FILES antes de hacer nada, en caso de que no se reciban ni POST ni FILES significa que la solicitud ha sido por GET, con lo cual debo mostrar el formulario y no procesarlo aún.
c) El resto es funcionamiento de PDO y una validación antes de insertar el registro en la base de datos, por que en el caso de que no se pueda subir el fichero, sería inútil agregar algo a la base de datos.

Amigo, espero resolver tus dudas. Saludos.

EDICIÓN:
Haz un var_dump($_POST + [$file]); antes de la llamada a $st->execute y sabrás porqué funciona. Los símbolos de pregunta se alimentan de los valores del array que recibe execute en el mismo orden que están creados.

Utiliza mucho var_dump en tus proyectos, te ayudará a depurar mejor tus aplicaciones.

Última edición por lolainas; 08/02/2014 a las 09:18