Pongo el codigo completo a ver si podemos sacar el defecto o el porque no me enseña la foto....
El problema como antes dije es que inserta todos los datos a la base de datos y todo, y en la consulta se muestran los datos que quiero por ejemplo nombre, tipo y peso del archivo pero la imagen o archivo que envia no lo muestra.... sale una cruz en la imagen y le doy al boton derecho para ver las propiedades de la imagen y me muestra correctamente la url
http://www.xxx.xxx/clientes/ver.php?id=3 pero no me enseña el archivo...
El siguiente codigo es donde tengo el formulario que el usuario rellena y envia el archivo.
Y en el mismo codigo tambien tengo puesto para que se vea lo qeu el usuario a enviado.... porque la accion del formulario lo lleva a insertar_soporte.php y si todo sale bien hace el header:$HTTP_REFERER.
Código PHP:
<html>
//resto de codigo en html///
....
<?php
if (isset($_GET['proceso'])){
echo $_GET['proceso']."<br>";
}
?>
</p>
<FORM enctype="multipart/form-data" method="post" action="insertar_soporte.php">
<table width="470" height="18" cellpadding="2" cellspacing="2" class="estilotabla">
<tr>
<td colspan="2" class="estilocelda">ENVIAR SOPORTE </td>
</tr>
<tr>
<td></td>
<td> </td>
</tr>
<tr>
<td width="128">Comentarios:</td>
<td width="326"> <textarea name="comentario_cliente"></textarea>
</td>
</tr>
<tr>
<td>Archivo:</td>
<td><INPUT type="file" name="archivo" size="30"> </td>
</tr>
<tr>
<td> </td>
<td><INPUT type="submit" name="submit" value="Enviar"> </td>
</tr>
</table>
</form>
<p></p>
<p></p>
<br />
<br />
<table width="470" height="18" cellpadding="2" cellspacing="2" class="estilotabla">
<tr>
<td colspan="3" width="454" class="estilocelda">SOPORTE</td>
</tr>
<tr>
<td><?php
// INICIAS LA SESION
session_start();
mysql_connect("localhost","uss","pass") or die ("no se ha podido conectar a la BD");
mysql_select_db("BD") or die ("No se ha podido seleccionar la BD");
$sql = "SELECT * FROM soporte WHERE id='".$_SESSION['id']."'";
$consulta = mysql_query($sql) or die ("No se pudo ejecutar la consulta");
While ($registro=mysql_fetch_assoc($consulta)){
echo "<img src=\"ver.php?id=".$registro['ticket']."\">";
echo "<br> <a href=\"ver.php?id=".$registro['ticket']."\" target=\"_blank\">Nombre archivo:</a> ".$registro['archivo_nombre'];
echo "<br> Tipo archivo: ".$registro['archivo_tipo'];
echo "<br> Peso: ".$registro['archivo_peso']." bytes.<br><br>";
}
?>
/// resto de codigo en html///
</html>
El codigo de insertar_soporte.php es el siguiente..
Código PHP:
<?php
// INICIAS LA SESION
session_start();
//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.
if (empty($_FILES['archivo']['name'])){
header("location: cliente_soporte.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","uss","pass") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("BD",$conexion) or die("No se puede seleccionar BD"); // tu_bd es el nombre de la Base de datos .. por siaca.
// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES['archivo']['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, tabamo y tipo.
$binario_nombre=$_FILES['archivo']['name'];
$binario_peso=$_FILES['archivo']['size'];
$binario_tipo=$_FILES['archivo']['type'];
//insertamos los datos en la BD.
$consulta_insertar = "INSERT INTO soporte (ticket,id,comentario_cliente, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('','".$_SESSION['id']."','$comentario_cliente', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')";
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");
header("location: $HTTP_REFERER"); // si ha ido todo bien
exit;
?>
Y el codigo ver.php
Código PHP:
<?php
if(isset($_GET['ticket'])) {
mysql_connect("localhost","uss","pass") or die ("no se ha podido conectar a la BD");
mysql_select_db("BD") or die ("No se ha podido seleccionar la BD");
$sql = "SELECT * FROM soporte WHERE id='".$_GET['ticket']."'";
$consulta = mysql_query($sql,$conexion);
$datos = mysql_result($consulta,0,"archivo_binario");
$tipo = mysql_result($consulta,0,"archivo_tipo");
header("Content-type: $tipo");
echo $datos;
}
?>
Yo creo qeu estoy siguiendo los pasos correctos pero algo me esta fayando.... y no ay manera de poder sacarlo...