Foros del Web » Programando para Internet » PHP »

mostrar una parte del contenido de un campo

Estas en el tema de mostrar una parte del contenido de un campo en el foro de PHP en Foros del Web. estoy haciendo un sistema de noticias y tengo esta parte de codigo ke es donde se muestran las noticias con fecha autor y el contenido: ...
  #1 (permalink)  
Antiguo 13/07/2005, 19:25
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 12 años, 10 meses
Puntos: 4
mostrar una parte del contenido de un campo

estoy haciendo un sistema de noticias y tengo esta parte de codigo ke es donde se muestran las noticias con fecha autor y el contenido:
Código PHP:
<?
$query 
"select * from noticias order by fecha desc";
$resp mysql_query($query);
while (
$datos mysql_fetch_array($resp)) {
    if (
$mostrar 0) {
        
$fecha date("d/m/Y",$datos[fecha]);
        echo 
'
        <table>
        <tr><td>'
.$fecha.' :: <b>'.$datos[titulo].'</b></td></tr>
        <tr><td>'
.$datos[noticia].'</td></tr>
        <tr><td align="right"><i>Enviada por <b>'
.$datos[autor].'</b></i></td></tr>
        </table><br>'
;
        
$mostrar--;
    }
}
?>
pero ese codigo chapucero me muestra todo el contenido de la noticia y yo kisiera ke me muestre las tres primeras lineas, cmo le hago?

un saludo :)
  #2 (permalink)  
Antiguo 13/07/2005, 21:23
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 12 años, 5 meses
Puntos: 1
Hmm sinceramente si se puede hacer eso de que muestre por ahi las tres primeras lineas pero al fin y al cabo consultara todo el contenido de la noticia en la DB por lo cual tiempo no se ahorra y el usuario ve menos una solucion facil seria cuandio subes la noticia en un campo adicional guardar las 3 primeras lineas y asi cuando muestres los preeviews de noticias ahorres tiempo no crees?
  #3 (permalink)  
Antiguo 13/07/2005, 21:47
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 12 años, 10 meses
Puntos: 4
ok, pero como haria eso ke dices de guardarlo en un campo aparte??

Un saludo
  #4 (permalink)  
Antiguo 13/07/2005, 22:05
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 12 años, 6 meses
Puntos: 2
Hola, creo que la solución de guardar en otro campo sería bastante tedioso ya que tendria que modificar la tabla y regularizar los registros que no lo tengan "lleno". Otro dato sería que no ganarias nada de tiempo haciendolo de esa forma, es mas aunque sea minimo, por logica, tendria que aumentar. Yo te diria que en vez de mostrar las primeras 3 linéas, definas una catidad de palabras que equivalgan a esas 3 linéas. Yo te he echo una función que se ocupa de eso, es bastante simple y con algo muy parecido he solucionado lo mismo anteriormente.
Código PHP:
<?

function recortar ($cadena)
{
        
// Esta es la cantidad de palabras a mostrar
        
$cant_palabras 50;

        
// Dividimos la cadena y definimos un maximo de $cant_palabras + 1
        // Se le suma uno ya que ese elemento llevara el resto del mensaje si es cortado
        
$recorte explode(" ",$cadena,$cant_palabras 1);

        
// Si la cantidad de palabras es igual o menor que la que definimos devuelve la cadena intacta
        
if(count($recorte) <= $cant_palabras)
        {
                return 
$cadena;
        }else{
                
// Llevo el puntero al final
                
end($recorte);

                
// Borro el ultimo elemento que es el que contiene el resto del mesaje
                
unset($recorte[key($recorte)]);

                
// Concateno todos los elementos de la misma forma que lo dividimos
                
$str_recortado "[...] ".implode(" ",$recorte)." [...]";

                
// Devuelvo la cadena modificada y recortada
                
return $str_recortado;
        }
}

$noticia "Todos los parámetros excepto name son opcionales. Si sólo se especifica el parámetro name, la cookie con ese nombre se borrará del cliente remoto. También puede sustituir cualquier parámetro por una cadena de texto vacía y saltar así ese parámetro. Los parámetros expire y secure son números enteros y no se pueden saltar con una cadena de texto vacía. En su lugar utilice un cero (0). El parámetro expire es un entero de tiempo típico de UNIX tal como lo devuelven las funciones time() o mktime(). El parámetro secure indica que la cookie se debe transmitir única y exclusivamente sobre una conexión segura HTTPS.";

echo 
recortar($noticia);

?>
Bueno, está es la función funcionando con un ejemplo... la cantidad de palabras la puedes modificar a gusto . Lo unico malo es que esta función es un poco grosera ya que una persona que se le ocurra poner varios espacios juntos nos modificara el comportamiento de la función y no obtendremos lo mismo. Bueno esta función es solo una forma de que veas que no es dificil hacer algo asi y te invito a que trates de mejorarla lo mejor posible .
Bueno el comportamiento de la función es simple esta es la cadena original:
Cita:
Todos los parámetros excepto name son opcionales. Si sólo se especifica el parámetro name, la cookie con ese nombre se borrará del cliente remoto. También puede sustituir cualquier parámetro por una cadena de texto vacía y saltar así ese parámetro. Los parámetros expire y secure son números enteros y no se pueden saltar con una cadena de texto vacía. En su lugar utilice un cero (0). El parámetro expire es un entero de tiempo típico de UNIX tal como lo devuelven las funciones time() o mktime(). El parámetro secure indica que la cookie se debe transmitir única y exclusivamente sobre una conexión segura HTTPS.
La saque del manuel oficial de PHP . Y este sería el resultado:
Cita:
[...] Todos los parámetros excepto name son opcionales. Si sólo se especifica el parámetro name, la cookie con ese nombre se borrará del cliente remoto. También puede sustituir cualquier parámetro por una cadena de texto vacía y saltar así ese parámetro. Los parámetros expire y secure son números enteros y no [...]
Bueno, espero te sirva y se allá entendido. Saludos y suerte.
  #5 (permalink)  
Antiguo 13/07/2005, 22:08
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 12 años, 5 meses
Puntos: 1
pues creas otro campo en la tabla llamado por ej noticia_corta cuando subes la noticia simplemente puedes estimar la cantidad de caraceres necesarios en la noticia digamos que tres renglones equivalen a .. aver unos 320 caracteres mas o menos

si el conenido de la noticia cuando llega del formulario digamos que se llame $noticia

Código PHP:
$car=320;//caracteres en los que se debe truncar
if(strlen($noticia)<=$car)
$noticia_corta=$noticia;
else 
$noticia_corta=substr($noticia,$car); 
y listo asi aseguramos que en $noticia_corta hayan mas o menos tres lineas y esta variable se almacena en el nuevo campo de la tabla
  #6 (permalink)  
Antiguo 13/07/2005, 22:13
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 12 años, 5 meses
Puntos: 1
DarioDario mira si por ejemplo el quiere en una pagina mostar las 10 ultimas noticias en esa forma cada vez que un usuario lo vea el script debe leer toda la noticia del campo y recortarla osea leeria las 10 noticias completicas pero solo mostraria un trozo de cada una el tiempo en consultas es el mismo que si se mostrara texto completo.

Pero si se guarda en un campo la recortada se hace solo Una vez y cuando desee mirar la pagina de 10 articulos no debera leer todo la noticia y mucho menos recortar cada una
  #7 (permalink)  
Antiguo 13/07/2005, 22:22
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 12 años, 6 meses
Puntos: 2
Cita:
Iniciado por dopon
DarioDario mira si por ejemplo el quiere en una pagina mostar las 10 ultimas noticias en esa forma cada vez que un usuario lo vea el script debe leer toda la noticia del campo y recortarla osea leeria las 10 noticias completicas pero solo mostraria un trozo de cada una el tiempo en consultas es el mismo que si se mostrara texto completo.

Pero si se guarda en un campo la recortada se hace solo Una vez y cuando desee mirar la pagina de 10 articulos no debera leer todo la noticia y mucho menos recortar cada una
Primero perdon, porque tube que volver a leer para terminar de entender el thread. Ahora lo que tu dices es totalmente valido, pero que pasa con los registros que ya estan en la base? Tendria que hacer todo un script para poder regularizar la situación. Mi solución era para una pagina ya en funcionamiento, ya que no necesita regularizar nada. Ahora paso explicar lo que entendí, por alguna razón quería ver solamente las primeras 3 lineas, y creía (ya entendí que no) que tambien necesitava la noticia completa, ahora entendi que lo que queria era un tipo de "resumen" de la noticia.
Cambiando un poco de tema, nosé cual solución te vendria mejor, pero viendo los dos post con la solución si haces un "hibrido" de las 2 sacarias algo bueno. Saludos.
  #8 (permalink)  
Antiguo 13/07/2005, 22:43
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 12 años, 5 meses
Puntos: 1
Bueno ZydRick en lugar de una pescastes dos formas :P creo que mas no se puede hacer ya que esta lo que querias :P asi que ya tienes hasta de donde escojer jejejjee
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 11:01.