Foros del Web » Programando para Internet » PHP »

Sql Server y tipos de campo TEXT e Image

Estas en el tema de Sql Server y tipos de campo TEXT e Image en el foro de PHP en Foros del Web. Saludos a tod@s. No sé si esto es más una consulta para Base de Datos o aquí en PHP. Lo q me ocurre es que ...
  #1 (permalink)  
Antiguo 24/04/2007, 04:11
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 18 años, 4 meses
Puntos: 0
Sql Server y tipos de campo TEXT e Image

Saludos a tod@s.

No sé si esto es más una consulta para Base de Datos o aquí en PHP.

Lo q me ocurre es que no estoy seguro de si introduzco y leo bien los datos para un campo tipo TEXT. Estoy usando la misma sintaxis q si se tratara de un campo varchar pero a la hora de recoger los resultados me trunca el final.

Como lo que he almacenado es una tabla pues al faltarle datos me descuadra la página.

Para obtener los datos de las caracteristicas leo a través de un fread.

Para obtener la imagen uso $img=imagecreatefromjpeg($archivo);

Las sentencias siendo el campo Caracteristicas el campo tipo TEXT:

Código PHP:
$sql="INSERT INTO catalogotlf (id,marca,modelo,caracteristicas,imagen,tipoimagen,precio,activo) VALUES ($i,'$marca','$modelo','$carac','$img','$ext',$precio,1)";


$sql="SELECT id,marca,modelo,caracteristicas,precio,activo FROM catalogotlf"
Luego para la imagen seguí un tutorial en el q obtengo la imagen del servidor SQL, envío una cabecera (Content-Type) con el mimetype y un echo para mostrar la imagen pero lo único q me devuelve es:

Resource id#6

Gracias de antemano.

EDITO:

Al recoger los datos del campo TEXT me devuelve sólo los 4096 primeros caracteres. No sé si es PHP quien lo trunca o la BDD.
__________________
La muerte es un camino que todos debemos recorrer...

Última edición por djreficul; 24/04/2007 a las 05:38
  #2 (permalink)  
Antiguo 24/04/2007, 06:57
Avatar de the_scorpion  
Fecha de Ingreso: mayo-2006
Ubicación: Cuba
Mensajes: 696
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: Sql Server y tipos de campo TEXT e Image

Hola

buenos dias
Veamos a mis pocos conocimientos que podre decir, creo que tu problema más bien esta relacionado al foro de MySQL pero los campos blob y text mas o menos en dependencia de las versiones tienen algo de esta estructura

TinyText y TinyBlob: Columna con una longitud máxima de 255 caracteres.
Blob y Text: texto máximo de 65535 caracteres.
MediumBlob y MediumText: texto máximo de 16.777.215 caracteres.
LongBlob y LongText: texto máximo de caracteres 4.294.967.295.
Tener en cuenta que debido a los protocolos de comunicación los paquetes pueden tener un máximo de 16 Mb.

ej: de estructura
TINYBLOB, TINYTEXT - Longitud+1 bytes
BLOB, TEXT - Longitud +2 bytes
MEDIUMBLOB, MEDIUMTEXT - Longitud +3 bytes
LONGBLOB, LONGTEXT - Longitud +4 bytes

Aunque en el codigo que dices php estas mostrado codigo SQL.

Solo se resta saber que nos tienes en el codigo php.
__________________
Que hablen mal de uno es espantoso. Pero hay algo peor: que no hablen.
Quien hace, puede equivocarse. Quien nada hace, ya está equivocado".
  #3 (permalink)  
Antiguo 24/04/2007, 09:47
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Sql Server y tipos de campo TEXT e Image

Bueno, pues muestro el código q uso para mostrar los registros:

Código PHP:
<?php
$sql
="SELECT id,marca,modelo,caracteristicas,precio,activo FROM catalogotlf ORDER BY id asc";
$consulta=mssql_query ($sql,$conec);
$filas=mssql_num_rows($consulta);
if (
$filas>0) {
?>
<table align="center">
    <tr>
        <th><div align="center"><strong>ID</strong></div></th>
        <th><div align="center"><strong>MARCA</strong></div></th>
        <th><div align="center"><strong>MODELO</strong></div></th>
        <th><div align="center"><strong>CARACTER&Iacute;STICAS</strong></div></th>
        <th><div align="center"><strong>IMAGEN</strong></div></th>
        <th><div align="center"><strong>PRECIO</strong></div></th>
        <th><div align="center"><strong>ACTIVO</strong></div></th>
    </tr>
<?php
    
while ($fila=mssql_fetch_array($consulta)) {
?>
    <tr>
        <td><div align="center"><strong><?php echo $fila[0]; ?></strong></div></td>
        <td><div align="center"><?php echo $fila[1]; ?></div></td>
        <td><div align="center"><?php echo $fila[2]; ?></div></td>
        <td><div align="center"><?php echo $fila[3]; ?></div></td>
        <td><div align="center"><img src="showimage.php?id=<?php echo $fila[0]; ?>" border="0" /></div></td>
        <td><div align="center"><?php echo $fila[4]; ?></div></td>
        <td><div align="center"><?php echo $fila[5]; ?></div></td>
    </tr>
<?php        
    
}
?>
</table>
<?php
}
El hecho es q queda truncado a 4096 caracteres pero no sé si a causa de PHP o a causa de la sentencia SQL. En la sentencia insert ni siquiero uso addslashes ni nada por el estilo xq lo q inserto es de confianza y los datos los obtengo leyendo una pagina html distribuido en partes según lo q necesito.

Saludos.

EDITO:

El hecho de q esté limitado a 4096 caracteres forma parte de la configuración de PHP. Si tenemos acceso al php.ini sólo con modificar lo siguiente bastaría:

; Valid range 0 - 2147483647. Default = 4096.
mssql.textlimit = 2147483647

; Valid range 0 - 2147483647. Default = 4096.
mssql.textsize = 2147483647

Aún así no es una solución totalmente válida ya q si usamos un host ajeno qué se podría hacer?
En mi caso no importa porque uso el propio pero creo q es necesaria una solución a este problema.

Por otro lado la imagen sigue dándome como resultado:

Resource id #10

Adjunto el código para mostrar la imagen:

Código PHP:
            //Aseguro q en este script no hay ningun echo ni codigo html q salga antes de la cabecera de abajo.
    
$sql="SELECT imagen,tipoimagen FROM catalogotlf WHERE id=$id";
    
$consulta=mssql_query ($sql,$conec);
    
$filas=mssql_num_rows($consulta);
    if (
$filas>0) {
        
$imagen=mssql_result($consulta,0,0);
        
$ext=mssql_result ($consulta,0,1);
        switch (
$ext) {
            case 
"jpg":
            case 
"jpeg":
                
$mime="image/jpeg";
                break;
            case 
"gif":
                
$mime="image/gif";
                break;
            case 
"png":
                
$mime="image/png";
                break;
            default:
                
$mime="";
                break;
        }
        if (
$mime!="") {
            
header ("Content-Type: ".$mime);
            echo 
$imagen;
        } else {
            
//Muestro una imagen por defecto 
Saludos.
__________________
La muerte es un camino que todos debemos recorrer...

Última edición por djreficul; 24/04/2007 a las 10:19 Razón: Parte semisolucionada
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:20.