Foros del Web » Programando para Internet » PHP »

Formatear consulta

Estas en el tema de Formatear consulta en el foro de PHP en Foros del Web. hola, estoy presentando una consulta que estoy haciendo a mi bd, tengo un campo de texto extenso el cual necesito separar por titulos, es decir ...
  #1 (permalink)  
Antiguo 11/07/2006, 18:54
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Formatear consulta

hola, estoy presentando una consulta que estoy haciendo a mi bd, tengo un campo de texto extenso el cual necesito separar por titulos, es decir dentro de este texto tengo por ejemplo

TITULO 1 contenido texto, contenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido texto TITULO 2 contenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido texto

lo que necesito es que al presentarlo pueda separar TITULO 1 y ojala poder darle negrilla de tal forma que al verlo aparezca algo asi:

TITULO 1

contenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido texto

TITULO 2

contenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido textocontenido texto

es posible lograr esto?
__________________
Say no more.......
  #2 (permalink)  
Antiguo 11/07/2006, 19:38
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Holas,

si separarias un titulo1 de un titulo2 por ejemplo asi:

TITULO1 %contenidotexto contenidotexto contenidotexto contenidotexto.... *TITULO2 %contenidotexto contenidotexto contenidotexto contenidotexto....

Alli estarias separando el titulo del contenido y varios titulos y contenido de otros, y alli recien seria mas optimo en separarlos.

/* el contenido del campo '¡contenido' lo separas por array */
$arr_titulo_contenido = split('*',$rw[contenido]);

/* y el contenido del array en partes (titulo y contenido) */
$arr_titulo = split('*',$arr_titulo_contenido[0]);
$arr_contenido = split('*',$arr_titulo_contenido[1]);



Saludos
Gildus
__________________
.: Gildus :.
  #3 (permalink)  
Antiguo 11/07/2006, 19:57
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 19 años
Puntos: 0
De acuerdo

Creo que te puede servir hacer un explode

Código PHP:
  $textodelaBD "TITULO txt contenido TITULO txt contenido, etc...";

$arrayTextos explode("TITULO"$textodelaBD);
//y luego exploras con un bucle
for($i=1$i<count($arrayTextos); $i++){
    echo 
"<b>TITULO</b><br>"$arrayTextos[$i] ."<br>";

Proba con esto
Suerte
  #4 (permalink)  
Antiguo 11/07/2006, 20:04
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
EL problema del ultimo script es q si no sabes cual va a hacer el titulo, no vas a saber q ponerle de parametro a EXPLODE....
Creo q si despues de cada titulo hay q agregarle un caracter especial para identificarlo como texto.. como te lo dijo gildus...
Saludos..
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #5 (permalink)  
Antiguo 11/07/2006, 20:12
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 19 años
Puntos: 0
...no lo explique, pero en el caso del script que puse el parámetro obviamente es "TITULO"...esta sobreentendido ;P
O sea lo que te sirve de referencia o parametro al explode para decirle a partir de donde y hasta donde armar el elemento de un array
  #6 (permalink)  
Antiguo 11/07/2006, 20:21
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Si si ya lo se... pero si tienes una cadena donde el titulo no dice:TITULO 1 ,,, si no que dice:"Introduccion a PHP" ,por ejemplo...es a lo q me refiero..
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #7 (permalink)  
Antiguo 11/07/2006, 22:47
 
Fecha de Ingreso: mayo-2005
Mensajes: 72
Antigüedad: 18 años, 10 meses
Puntos: 1
tienes que ponerle un delimitador el cual no vayas a usar en el texto tal como (*, --, []) etc... para entonces lo puedas separar con un explode...
__________________
Diseñador Gráfico / Programador PHP / Cisco Certified Network Associate (CCNA) / CSS / Java Scripting / SQL / C-Scripting / Entre otros...

:cool:
BOX
  #8 (permalink)  
Antiguo 12/07/2006, 14:00
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
la verdad no me queda muy claro la manera de hacerlo, alguien sabe de un manual o un tut para hacerlo?
__________________
Say no more.......
  #9 (permalink)  
Antiguo 12/07/2006, 15:53
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 19 años
Puntos: 0
Es verdad...B** tenia razon en sus observaciones...pasa que estaba medio dormido
Bueno, vamos a hacer de cuenta que el contenido de tu BD es este
Código PHP:
"Titulo txtxtxtxtxtx txtxtxtxtxxtx txtxtxtxtx. Titulo2 txt2 txt2 txt2 txt2" 
. Para poder separar y darle formato a tu texto deberia de haber un caracter especial que sirva de parametro y asi dividir los bloques titulo/texto y a su vez subdividirlos y poner el titulo y el texto debajo de este, entonces el texto de la BD tendria que estar asi
Código PHP:
"*Titulo ||txtxtxtxtxtx txtxtxtxtxxtx txtxtxtxtx. *Titulo2 ||txt2 txt2 txt2 txt2" 
Y ahora vamos a mostrar con un EXPLODE el contenido ya formateado
Código PHP:
$textodelaBD "*TITULO1 ||Esta doble barra vertical divide el texto del titulo txt contenido *TITULO2 ||txt contenido2, etc...";

$arrayTextos explode("*"$textodelaBD);
//y luego exploras con un bucle
//str_replace("sdf", 
for($i=1$i<count($arrayTextos); $i++){
    echo 
"<b>"str_replace('||''</b><br />'$arrayTextos[$i]) ."<br />";

El explode(); lo que hace es buscar por medio del parametro que le indiquemos (en este caso el asterisco) y dividir el contenido justo donde este este parametro. Y con el str_replace(); dividimos el titulo del texto-contenido sirviendonos de un bucle for para lograr esto.
Espero que te sirva de algo.
Suerte!! y saludos
  #10 (permalink)  
Antiguo 12/07/2006, 18:12
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
ok, ya lo probe y funciona bien, eso es lo que quiero, pero resulta que cuando lo pongo dentro de mi tabla no me funciona, lo estoy poniendo asi:

Código PHP:
while ($row=mysql_fetch_array($datos))
        {
            {
            
        echo 
'<tr><td><b>'." Evento : ".'</b></td>';
            echo 
'<td><b>'.$row["nombre_evento"].'<b></td></tr>';
            echo 
'<tr><td><b>'."Descripcion del Evento : ".'</b></td>';
            echo 
'<td>'.$row["pres_evento"].'</td></tr>';
            echo 
'<tr><td><b>'."Dirigido a : ".'</b></td>';
            echo 
'<td>'.$row["dirigido"].'</td></tr>';
            echo 
'<tr><td><b>'."Objetivo : ".'</b></td>';
            echo 
'<td>'.$row["objetivo"].'</td></tr>';
            echo 
'<tr><td><b>'."Fecha de Inicio : ".'</b></td>';
            echo 
'<td>'.$row["inicio_evento"].'</td></tr>';
            echo 
'<tr><td><b>'."Fecha de Finalizacion : ".'</b></td>';
            echo 
'<td>'.$row["final_evento"].'</td></tr>';
            echo 
'<tr><td><b>'."Fecha de Finalizacion : ".'</b></td>';
            echo 
'<td>'.$row["final_evento"].'</td></tr>';
            echo 
'<tr><td><b>'."Horario : ".'</b></td>';
            echo 
'<td>'.$row["hora_evento"].'</td></tr>';
            echo 
'<tr><td><b>'."Agenda / Contenidos a Desarrollar : ".'</b></td>';
            echo 
'<td>'$agenda=$row["agenda"];
            
$arrayTextos explode("*"$agenda);
            
            for(
$i=1$i<count($arrayTextos); $i++) {
            echo 
"<b>"str_replace('||''</b><br />'$arrayTextos[$i]) ."<br />"'</td></tr>';
            echo 
'<tr><td><b>'."Lugar de Realizacion : ".'</b></td>';
            echo 
'<td>'.$row["lugar"].'</td></tr>';
            echo 
'<tr><td><b>'."Conferencistas : ".'</b></td>';
            echo 
'<td>'.$row["conferencista"].'</td></tr>';
            echo 
'<tr><td><b>'."Valor de la Inversion : ".'</b></td>';
            echo 
'<td>'.$row["valor_evento"].'</td></tr>';
            
?> 
y me saca este error:

Cita:
Parse error: parse error, expecting `','' or `';'' in c:\archivos de programa\easyphp1-8\www\share\modulos\eventos\ver_evento.php on line 44
donde mi linea 44 es:

Código PHP:
echo '<td>'$agenda=$row["agenda"]; 
__________________
Say no more.......
  #11 (permalink)  
Antiguo 12/07/2006, 18:22
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 19 años
Puntos: 0
Fijate que ahi te falta el separador "." (punto) para concatenar el string con php
Código PHP:
echo '<td>'$agenda=$row["agenda"]; // El punto luego del tag <td> 
  #12 (permalink)  
Antiguo 13/07/2006, 20:26
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
De acuerdo

Todo esto si al comienzo te hubieras planificado tu desarrollo, , hubieras hecho lo siguiente, por ejemplo:

tener una tabla con campos por ejemplo:

IdContenido
titulo
texto
...

Y asi en forma ordenada y simple te hubieras evitado problemas de organizar su codigo, .

Si tienes de dudas sobre como organizarlas, avisanos, .

Saludos
Gildus
__________________
.: Gildus :.
  #13 (permalink)  
Antiguo 14/07/2006, 07:40
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
nada,

lo puse asi
Código PHP:
    echo '<td>'$agenda=$row["agenda"];
            
$arrayTextos explode("*"$agenda);
            
            for(
$i=1$i<count($arrayTextos); $i++) {
            echo 
"<b>".  str_replace('||''</b><br />'$arrayTextos[$i]).; "<br />"'</td></tr>'
y nada, me saca el error

Cita:
Parse error: parse error, expecting `','' or `';'' in c:\archivos de programa\easyphp1-8\www\share\modulos\eventos\ver_evento.php on line 48
donde la linea 48 es

Código PHP:
echo "<b>".  str_replace('||''</b><br />'$arrayTextos[$i]). "<br />"'</td></tr>'
__________________
Say no more.......
  #14 (permalink)  
Antiguo 14/07/2006, 11:32
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 19 años
Puntos: 0
Proba poniendola asi, quizas tenes un conflicto de "comas"
Código PHP:
echo "<b>".  str_replace('||''</b><br />'$arrayTextos[$i]). "<br /></td></tr>"
  #15 (permalink)  
Antiguo 15/07/2006, 17:43
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Cita:
Iniciado por el_cesar
nada,

lo puse asi
Código PHP:
    echo '<td>'$agenda=$row["agenda"];
            
$arrayTextos explode("*"$agenda);
            
            for(
$i=1$i<count($arrayTextos); $i++) {
            echo 
"<b>".  str_replace('||''</b><br />'$arrayTextos[$i]).; "<br />"'</td></tr>'
y nada, me saca el error



donde la linea 48 es

Código PHP:
echo "<b>".  str_replace('||''</b><br />'$arrayTextos[$i]). "<br />"'</td></tr>'


Si te das cuenta tu error esta aqui

[$i]). "<br />"'</td></tr>';

que estas juntando dos cadenas

"<br />"'</td></tr>';

y deberia ser asi:

"<br /></td></tr>'; o sino "<br />".'</td></tr>';


Saludos
Gildus
__________________
.: Gildus :.
  #16 (permalink)  
Antiguo 17/07/2006, 13:02
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
nada, lo puse asi

Código PHP:
echo "<b>" str_replace('||''</b><br />'$arrayTextos[$i]) "<br />".'</td></tr>'
y me sigue sacando el error
__________________
Say no more.......
  #17 (permalink)  
Antiguo 17/07/2006, 19:17
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Cita:
Iniciado por el_cesar
nada, lo puse asi

Código PHP:
echo "<b>" str_replace('||''</b><br />'$arrayTextos[$i]) "<br />".'</td></tr>'
y me sigue sacando el error

pues otra vez lo mismo, ,si te fijas, esto debe ser asi:


Código PHP:
echo "<b>" str_replace('||''</b><br />'$arrayTextos[$i])."<br />".'</td></tr>'

Te faltaba un punto




Saludos
Gildus
__________________
.: Gildus :.
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:00.