Comunidad de diseño web y desarrollo en internet online

Comentario por categoria

Citar            
MensajeEscrito el 07 Ene 2011 08:46 pm
Hola, explico:
Tengo una pagina en la cual subo articulos y selecciono la categoria del mismo.
El problema es que al usar un buscador para buscar el articulo X en X categoria, me aparece el articulo bien pero al hacerle click me manda a otro articulo diferente.
Me he dado cuenta que el ID del articulo es el 1 y el de la categoria correspondiente es el 5, y me muestra el titulo del articulo 1 pero al hacerle click se abre el articulo 5.

las tablas son:
Articulo Categoria
id id
titulo nombre
id_categ

cuando subo un articulo, al seleccionar la categoria del mismo, en id_categoria se guarda el numero del id de la categoria correspondiente, ya que hay un enlace entre el desplegable con las categorias y la bdd. el problema es que en vez de tomarme el id de Articulo me toma el id_categoria de Articulo y me abre el articulo con el id igual a ese numero.


Ejemplo

Articulo Categoria
id: 1 id: 5
titulo: Pan nombre: Comida
id_categ: 5

Y cuando busco Pan en la categoria Comida, el link para mostrarme el articulo se ve asi:
articulo.php?id=5

Cuando en realidad se tendria que ver asi:
articulo.php?id=1

Este es el codigo:

Código PHP :

<?php
$sql = "SELECT * FROM Articulos, Categorias WHERE Articulos.Id_categ = Categorias.Id ";
if (isset($_POST['txtBusqueda'])) {
   $sql .= " AND Articulos.Titulo LIKE '%" . $_POST['txtBusqueda'] . "%' ";
   if (intval($_POST['selCategorias']) > 0) {
      $sql .= " AND Articulos.Id_categ = '" . intval($_POST['selCategorias']) . "'";
   }
}
$sql .= " ORDER BY Articulos.Id ASC";
$tabla = mysql_query($sql);
while ($registro = mysql_fetch_array($tabla)) {
?>
<tr>
<td width="334">&nbsp;</td>
</tr>
<?php
}
mysql_free_result($tabla);
?>
<?php
$buscar = $_POST['txtBusqueda'];
$result = mysql_query($sql); 
$total = mysql_num_rows($result);
// Imprimimos los resultados
if ($row = mysql_fetch_array($result)){ 
echo "Resultados para: <b>$buscar</b>";
do { 
?>
                  <p><b><a href="articulo.php?Id=<?=$row['Id'];?>">
                    <?=$row['Titulo'];?>
                  </a></b></p>
                <?
} while ($row = mysql_fetch_array($result)); 
echo "<p>Resultados: $total</p>";
} else { 
// En caso de no encontrar resultados
echo "No se encontraron resultados para: <b>$buscar</b>"; 
}
?>



¿Alguien me puede dar una solucion? :cry:

Por Black Op

13 de clabLevel



 

opera
Citar            
MensajeEscrito el 07 Ene 2011 08:48 pm
Perdon las tablas salieron mal es asi:
tablas:
Articulo
id
titulo
id_categ

Categoria
id
nombre

y el ejemplo:

Articulo
id: 1
titulo:
id_categ: 5

Categoria
id: 5
Pan nombre: Comida

Por Black Op

13 de clabLevel



 

opera
Citar            
MensajeEscrito el 07 Ene 2011 09:18 pm
Se debe a que la consulta SQL devuelve dos campos con el mismo nombre: id.
En vez de usar * para el SELECT califica los nombres de los campos que te interesa usar. Por ejemplo:

Código :

SELECT Articulos.id AS id_articulo, Categorias.id AS id_categoria,  Articulos.Titulo FROM Articulos, Categorias WHERE Articulos.Id_categ = Categorias.Id 


Luego en el código PHP tendrás un índice diferente para cada cosa "id_articulo" para el id de la tabla Articulos y "id_categoria" para el id de la tabla Categorias.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 07 Ene 2011 09:22 pm
Justo lo habia solucionado, gracias igual, era eso :)

Por Black Op

13 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.