Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/04/2006, 11:24
iarrieta
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Cual es la manera correcta de hacer este codigo

Hola:

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&iacute;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>
El que sube a la base de datos: upload_entrevista.php
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; 
?>
El que deberia mostrar la reseña a la entrevista, en el home: inicio.php
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>";

}
?>
El de las miniaturas: thumbs_entrevista_home.php
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); 


?>
Asi como lo tengo ahora, se me muestra en el home, el nombre del entrevistado, el campo quien que es una pequeña descripcion de su trabajo y ya, la foto nada que se ve.

En el home, al hacer click en un enlace, ven la entrevista completa en la pagina entrevistas.php pero ese ya es otro cuento...