Foros del Web » Programando para Internet » PHP »

Limitar descripcion...

Estas en el tema de Limitar descripcion... en el foro de PHP en Foros del Web. Hola a todos, alguien podría decirme que hago mal? Necesito limitar a 15 los caracteres a mostrar en una consulta. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver ...
  #1 (permalink)  
Antiguo 21/05/2013, 03:31
Avatar de xiscomax  
Fecha de Ingreso: febrero-2006
Mensajes: 379
Antigüedad: 18 años, 2 meses
Puntos: 5
Pregunta Limitar descripcion...

Hola a todos, alguien podría decirme que hago mal?

Necesito limitar a 15 los caracteres a mostrar en una consulta.
Código MySQL:
Ver original
  1. SELECT id,sitedesc,url,caption from link where approved='yes' ORDER BY id desc limit 0,5

necesito que "sitedesc" muestre solo 15 caracteres, lo pongo así
Código MySQL:
Ver original
  1. SELECT id,LEFT (sitedesc,15),url,caption from link where approved='yes' ORDER BY id desc limit 0,5
pero no funciona...

Saludos y gracias desde ya.

Última edición por gnzsoloyo; 21/05/2013 a las 03:58 Razón: Codigo de programacion no permitido en foros de BBDD.
  #2 (permalink)  
Antiguo 21/05/2013, 04:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Limitar descripcion...

Por lo pronto, en MySQL no se deben dejar espacios entre el nombre de la funcion y el paréntesis:
Código MySQL:
Ver original
  1. SELECT id, LEFT(sitedesc,15), url, caption
  2. FROM link
  3. WHERE approved='yes'
  4. LIMIT 0,5
Fuera de eso, no debería generarte problemas, por cuanto el manual de referncia dice:
Cita:
LEFT(str,len)

Retorna los len caracteres empezando por la izquierda de la cadena str.
Código MySQL:
Ver original
  1. mysql> SELECT LEFT('foobarbar', 5);
  2.         -> 'fooba'
Nota: Decir "no funciona", no es información suficiente. En todo caso debes decirnos si devuelve error o por qué dices eso.
Trata de ser más específico.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 21/05/2013, 06:18
Avatar de xiscomax  
Fecha de Ingreso: febrero-2006
Mensajes: 379
Antigüedad: 18 años, 2 meses
Puntos: 5
Respuesta: Limitar descripcion...

Gracias por la rápida respuesta, pues mas bien no obtengo ningún error, simplemente no muestra nada.

Luego pruebo eliminando el espacio haber el resultado.
  #4 (permalink)  
Antiguo 21/05/2013, 06:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Limitar descripcion...

Cita:
pues mas bien no obtengo ningún error
En tu código de programación no se veía en ningún momento que estuvieses validando errores posibles de MySQL.
¿Estás validando la salida de la consulta?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 21/05/2013, 08:29
Avatar de xiscomax  
Fecha de Ingreso: febrero-2006
Mensajes: 379
Antigüedad: 18 años, 2 meses
Puntos: 5
Respuesta: Limitar descripcion...

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En tu código de programación no se veía en ningún momento que estuvieses validando errores posibles de MySQL.
¿Estás validando la salida de la consulta?

Ahora si me eh perdido...

Es un script GNU el cual estoy intentando modificar / adaptar y de paso aprender mediante el.

siento mi ignorancia.

¿ pero como tendría en mi caso que validarlo ?

adjunto codigo:

Justo al final pueden verse comentadas, las lineas de código que e ido creando y en concreto la que intento que muestre "x" caracteres.

Código MySQL:
Ver original
  1. require_once('jadro/base.php');
  2.  
  3. definevars("where id='LINK_NEW_WINDOW' or id='META_CATEGORY_DESCRIPTION' or id='RSS_ENABLE' or id='CATEGORY_DESCRIPTION' or id='META_DESC' or id='REWRITE_ENABLED' or id='SITE_DESC' or id='LINKS_PER_PAGE_TOP' or id='CATEGS_PER_COLUMN' or id='FRONT_SUBCATEGS_PER_COLUMN' or id='SUBCATEGS_PER_COLUMN' or id='LINKS_PER_PAGE' or id='FEAT_PER_CAT' or id='SHOW_LATEST_LINKS' or id='SHOW_PREMIUM_LINKS' or id='ENABLE_NUMLINKS' or id='ITEM_DEFAULT_ORDER'");
  4.  
  5. require_once('jadro/redircat.php');
  6.  
  7. if(PHPEYE=='0')
  8. {
  9.     require_once('jadro/smartyfunc.php');
  10.     $categoryid='';
  11.     $uri=rawurlencode($_GET['uri']);
  12.     $uri=str_replace('%2F','/',$uri);
  13.     $sq='';
  14.     if($_GET['c']!='')
  15.     $sq="SELECT id,info,catpath,catname,chid,meta_desc from categories where id='" . intval($_GET['c']) . "'";
  16.  
  17.     if($uri!='')
  18.     $sq="SELECT id,info,catpath,catname,chid,meta_desc from categories where catpath='" . $uri . "'";
  19.  
  20.     if($sq!='')
  21.     {
  22.         $rez=$db->Execute($sq);
  23.         if(!$rez->EOF)
  24.         {
  25.             $row=$rez->FetchRow();
  26.             $categoryid=$row['id'];
  27.             if(REWRITE_ENABLED==0)
  28.             $smarty->assign('chid',$row['chid']);
  29.  
  30.             $smarty->assign('info',$row['info']);
  31.             $smarty->assign('categoryid',$row['id']);
  32.             if(META_CATEGORY_DESCRIPTION==1 && $_GET['p']=='')
  33.             $smarty->assign('meta_description',$row['meta_desc']);
  34.             if(CATEGORY_DESCRIPTION==1 && $_GET['p']=='')
  35.             $smarty->assign('category_description',$row['info']);
  36.  
  37.             $smarty->assign('uri',$row['catpath']);
  38.             $smarty->assign('catname',$row['catname']);
  39.             unset($row);
  40.         }
  41.         $rez->Close();
  42.         unset($rez);
  43.     }
  44.  
  45.     if($uri!='' && $categoryid=='')
  46.     {
  47.         @header('HTTP/1.1 301 Moved Permanently');
  48.         @header('Location: ' . SITE_URL);
  49.         die();
  50.     }
  51.  
  52.     if($categoryid=='' && $_GET['l']=='' && $_GET['pm']=='')
  53.     {
  54.         $smarty->assign('categs_per_col',CATEGS_PER_COLUMN);
  55.         $sq="SELECT catname,id,catpath,numlinks from categories where parrentcatid='0' order by catname";
  56.         $rez=$db->Execute($sq);
  57.         $cats=array();
  58.         while(!$rez->EOF)
  59.         {
  60.             $red=$rez->FetchRow();
  61.             $subcats=array();
  62.             $sq="SELECT catname,id,catpath from categories where parrentcatid='" . $red['id'] ."' order by catname limit 0," . FRONT_SUBCATEGS_PER_COLUMN;
  63.             $rez1=$db->Execute($sq);
  64.  
  65.             while(!$rez1->EOF)
  66.             {
  67.                 $red2=$rez1->FetchRow();
  68.                 $subcats[]=array('catname'=>$red2['catname'],'id'=>$red2['id'],'catpath'=>$red2['catpath']);
  69.             }
  70.             $rez1->Close();
  71.  
  72.             $cats[]=array('id'=>$red['id'],'catname'=>$red['catname'],'subcats'=>$subcats,'catpath'=>$red['catpath'],'numlinks'=>$red['numlinks']);
  73.             unset($subcats);
  74.  
  75.         }
  76.         $rez->Close();
  77.         $smarty->assign('meta_description',META_DESC);
  78.         $smarty->assign('site_desc',SITE_DESC);
  79.         $smarty->assign('categories',$cats);
  80.         unset($cats,$red,$red2,$rez,$rez1);
  81.  
  82.     }
  83.     else
  84.     {
  85.         $list=htmlspecialchars_m($_GET['l']);
  86.         $links_per_page=$br=LINKS_PER_PAGE;
  87.         $feat_per_cat=FEAT_PER_CAT;
  88.         if($br=='')
  89.         $feat_per_cat=$links_per_page=$br='10';
  90.  
  91.         $smarty->assign('sort',$list);
  92.  
  93.         switch($list)
  94.         {
  95.             case 'A':
  96.                 {
  97.                     $order='caption';
  98.                     break;
  99.                 }
  100.             case 'H':
  101.                 {
  102.                     $order='hits';
  103.                     break;
  104.                 }
  105.             case 'P':
  106.                 {
  107.                     $order='pr';
  108.                     break;
  109.                 }
  110.             case 'l':
  111.                 {
  112.                     $order='id desc';
  113.                     $smarty->assign('catname','Ultimos enlaces');
  114.                     break;
  115.                 }
  116.             default:
  117.                 {
  118.                     $order=ITEM_DEFAULT_ORDER;
  119.                     break;
  120.                 }
  121.         }
  122.  
  123.         if($categoryid!='')
  124.         {
  125.             $_GET['p']=(int) $_GET['p'];
  126.             if($_GET['p']=='' || $_GET['p']==0)
  127.             $_GET['p']=1;
  128.  
  129.             if($_GET['p']<2)
  130.             {
  131.                 $smarty->assign('categs_per_col',SUBCATEGS_PER_COLUMN);
  132.                 $sq="SELECT catpath,id,info,catname,numlinks from categories where parrentcatid='" . $categoryid . "' order by catname";
  133.                 $rez=$db->Execute($sq);
  134.                 $subcats=array();
  135.  
  136.                 while(!$rez->EOF)
  137.                 {
  138.                     $red=$rez->FetchRow();
  139.                     $subcats[]=array('id'=>$red['id'],'catname'=>$red['catname'],'catpath'=>$red['catpath'],'numlinks'=>$red['numlinks']);
  140.                 }
  141.  
  142.                 $smarty->assign('categories',$subcats);
  143.  
  144.                 $rez->Close();
  145.                 unset($subcats,$rez);
  146.             }
  147.  
  148.             $sq="SELECT count(*) from link where featured='0' and approved='yes' and categoryid='" . $categoryid . "'";
  149.             $o_links=$db->GetOne($sq);
  150.  
  151.             $sq="SELECT count(*) from link where featured='1' and approved='yes' and categoryid='" . $categoryid . "'";
  152.             $num_splinks=$db->GetOne($sq);
  153.  
  154.             $br=($_GET['p']-1)*$br;
  155.  
  156.             $sq="SELECT id,sitedesc,url,caption,sitedesc,categoryid from link where featured='1' and approved='yes' and categoryid='$categoryid' order by $order limit 0,$feat_per_cat";
  157.                  
  158.             $linkovi=$db->GetAll($sq);
  159.  
  160.             $smarty->assign('featlinks',$linkovi);
  161.  
  162.             $sq="SELECT id,sitedesc,url,caption,sitedesc,hits,sitedesc,categoryid from link where featured='0' and approved='yes' and categoryid='$categoryid' order by $order limit $br,$links_per_page";
  163.  
  164.             $linkovi=$db->GetAll($sq);
  165.  
  166.             $smarty->assign('links',$linkovi);
  167.             $smarty->assign('linksperpage',$links_per_page);
  168.             $smarty->assign('numfeatlinks',$num_splinks);
  169.             $smarty->assign('numlinks',$o_links);
  170.             $smarty->assign('page',$_GET['p']);
  171.             unset($linkovi,$o_links,$links_per_page,$num_splinks);
  172.         }
  173.         else
  174.         {
  175.             if($_GET['pm']=='')         /* LATEST */
  176.             {
  177.             $sq="SELECT id,sitedesc,url,caption,sitedesc,hits,sitedesc,categoryid from link where approved='yes' order by $order limit 0," . LINKS_PER_PAGE_TOP;
  178.             $linkovi=$db->GetAll($sq);             
  179.             $smarty->assign('links',$linkovi);
  180.             $smarty->assign('numlinks',count($linkovi));
  181.            
  182.                
  183.             }
  184.             elseif($_GET['pm']!='')     /* PREMIUM */
  185.             {
  186.                 $sq="SELECT id,sitedesc,url,categoryid,caption from link where featured='1' and approved='yes' order by id desc limit 0," . LINKS_PER_PAGE_TOP;
  187.            
  188.             $linkovi=$db->GetAll($sq);         
  189.             $smarty->assign('catname','Enlaces premium');
  190.             $smarty->assign('featlinks',$linkovi);
  191.             $smarty->assign('numlinks',count($linkovi));
  192.             }
  193.             unset($linkovi);
  194.         }
  195.     }
  196. }
  197.  
  198.  
  199. /* Ultimos Enlaces index */
  200. $newlinks=$db->GetAll("SELECT id,sitedesc,url,caption,sitedesc,hits,sitedesc,categoryid from link where approved='yes' ORDER BY id desc limit 0,100"); //0,5 para mostrar 5 enlaces        
  201. $smarty->assign('newlinks',$newlinks);
  202. /* Fin ultimos enlaces index */
  203.  
  204.  
  205.  
  206. /* Top enlaces */    
  207. $toplink=$db->GetAll("SELECT id, LEFT(sitedesc,15), url, caption FROM link WHERE approved='yes' ORDER BY id desc LIMIT 0,5"); //0,5 para mostrar 5 enlaces         
  208. $smarty->assign('toplink',$toplink);
  209. /* Fin top enlaces */
  210.  
  211.  
  212.  
  213.  
  214. /* Estadisticas  */
  215. $stats=$db->GetAll("(SELECT count(id) as info from categories) UNION (SELECT count(id) from link where approved='yes') UNION ( SELECT count(id) from link where approved='no' and stime='" . date('Y') . '-' . date('m') . '-' . date('d') . "')");
  216. $info=array();
  217. $info['numcategs']=$stats[0]['info'];
  218. $info['numlinks']=$stats[1]['info'];
  219. $info['numlinkstoday']=$stats[2]['info'];
  220. unset($stats);
  221. $smarty->assign('infostats',$info);  
  222. /* Fin estadisticas */
  223.  
  224.  
  225. $smarty->display('main.tpl');
  #6 (permalink)  
Antiguo 21/05/2013, 09:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Limitar descripcion...

PHP es off topic de MySQL y Bases de Datos en general.
Muevo al foro de PHP para que te asistan con esa parte. Luego, si el problema persiste, veremos de revisar lo que sea sólo SQL en el foro correspondiente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 22/05/2013, 08:16
Avatar de xiscomax  
Fecha de Ingreso: febrero-2006
Mensajes: 379
Antigüedad: 18 años, 2 meses
Puntos: 5
Respuesta: Limitar descripcion...

Ya eh corregido el resultado en blanco que obtenía, por un error en el .tpl se a cambiado..

Código PHP:
Ver original
  1. {include file="toplink.tpl" site=$toplink}

por..

Código PHP:
Ver original
  1. {include file="toplink.tpl" site=$p}

y ahora muestra la consulta.

Pero la función LEFT('foobarbar', 5); no da el resultado que debería, no limita los caracteres a ,15


Alguna otra forma para limitar los caracteres?

Saludos y gracias de nuevo
  #8 (permalink)  
Antiguo 22/05/2013, 09:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Limitar descripcion...

Disculpa, pero no se entiende tu problema ni por qué dices que no te funciona...
Si ejecuto esto en MySQL por medio del phpMyadmin:

Código MySQL:
Ver original
  1. SELECT LEFT( '12345678901234567890', 15 ) TxtCortadoA15;

Obtengo esto:
Código MySQL:
Ver original
  1. TxtCortadoA15  
  2. 123456789012345
Como ves, la cadena de 20 caracteres se reduce a 15.

¿Cómo es que estás ejecutando eso para no obtener lo que buscas?

Muestranos los datos obtenidos en tu consulta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: limitar, mysql, select
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 12:33.