Darse de alta en la web | Recuperar password   
Inicio / Foros / PHP / datos de consulta con su link
26 respuestas recibidas | 268 visitas | Categoría PHP

datos de consulta con su link

Avatar de astur28
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 42 posts)

#0 Offline astur28 Usuario 28 feb 08 (23:27)  
Hola gente hacia ya unos dias q no aparecia por aki. Tengo una consulta q haceros, es q hice una consulto en la base de datos de un script d contactos anonimos y queria poner un bloque d las ultimas incorporaciones aportada, cosa q ya tengo realizado y conseguido pero solo me sale lo q es el texto del titulo y quisiera q pulsando ahi llevara a ver la entrada completa como puedo hacer eso?

gracias d antemano

datos de consulta con su link

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#1 Offline jurena Usuario 28 feb 08 (23:53)  
Junto con el título te bajas el id de los que quieras mostrar y luego envías por URL ese id, es decir, por GET, y lo recoges en la página php donde al llegar ese dato recogido por $_GET lanza una consulta que trae y muestra todos los datos de ese registro. Creo que hay varias formas posibles, pero, si quieres probar esta, es fácil:
en la primera consulta te traes los titulos y los id
los cargas en el array y luego pones la información en el enlace:
<a href="paginadestino.php?variableid=<?php echo $row['id'];?>">$row['titulo']</a>
muestra el título, pero pasa por URL el id en la variableid
luego lo recoges en la paginadestino.php con
$id=$_GET['variableid'];
luego lanzas la consulta en el caso de que exista variableid y no esté vacía
if (isset($id) && !empty($id)) {
SELECT campo1, campo2, campo3, etc. FROM tabla WHERE id=$id;
cargas y muestras los datos como quieras}

Este es un modo, y no he comprobado todos los pasos, pero creo que es así.

Re: datos de consulta con su link

Avatar de astur28
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 42 posts)

#2 Offline astur28 Usuario 29 feb 08 (00:10)  
Muchas gracias por la molestia y por la rapidez.....

Verás he hecho clic en una de las entradas para ver como era en la direccion que mostraba la entrada como era y esto es el resultado, me sale el directorio del script, luego una / y luego lo que seria
showthread_223.html#

donde 223 es el id en concreto de esa entrada que he visualizado

Re: datos de consulta con su link

Avatar de astur28
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 42 posts)

#3 Offline astur28 Usuario 29 feb 08 (01:18)  
Bueno a ver he conseguido algo pero aún es poco..... pues solo me muestra 1 entrada, en este caso la ultima añadida que ha sido he pedido en la consulta.....
os pongo el codigo a ver si veis que he de añadir o quitar o como hacer.....
Os ruego un poco de paciencia conmigo que soy novatillo y sobretodo que no os riais eh!!! (es una orde!!!! jejejej)

Código PHP


$query= "SELECT
id,
title
FROM
posts
ORDER BY id DESC
LIMIT 0,5";

$result=mysql_query($query)
or die(mysql_error());
$rows=mysql_fetch_assoc($results);
?>


y luego para hacer mostrarlo he puesto
<a href="direccionweb/directorio/showthread_<?php echo $rows['id'];?>.html"><?php echo $rows['title'];?></a>

Como os digo funciona perfectamente, sale la ultima entrada con su enlace que redirecciona perfectamente pero me gustaria que me mostrase al menos las ultimas 5 como he puesto en la consulta pero no va.....

Gracias

te explico el método

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#4 Offline jurena Usuario 29 feb 08 (09:41)  
A ver cuál es el problema. Imaginemos que tienes dos archivos, uno php llamado archivo1.php (no sé como se llama el tuyo), en el que procesas, y el otro un archivo html llamado archivo2.html (tampoco nos has dicho el nombre) en el que muestras los resultados.
1) la consulta en el archivo php archivo1.php
//aquí la conexión...
$query= "SELECT id, title FROM posts ORDER BY id DESC LIMIT 0,5";
$result=mysql_query($query)
or die(mysql_error());
$rows=mysql_fetch_assoc($results);
require_once 'archivo2.html';//remites al archivo html

2) Ya en el archivo html recoges los datos
do {echo '<a href="archivo1.php?variableid=<?php echo $rows['id'];?>"><?php echo $rows['titulo']; ?></a>';} while ($rows=mysql_fetch_assoc($results));//observa que la dirección es el nombre del archivo al que diriges la información y con su terminación. Y que hemos interado con do... while para que te salgan las 5 elegidas. Ahora verás los 5 enlaces en los que se mostrará el título y, si lo hemos hecho bien, al pulsar un enlace pasará el id correspondiente por la URL en la variable llamada variableid

3) luego lo recoges en archivo1.php, donde la has enviado, con
$id=$_GET['variableid'];
dentro de ese archivo php, lanzas una nueva consulta en el caso de que exista variableid y no esté vacía
if (isset($id) && !empty($id)) {
$query2="SELECT campo1, campo2, campo3, etc. FROM tabla WHERE id=$id";
haces el $results2= mysql_query($query2) y el $rows2=mysql_fetch_assoc ($results2) y, si quieres, puedes enviar otra vez al archivo html mediante otro require_once o a otro html distinto, o lo muestras en el archivo php; en el caso de que fuera otro archivo ajeno al archivo php donde procesas, es necesario el require_once 'nombrearchivo.html'; y luego en ese archivo html recoges el array mediante ... do {echo los campos que quieras} ... while ($rows2=mysql_fetch_assoc ($results2)) ;}
?>
Inténtalo a ver si esos eran los problemas

Suerte

Re: datos de consulta con su link

Avatar de astur28
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 42 posts)

#5 Offline astur28 Usuario 29 feb 08 (10:37)  
Gracias luego a la tarde probare a ver si asi me va.... pero yo solamente en lo que he conseguido hacer a sido solo mediante un unico archivo. (al que he llamado en modo de prueba 'confesiones.php'). lo otro que sale de html es como esta el script en cuestión a la hora de hacer una vista de una entrada!

Muchas gracias

en un solo archivo

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#6 Offline jurena Usuario 29 feb 08 (11:18)  
1) la consulta en el archivo php confesiones.php
//aquí la conexión...
$query= "SELECT id, title FROM posts ORDER BY id DESC LIMIT 0,5";
$result=mysql_query($query)
or die(mysql_error());
$rows=mysql_fetch_assoc($results);

2)
muestras los datos:
do {echo '<a href="confesiones.php?variableid=<?php echo $rows['id'];?>"><?php echo $rows['titulo']; ?></a>';} while ($rows=mysql_fetch_assoc($results));//observa que la dirección es el mismo archivo. Se trata del mismo al que rediriges, pues necesitas cargar el dato que antes de pulsar el enlace no tenías. Y que hemos iterado con do... while para que te salgan las 5 elegidas. Ahora verás los 5 enlaces en los que se mostrará el título y, si lo hemos hecho bien, al pulsar un enlace pasará el id correspondiente por la URL en la variable llamada variableid

3) en confesiones.php, debes tener antes de hacer la consulta sobre ese id
$id=$_GET['variableid'];
dentro de ese confesiones.php, lanzas esa nueva consulta en el caso de que exista variableid y no esté vacía
if (isset($id) && !empty($id)) {
$query2="SELECT campo1, campo2, campo3, etc. FROM tabla WHERE id=$id";
haces el $results2= mysql_query($query2) y el $rows2=mysql_fetch_assoc ($results2) y luego muestras los datos con do {echo los campos que quieras} ... while ($rows2=mysql_fetch_assoc ($results2)) ;}
?>
Prueba esto

Re: datos de consulta con su link

Avatar de astur28
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 42 posts)

#7 Offline astur28 Usuario 29 feb 08 (14:48)  
Gracias ne.... tengo una dudilla... ese <a href="archivo1.php?......... sera otro archivo que tengo que crear o ahi iria lo que seria la direccion del script?

datos de consulta con su link

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#8 Offline jurena Usuario 29 feb 08 (15:23)  
esa es la dirección de destino. En realidad, lo que haces es, según creo, pasar el dato a ese archivo. Si sólo usas un archivo tienes que poner el nombre del archivo. Volverá a aparecer la misma página, pero habrás pasado el dato que necesitas a través de la URL. Existen otras formas, pero esta es así. Tú tienes que poner confesiones.php y volverá a tu script con el dato del id. Y nada más llegar se pondrá en marcha la parte del código que controla la llegada de esa variable con su contenido.
EDITO el post #6 para corregirlo (me olvidé de ponerte el nombre confesiones.php).

Re: datos de consulta con su link

Avatar de astur28
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 42 posts)

#9 Offline astur28 Usuario 29 feb 08 (17:19)  
algo no he comprendido o tengo mal pq ahora no me muestra nada... sale la pag en blanco, pongo el archivo confesiones.php tal cual lo he dejado...

Código PHP


$id=$_GET['variableid'];

$query= SELECT
id,
title
FROM
posts
ORDER BY id DESC
LIMIT 0,5;

$results=mysql_query($query)
or die(mysql_error());
$rows=mysql_fecht_assoc($results);


do {
echo '<a href="direccion del servidor donde tengo el archivo/ confesiones.php?variableid=<?php echo $rows['id'];?>"> <php echo $rows['title'];?></a>';}
while ($rows=mysql_fetch_assoc($results));

if isset($id) &&! empty($id)) {
$query2="SELECT
id,
title
FROM
post
WHERE id=$id";

$results2=mysql_query($query2)
or die(mysql_error());
$rows2=mysql_fetch_assoc ($results2);

do {
echo $title;
}
while ($rows=mysql_fetch_assoc($results2));}

?>

esto ya te debe funcionar

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#10 Offline jurena Usuario 29 feb 08 (18:55)  
He creado una base llamada astur28 con una tabla llamada posts a la que he añadido un campo comentario, y he añadido comentario para cada titulo. Mi objetivo es que veas que carga los datos de cada titulo al pulsar el enlace. Había algunos errores $row por $rows, la tabla una vez la llamas post y otras posts, algunos cierres mal puestos y tu empeño por poner la dirección del servidor cuando debes poner el nombre del archivo solamente con su terminación tras el href. También he cambiado algo el uso de las comillas.
Cambia los nombres de la base y tabla que he puesto por los tuyos al hacer la conexión y en la segunda selección pon, en lugar de comentario, los campos que te interesen y muéstralos mediante el echo. Prueba y dinos qué tal

Código PHP


<?php

$link
= mysql_connect ('localhost', 'root', '');
    if (!
$link){
        echo
'error al conectar';
        die;
    }
    
$bd = mysql_select_db('astur28');
    if (!
$bd){
        echo
'error al seleccionar la base de datos';
        die;
    }
        
$id=$_GET['variableid'];

$query= "SELECT id,title FROM posts ORDER BY id DESC LIMIT 0,5";
$results=mysql_query($query) or die(mysql_error());
$rows=mysql_fetch_assoc($results);

do {
  
?><a href="confesiones.php?variableid=<?php echo $rows['id'];?>"><?php echo $rows['title'];?><br></a><?php ;}
while (
$rows=mysql_fetch_assoc($results));

if (isset(
$id) &&!empty($id)) {
$query2="SELECT id, title, comentario FROM posts WHERE id=$id";
$results2=mysql_query($query2) or die(mysql_error());
$rows2=mysql_fetch_assoc ($results2);

do {
echo
'El título seleccionado es: '. $rows2['title'].' y su comentario es: '.$rows2['comentario'];
}
while (
$rows2=mysql_fetch_assoc($results2));}

?>


Suerte

Re: datos de consulta con su link

Avatar de astur28
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 42 posts)

#11 Offline astur28 Usuario 29 feb 08 (22:53)  
Bueno haber que esto me acabara por volver loco..... he cogido y copiado el codigo que habias puesto ahi arriba, eso si he cambiado los datos de la conexion y demás.... ahora bien... ya no sale la pagina en blanco, pero solo muestra dos entradas.... la primera y la segunda ultimas entradas. hasta ahi medio bien, pues no salen las 5 que habian de mostrar al indicarle eso no?. Por otra parte si hago poso el raton encima y observa la direccion que muestra no es la que debe de cargar para llevar correctamente a la pagina donde esta la entrada........
pues sale algo tal que asi: http://www.xxxxxxxxxxx.com/directorio_donde_tengo_el_confesiones.php?variableid=233

Cuando el enlace para que cargue correctamente la pagina debe de ser: http://www.xxxxxxxxxx.com/confesiones/showthread_223.html


En cambio ahi en el <a href=.....> ya probado con tu codigo y probando le he puesto la direccion que como ayer consegui que mostrara solo una....(es decir:"http://www.xxxxxxxxxx.com/confesiones/showthread_<?php echo $rows['id'];?>"><?php echo $rows['title'];?> y asi me sigue mostrando las dos entradas de antes, pero ahora si funciona bien el enlace a la pagina correcta para ver la entrada en concreto.....

ahh y por ejemplo con el codigo que tu has creado deberia de mostrar lo de "el título seleccionado es: y su comentario es: no? pues no me sale eso tampoco, solo que cambie los campos que tu habias puesto, pero deje esas frases intactas y eso no me sale solo las dos entradas que dije anteriormente, usease las dos ultimas.
Gracias

otra vez

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#12 Offline jurena Usuario 01 mar 08 (09:07)  
astur28,
No desesperes, amigo, lo que yo te he puesto, funciona en mi ordenador: me muestra las cinco últimas y cuando pulso sobre su enlace aparecen debajo los datos del enlace pulsado. Pero yo sólo tengo un documento php donde proceso y muestro, que es lo que creía tenías tú. Parece como si tú tuvieras un archivo html para mostrar los datos, un archivo al que llamas showthread, ¿no es así? Pero olvidémonos de momento de ese archivo.

Haz lo que ahora te propongo. Crea un archivo php llamado confesionesprueba en la misma carpeta donde tienes confesiones y escribe este código con la conexiones pertinentes:

Código PHP


<?php

$link
= mysql_connect ('localhost', 'root', '');//aquí pon los datos de tu conexión
    
if (!$link){
        echo
'error al conectar';
        die;
    }
    
$bd = mysql_select_db('nombretubase');//aquí pon el nombre de tu base
    
if (!$bd){
        echo
'error al seleccionar la base de datos';
        die;
    }
        
$id=$_GET['variableid'];

$query= "SELECT id,title FROM posts ORDER BY id DESC LIMIT 0,5";
$results=mysql_query($query) or die(mysql_error());
$rows=mysql_fetch_assoc($results);

do {
  
?><a href="confesionesprueba.php?variableid=<?php echo $rows['id'];?>"><?php echo $rows['title'];?><br></a><?php ;}//aquí no cambies nada
while ($rows=mysql_fetch_assoc($results));

if (isset(
$id) &&!empty($id)) {
$query2="SELECT id, title FROM posts WHERE id=$id";
$results2=mysql_query($query2) or die(mysql_error());
$rows2=mysql_fetch_assoc ($results2);

do {
echo
'El título seleccionado es: '. $rows2['title'];
}
while (
$rows2=mysql_fetch_assoc($results2));}

?>



y cuando hayas hecho todo eso, lo guardas y luego lanzas el archivo confesionesprueba.php en localhost

entonces probablemente verás lo que yo veo: cinco enlaces que pulsados muestran cada uno su título debajo, y todo ello en el mismo documento.

Si es así, tocará pasar a ver cómo trabajar con un archivo html para mostrar los datos
Prueba y dinos

Re: datos de consulta con su link

Avatar de astur28
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 42 posts)

#13 Offline astur28 Usuario 01 mar 08 (13:50)  
ahora voy a probar y meter este codigo en el mismo directorio del script confesiones a ver que pasa.... Como me preguntas el script ese de confesiones esta programado de tal manera que cuando tu pulsas en una entrada para verla en toda su totalidad en la barra de direccion lo que muestra es eso.: /confesiones/showthread_233.html,
donde el 233 es la id de la entrada en cuestión.

Muchas gracias por todas las molestias que te estas tomando, la verdad que este foro tiene eso de bueno, estais siempre ahi y ayudais hasta el final, si fuesen otros foros ya me hubiesen votado por pesado jejejje

Re: datos de consulta con su link

Avatar de astur28
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 42 posts)

#14 Offline astur28 Usuario 01 mar 08 (14:03)  
Nada seguimos igual bien en el directorio donde lo tenia antes como dentro del propio directorio del confesiones.
Sigue mostrando los dos enlaces pero poniendo el curso para ver el link donde apunta y dice:
confesiones/confesionesprueba.php?variableid=223, es por ello que cuando yo puse en el <a href> ayer la direccion tal cual deberia mostrarla y añadiendo el echo['id'] y el echo['title'] si lo cargaba bien, pero claro solamente las dos entradas y no las 5... menuo lio joer!

aunque no estoy seguro

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#15 Offline jurena Usuario 01 mar 08 (15:15)  
tal vez el problema es de directorio raíz, es decir, de dónde tienes grabado el script de php que activas. Es decir, en mi caso, que uso WAMP, mi directorio raíz está dentro de una carpeta llamada phpmyadmin, que a su vez está dentro de otra carpeta wamp, y esa carpeta, a su vez, está en C:. En la URL lo que me aparece es ... http://localhost/phpmyadmin/ que en realidad a efectos de dirección significa c://wamp/phpmyadmin/
pues bien, los archivos que quiero procesar deben estar dentro de la carpeta phpmyadmin, y no en la siguiente ni en la anterior. Tal vez tú has creado una carpeta confesiones y has metido en su interior todos los scripts. O tal vez, el script que copias no es el que se pone en marcha: observo que siempre te sale lo mismo: es como si arrancaras otro script que no ha cambiado desde tiempo atrás. Busca tu directorio raíz, que tenga una posición parecida a la del mío, y mete allí los scripts. Tal vez deberías sacarlos de la carpeta confesiones y meterlos en la carpeta anterior; en todo caso, debes buscar tu directorio raíz. No sé si servirá de algo, pero es lo que se me ocurre. Y no te preocupes, no es ningún lío, pues seguimos descartando...
En todo caso, podrías ponernos tu script completo y si tienes algún otro archivo...

Re: datos de consulta con su link

Avatar de astur28
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 42 posts)

#16 Offline astur28 Usuario 01 mar 08 (20:27)  
Todos los archivos del script estan bajo el directorio de nombre confesiones. el caso es que poniendo como te dije ya en varias ocasiones en el <a href> la direccion como muestra las entradas y luego añadiendo lo que es el [''id'] y el ['title'] pues va bien, solo que solo me salen los dos últimos, osease qeu la cosa no anda muy lejos de que lo consigamos sacar todo completo.

Gracias una vez más que no me cansare de decir....

tal vez la consulta

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#17 Offline jurena Usuario 01 mar 08 (20:41)  
Es esta la consulta: SELECT id,title FROM posts ORDER BY id DESC LIMIT 0,5
Cuántos datos tienes en tu base y mira si tienen bien asignado el id...

Re: datos de consulta con su link

Avatar de astur28
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 42 posts)

#18 Offline astur28 Usuario 01 mar 08 (21:46)  
Con datos en la base te refieres a cuantas entradas hay en la base de datos? pues unas cuantas......
y cuando yo en esos intentos de probar he puesto en el <a href> y luego añadiendo el echo id y el echo title y al visualizar la pagina correctamente dirije a esa entrada en concreto.....

Re: datos de consulta con su link

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#19 Offline jurena Usuario 01 mar 08 (23:15)  
No, me refiero a que si el identificador funciona bien. Intenta hacer ORDER BY title LIMIT 0,5 en lugar de order ORDER by id LIMIT 0,5 en la consulta a ver si sale más de uno.

Re: datos de consulta con su link

Avatar de astur28
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 42 posts)

#20 Offline astur28 Usuario 02 mar 08 (01:18)  
YA ESTA!!!!!! totalmente toda la razón tenias.... el problema estaba en lo de la id.... pero en lugar de como decias de ordenarlo por title,,,, puesto que lo ordenaria por alfabetizacion, le meti consulta en la base de datos de 'time_stamp' y asi lo muestra.....
en la <a href> puse al final como yo lo hacia.... y asi va de perlas..... ahora aplicare esto mismo.... para otro bloque que hice sobre los top-users del foro, que tambien habia conseguido extraer pero que no tenian link al perfil.

Pues nada mira el tiempo que hemos y sobretodo 'has' perdido por culpa de esta tonteria.....
Un millon de gracias!

te aclaro

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#21 Offline jurena Usuario 02 mar 08 (08:49) Valor Valor Valor  
cuando te pedí que ordenaras por title, lo hice para que ordenaras y limitaras por otro campo, pues sospechaba que el problema era el id, y, visto lo visto, había que intentarlo. Lo que no entiendo es por qué, qué clase de id pusiste y qué datos te guardaba en la base para no ordenarte y limitarte bien. La sustitución por timestamp no está mal en tu caso si el timestamp es de inicialización automática solamente, porque, si es de inicialización y actualización automática, te sacaría, según creo, noticias antiguas en las que hubieses hecho alguna corrección. En cuanto a lo otro, al modo en que haces el href también sigo teniendo mis dudas, pero si te funciona, adelante. Hemos llevado a cabo un debugueo un poco chapucero, pero al final tuvimos algo de suerte. Y a veces se aprende mucho haciendo estas cosas.
Saludos

una pequeña mejora?

Avatar de astur28
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 42 posts)

#22 Offline astur28 Usuario 05 mar 08 (18:58)  
Holas por aki estoy de nuevo haber si ahora me ayudais con esta otra mejora o añadido, quisiera poner en la consulta de la base de datos el campo body, con el cual mostraria el texto escrito, pero me lo mostraria completo, como puedo hacer para limitarlo a unos caracteres solamente, es decir que salgan algunas palabras del comienzo del texto y luego se corte.

Haber si lo podemos conseguir. saludos!

varias soluciones

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#23 Offline jurena Usuario 05 mar 08 (22:54)  
astur28
Debías haber abierto un nuevo post, pues se trata de un tema distinto y poca gente entrará a este post a ayudarte.
En principio te diría que con substring, tanto en PHP como en MySQL, podrías solucionarlo.
Para eso mira estas direcciones:
http://es.php.net/manual/es/function.substr.php
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring
pero te estaría ocultando parte de la verdad, es decir, no te diría que eso cortaría palabras en muchas ocasiones produciendo un efecto poco estético.
Para solucionar ese tema te hago dos propuestas, que son dos funciones:
La primera función corta por número de palabras y no es mía, sino que la he tomado de http://www.forosdelweb.com/f18/cortar-texto-por-palabras-no-por-caracteres-529940/, donde la ofrece GatorV, aunque he tenido que corregir algún detalle. Sólo tienes que indicar por qué número de palabras quieres que te corte y te cortará y añadirá puntos suspensivos, si es que el texto tiene más palabras

Código PHP


<?php
    
function limit_text($text, $limit) {
      if (
str_word_count($text) > $limit) {
          
$words = str_word_count($text, 2);
          
$pos = array_keys($words);
          
$text = substr($text, 0, $pos[$limit]) . '...';
      }
      return
$text;
    }
    
$texto="Esto es una prueba de corte de cadena por número de palabras que he encontrado en la Web.";
    echo
limit_text($texto, 12).'<br>';



Pero si quieres cortar por número de caracteres, te pongo esto otro. Esta segunda función, la que corta por número de caracteres evitando feos cortes de palabras, sí la he programado yo en gran parte y por eso no sé si funcionará del todo bien, aunque la he probado.

Código PHP


<?php
function limitar_texto ($texto, $caracteres) {
    if (
strlen($texto) > $caracteres) {//si el texto tienes más caracteres de los solicitados
    
if ($texto[$caracteres -1 ] != " ")  {//si el texto al cortarlo no coincide con espacio en blanco
    
$texto = substr ($texto, 0, $caracteres);//corta el texto por el número de caracteres y corta la última palabra
    
$corte=strrpos($texto, " ");//buscamos la posición del último espacio en blanco entre palabras, al que siguen las letras cortadas de la última palabra
    
$texto = substr ($texto, 0, $corte).'...';//cortamos y añadimos puntos suspensivos.
    
} else {$texto = rtrim(substr ($texto, 0, $caracteres)).'...';}//si coincide con espacio en blanco, corta, elimina el último espacio en blanco y añade los puntos suspensivos
    
}
    return
$texto;//si tiene menos, presenta el texto completo
    
}
    
$texto2="Esto es una prueba de corte de cadena por número de caracteres sin que se corten palabras";
    echo
limitar_texto ($texto2, 13);//ejemplo aplicado con el número de caracteres
?>


Usa la que te interese
Suerte

PS: también podría hacerse con wordwrap, poniendo como separación una línea y limitando la presentación del texto a la primera línea. Son opciones

Re: datos de consulta con su link

Avatar de astur28
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 42 posts)

#24 Offline astur28 Usuario 07 mar 08 (00:51)  
Muchas gracias... y esto aplicado a esa chapucilla que como has dicho pero que al final hemos hecho funcionar como se aplicaria al campo de la consulta que extraje de la base de datos 'body'

algo asi seria o nunca más lejos de la realidad? jejeje,
echo limit_text ($rows['body'], 12). '<br>;

sí, pero con la función

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#25 Offline jurena Usuario 07 mar 08 (08:04)  
Si te has decidido por la función de número de palabras, ese es el modo de cortar 12 palabras. No olvides copiar la función y ponerla antes, al principio del script, tras <?php y todo lo que tiene que ver con las sesiones...
Pruébala y ya nos dirás si funciona como quieres.
PS: esa elección puede provocar cierta desproporción entre los títulos. Observa que 12 palabras con muchos caracteres ocuparán bastante más espacio que 12 palabras con pocos caracteres: esa es su única desventaja.
Saludos

Re: datos de consulta con su link

Avatar de astur28
Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2 Nivel 2

(Nivel 2 - 42 posts)

#26 Offline astur28 Usuario 09 mar 08 (13:53)  
Si al final asi lo he puesto y va la mar de bien, totalmente como queria, muchas gracias por la colaboracione amigo!!!

Responder mensaje

Para poder participar debes estar registrado e identificado. Si no estás registrado como usuario de PHP-Hispano, :: Registrar ::
Login / Password   

Web alojada en Zilos

php-hispano.net 2002 - 2008 | XHTML 1.0
Datos Legales | Webmaster