El caso es una entrevista. En la base de datos debo tener una tabla llamada entrevistas con los siguientes campos:
id
entrevistado
quien
respuesta_1
respuesta_2
respuesta_3
respuesta_4
respuesta_5
respuesta_6
respuesta_7
Ademas, al subir la entrevista, debe subirse tambien 2 o 3 fotos del entrevistado. Como se haria?
1.- En la misma tabla expuesta anteriormente, incluir archivo_binario, archivo_nombre, archivo_peso, archivo_tipo (uso el codigo de este foro para subir a la bd archivos blog y tambien el de las miniaturas)???????
2.- Crear una tabla aparte tipo entrevistas_fotos solo con las imagenes del entrevistado, tipo: id, entrevistado, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo????????????
ACTUALMENTE USO LA SEGUNDA OPCION, PERO NO ESTOY SEGURO SI ES CORRECTO...
La idea seria en el mismo form, subir las los datos del entrevistado y todas sus fotos a la vez.
Actualmente he estado haciendo varias pruebas pero siempre me da errores.. o no me muestra la foto del entrevistado, o si tengo 3 campos para subir fotos y subo solo 2, se me crea un campo en la tabla vacio con el nombre del entrevistado.
Necesito terminar este codigo pero ya lo he intentado todo. Les pongo todos los scripts implicados a ver si pueden ayudarme a corregirlo y perfeccionarlo.
Formulario: form_entrevista.php
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
</head>
<body>
<form action="upload_entrevista.php" method="post" enctype="multipart/form-data" name="entrevista" id="entrevista">
<p>NOMBRE:
<input name="entrevistado" type="text" id="entrevistado" />
</p>
<p>QUIEN:
<input name="quien" type="text" id="quien" />
</p>
<p>RESPUESTA 1 :
<input name="respuesta_1" type="text" id="respuesta_1" />
</p>
<p>RESPUESTA 2:
<input name="respuesta_2" type="text" id="respuesta_2" />
</p>
<p>RESPUESTA 3:
<input name="respuesta_3" type="text" id="respuesta_3" />
</p>
<p>RESPUESTA 4:
<input name="respuesta_4" type="text" id="respuesta_4" />
</p>
<p>RESPUESTA 5:
<input name="respuesta_5" type="text" id="respuesta_5" />
</p>
<p>RESPUESTA 6:
<input name="respuesta_6" type="text" id="respuesta_6" />
</p>
<p>RESPUESTA 7:
<input name="respuesta_7" type="text" id="respuesta_7" />
</p>
<?php
$nfotos=3;
for($i=1;$i<=$nfotos;$i++)
{
?>
<p>FOTO <?php echo $i;?>: <input type="file" name="<?php echo 'archivo'.$i;?>" /> </p>
<?php
}
?>
<p>
<input type="submit" name="Submit" value="Enviar" />
</p>
</form>
</body>
</html>
Código PHP:
<?php
//Primero, arranca el bloque PHP y checkea si el archivo tiene nombre. Si no fue asi, te remite de nuevo al formulario de inserción:
// No se comprueba aqui si se ha subido correctamente.
//comprueba si al menos hay un archivo
if (empty($_FILES['archivo1']['name'])){
header("location: form_entrevista.php?proceso=falta_indicar_fichero"); //o como se llame el formulario ..
exit;
}
//establece una conexión con la base de datos.
$conexion = mysql_connect("localhost","xxxxxx","123456") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("xxxxxx",$conexion) or die("No se puede seleccionar BD");
//insertamos los datos en la BD.
$consulta_insertar = "INSERT INTO entrevistas (id, entrevistado, quien, respuesta_1, respuesta_2, respuesta_3, respuesta_4, respuesta_5, respuesta_6, respuesta_7) VALUES ('', '$entrevistado', '$quien', '$respuesta_1', '$respuesta_2', '$respuesta_3', '$respuesta_4', '$respuesta_5', '$respuesta_6', '$respuesta_7')";
mysql_query($consulta_insertar,$conexion) or die(mysql_error());
$nfotos=3;
for($i=1;$i<=$nfotos;$i++)
{
$myfile="archivo$i";
// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES[$myfile]['tmp_name'];
// leer del archvio temporal .. el binario subido.
// "rb" para Windows .. Linux parece q con "r" sobra ...
$binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal)));
// Obtener del array FILES (superglobal) los datos del binario .. nombre, tamaño y tipo.
$binario_nombre=$_FILES[$myfile]['name'];
$binario_peso=$_FILES[$myfile]['size'];
$binario_tipo=$_FILES[$myfile]['type'];
$consulta_insertar_dos = "INSERT INTO entrevistas_fotos (id, entrevistado, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('', '$entrevistado', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')";
mysql_query($consulta_insertar_dos,$conexion) or die(mysql_error());
}
header("location: form_entrevista.php"); // si ha ido todo bien
exit;
?>
Código PHP:
<?
//establece una conexión con la base de datos.
$conexion = mysql_connect("localhost","xxxxxx","123456") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("xxxxxx",$conexion) or die("No se puede seleccionar BD");
$sql="SELECT * FROM entrevistas_fotos ORDER BY id DESC LIMIT 0,1";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result))
{
echo "<div align='center'>";
echo "<img src=\"thumbs_entrevista_home.php?id=$row[id]\"><br><br>";
}
$sql2="SELECT DISTINCT * FROM entrevistas ORDER BY id DESC LIMIT 0,1";
$result2=mysql_query($sql2);
while($row=mysql_fetch_array($result2))
{
echo "<div align='center'>";
echo "<font class='title2'>".$row[entrevistado]."</font><br><br>";
echo "<font class='body'>".$row[quien]."</font><br>";
}
?>
Código PHP:
<?php
if(isset($_GET['id'])) {
$conexion = mysql_connect("localhost","xxxxxx","123456") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("xxxxxx",$conexion) or die("No se puede seleccionar BD");
$sql = "SELECT archivo_binario,archivo_tipo,archivo_nombre FROM entrevistas_fotos WHERE id='".$_GET['id']."'";
$consulta = mysql_query($sql,$conexion);
$imagen = mysql_result($consulta,0,"archivo_binario");
$type = mysql_result($consulta,0,"archivo_tipo");
// Envio cabeceras al navegador
Header ("Content-type: $type");
// Generar el thumbnail:
// Se crea la imagen desde el campo binario de la BD
$img = imagecreatefromstring($imagen);
// Tamaño del Thumbnail
$picsize = 100;
// Se obtienen los datos del ancho y alto de la imagen.
$new_w = imagesx($img);
$new_h = imagesy($img);
// Se calcula la relación alto/ancho
$aspect_ratio = $new_h / $new_w;
// Se ajusta al nuevo tamaño
$new_w = $picsize;
$new_h = abs($new_w * $aspect_ratio);
// Se crea la mascara de la imagen nueva
$dst_img = ImageCreateTrueColor($new_w,$new_h);
// Se copia y reajusta el nuevo tamaño en la nueva imagen.
imagecopyresampled($dst_img,$img,0,0,0,0,$new_w,$new_h,imagesx($img),imagesy($img));
// Se entrega al buffer de salida (navegador en este caso) la imagen en formato JPEG
// El tercer parámetro (100) indica la calidad de la imagen: en porcentaje relación calidad/peso imagen.
imagejpeg($dst_img,'',100);
}
?>
En el home, al hacer click en un enlace, ven la entrevista completa en la pagina entrevistas.php pero ese ya es otro cuento...