Foros del Web » Programando para Internet » PHP »

Recuperar una única categoria ,no todas

Estas en el tema de Recuperar una única categoria ,no todas en el foro de PHP en Foros del Web. Buenas que tal.Tengo una sección en mi web donde hago un llamamiento a mi base de datos para recuperar las categorias. En mi base de ...
  #1 (permalink)  
Antiguo 27/04/2006, 10:17
 
Fecha de Ingreso: septiembre-2005
Mensajes: 374
Antigüedad: 12 años, 3 meses
Puntos: 0
Recuperar una única categoria ,no todas

Buenas que tal.Tengo una sección en mi web donde hago un llamamiento a mi base de datos para recuperar las categorias. En mi base de datos tengo una tabla llamada categorias y dentro tengo 7 registros. Pues bien, ahora lo que me interesa es que solo se me muestre la 7º categoría(solo esa). Es decir, que en mi web solo se recupere la categoría que yo desee.El código que he utilizado para hacerlo es el siguiente:

function obtener_categorias()
{
$con = conexion_bd();
$query = 'select catid, catnombre
from categorias';
$result = @mysql_query($query);

if (!$result)
return false;
$num_cat = @mysql_num_rows($result);
if ($num_cat ==0)
return false;
$result = resultado_bd($result);
return $result;
}


function nombre_categoria($catid)

{
// consulta en la base de datos para obtener el nombre del indentificador de categoria
$con = conexion_bd();
$query = "select catnombre
from categorias
where catid = $catid";
$result = @mysql_query($query);
if (!$result)
return false;
$num_cat = @mysql_num_rows($result);
if ($num_cat ==0)
return false;
$result = mysql_result($result, 0, 'catnombre');
return $result;
}



Estas son las 2 funciones que me hacen recuperar de mi base de datos las categorias.La funcion obtenter_categorias lo que hace es obtener el identificador y el nombre, y la funcion nombre_categoria lo que hace es etraer el nombre de dicha categoria.No se que como sería lo de que solo me muestre la 7º categoría. Gracias y un saludo.
  #2 (permalink)  
Antiguo 27/04/2006, 10:34
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
$nom_cat7=nombre_categoria(7);
echo $nom_cat7;
  #3 (permalink)  
Antiguo 27/04/2006, 10:41
 
Fecha de Ingreso: abril-2006
Ubicación: Talcahuano-Chile
Mensajes: 50
Antigüedad: 11 años, 7 meses
Puntos: 0
a ver.
creo que debes completar tu consulta sql en la funcion obtener_categorias() en algo así:
$query = "SELECT catid, catnombre FROM categorias WHERE catid=7";

funciona si "catid" corresponde a la categoria explicitamente, o sea, que 7 sea la septima categoria
  #4 (permalink)  
Antiguo 27/04/2006, 10:43
Avatar de ProWebDeveloper  
Fecha de Ingreso: julio-2005
Ubicación: Maracay - Edo. Aragua
Mensajes: 117
Antigüedad: 12 años, 4 meses
Puntos: 1
Exclamación Posible solucion

HOla amigo que tal..?

Tambien lo puedes lograr si solo son esos 7 registros, mediante un sql...

algo como

SELECT * FROM tabla ORDER BY campo DESC LIMIT 1

pero tendrias que darle como una especie de valor a un campo adicional que se llame orden y le des un orden desde 1 hasta n valores...

Saludos y espero que te sirva de algo...

Bye

Javier
  #5 (permalink)  
Antiguo 27/04/2006, 10:47
 
Fecha de Ingreso: septiembre-2005
Mensajes: 374
Antigüedad: 12 años, 3 meses
Puntos: 0
No entiendo muy bien eso ke me pones...Donde kieres ke lo ponga? El $num_cat7 es una variable que tu te creas? En que sitio coloco eso?
Gracias por tu ayuda.
  #6 (permalink)  
Antiguo 27/04/2006, 10:49
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Si, estoy creando una variable para guardar el valor que retorna la funcion nombre_categoria(), luego muestro el valor de la variable. Es decir, estoy usando la funcion.
  #7 (permalink)  
Antiguo 27/04/2006, 10:54
 
Fecha de Ingreso: septiembre-2005
Mensajes: 374
Antigüedad: 12 años, 3 meses
Puntos: 0
Hola Daguett ,lo ke me comentas ya lo probé anteriormente pero entonces no me muestra ningun resultado.
  #8 (permalink)  
Antiguo 27/04/2006, 11:00
 
Fecha de Ingreso: septiembre-2005
Mensajes: 374
Antigüedad: 12 años, 3 meses
Puntos: 0
Hola claudiovega, he colocado esas lineas en mi script, pero se me keda la pagina en blanco al ejecutarlo. Las he añadido en el script donde me interesa que solo se muestre la 7º categoria.
  #9 (permalink)  
Antiguo 27/04/2006, 11:10
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
muestra el codigo completo que usas en dicho script. Las funciones están en el mismo script declaradas?
  #10 (permalink)  
Antiguo 27/04/2006, 11:18
 
Fecha de Ingreso: septiembre-2005
Mensajes: 374
Antigüedad: 12 años, 3 meses
Puntos: 0
Este es el script que he realizado. La funcion obtener_categorias está en otro script el cual lo llamo mediante require_once(funciones.php), al igual que mostrar_categorias que se encuentra en otro scripr diferente.

<?php
require_once('funciones.php');
?>
<html>
<head>
<title> OFERTA DEL MES</title>
<body style="background:url('imagenes/fondobueno.jpg')">


<p align="left"><b><font color="#CA9F3C" size="5" face="Monotype Corsiva">En esta sección podrás ver cual es la OFERTA DEL MES disponible.<BR>
</font></b></p>
<table width="850" border="7">
<tr>
<td><center></td>
</tr>

<tr>
<td><div align="center">
<?php
$cat_array = obtener_categorias();
mostrar_categorias($cat_array);
?>
</div></td>
</tr>
</table>

</body>
</html>
  #11 (permalink)  
Antiguo 27/04/2006, 11:22
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
La conexión a la bd tambien está en funciones.php?

La función obtener_categorias() obtiene todas, no te sirve para el caso, te basta con este codigo:

Código PHP:
<?php
   
require_once('funciones.php');
?>
<html>
<head>
<title> OFERTA DEL MES</title>
<body style="background:url('imagenes/fondobueno.jpg')">


<p align="left"><b><font color="#CA9F3C" size="5" face="Monotype Corsiva">En esta sección podrás ver cual es la OFERTA DEL MES disponible.<BR>
</font></b></p>
<table width="850" border="7">
<tr>
<td><center></td>
</tr>

<tr>
<td><div align="center">
<?php
   
echo mostrar_categorias(7);
?>
</div></td>
</tr>
</table>

</body>
</html>
Sugerencia: eliminar el codigo de estilo del html y usar hojas de estilo, mayor rapidez y versatilidad.
  #12 (permalink)  
Antiguo 27/04/2006, 11:28
 
Fecha de Ingreso: septiembre-2005
Mensajes: 374
Antigüedad: 12 años, 3 meses
Puntos: 0
Nada macho, no hay cojones a que funcione. En funciones.php tambien se encuentra el script para la conexion a la base de datos.

Mi funcion de mostrar_categorias es la siguiente:

function mostrar_categorias($cat_array)
{
if (!is_array($cat_array))
{
echo 'No hay categorías disponibles<br />';
return;
}

echo '<h1>';
foreach ($cat_array as $row)
{
$url = 'ver_categoria.php?catid='.($row['catid']);
$nombre_vino = $row['catnombre'];
echo '<br><br><li type=square>';
poner_url($url, $nombre_vino);
}
echo '<h2>';

}


He puesto el codigo tal cual tu me lo has pegado, pero ahora me dice ke no hay categorias disponibles al ejecutarlo.
  #13 (permalink)  
Antiguo 27/04/2006, 11:56
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Entiendo, es que verificas que se le pase un array a la funcion y dicho array es llenado por la otra funcion.
Podrías modificar la función y dejarla así:

Código PHP:
<?php
function mostrar_categorias($id_cat)
{
   
$con conexion_bd();
   
$sql="select catnombre from categorias where id_cat=$id_cat"
   
$rs=msyql_query($sql);
   if(isset(
$rs) && mysql_num_rows($rs)>0)
       return 
mysql_result($result0'catnombre');
   else
      return 
false;
}
?>
  #14 (permalink)  
Antiguo 27/04/2006, 14:58
 
Fecha de Ingreso: septiembre-2005
Mensajes: 374
Antigüedad: 12 años, 3 meses
Puntos: 0
Buenas figura, el probado lo ke me has comentado. He corregido el error ke me daba el $rs=mysql_query , ya que tu lo habias escrito mal. Pero ahora me da este otro error.

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\archivos de programa\easyphp1-8\www\salida_fns.php on line 113


La linea 113 de ese script corresponde a esta linea de la funciona ke me has puesto para ayudarme.
if(isset($rs) && mysql_num_rows($rs)>0)

A ver si damos con la clave del asunto. Muchas gracias por todo.
  #15 (permalink)  
Antiguo 27/04/2006, 15:03
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Prueba esto para ver el error:

Código PHP:
<?php
function mostrar_categorias($id_cat)
{
   
$con conexion_bd();
   
$sql="select catnombre from categorias where id_cat=$id_cat"
   
$rs=mysql_query($sql) or die(mysql_error());
   if(isset(
$rs) && mysql_num_rows($rs)>0)
       return 
mysql_result($rs0'catnombre');
   else
      return 
false;
}
?>
  #16 (permalink)  
Antiguo 27/04/2006, 15:12
 
Fecha de Ingreso: septiembre-2005
Mensajes: 374
Antigüedad: 12 años, 3 meses
Puntos: 0
Ya esta medio solucionado jeje. Te cuento, el problema estaba en que me se había olvidado cambiar el "id_cat" por el "catid" que tengo yo en mi tabla de categorias. Ahora bien...se me muestra solo la categoria numero 7 ,que es la que yo queria, pero no se puede acceder a ella(es decir, no esta en forma de enlace, aparece solo como texto). Veo cerca el final del túnel jeje. Gracias.
  #17 (permalink)  
Antiguo 27/04/2006, 15:19
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Cambia esto: return mysql_result($rs, 0, 'catnombre');
Por esto: return "<a href='pagina....'>".mysql_result($rs, 0, 'catnombre')."</a>"; o algo similar.
  #18 (permalink)  
Antiguo 27/04/2006, 15:30
 
Fecha de Ingreso: septiembre-2005
Mensajes: 374
Antigüedad: 12 años, 3 meses
Puntos: 0
Prueba superada !!! Muchas gracias fenónemo, ahora funciona tal y como yo quería. Te estoy muy aradecido por tu colaboración. Un abrazo.
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 15:15.