PHP - Se repite la noticia al ser de diferente categoría

   
Vista:
Imágen de perfil de Mosiah

Se repite la noticia al ser de diferente categoría

Publicado por Mosiah (40 intervenciones) el 06/11/2013 21:24:49
Hola, tengo el siguiente problema, al agregar una noticia, esta queda publicada correctamente, pero resulta que al ser de diferente categoría esta muestra la noticia repetida con diferente categoría, aquí dejo el código para ver si me pueden ayudar si no es mucha molestia:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php include ('config/db-cnx.php'); ?>
<?php
// verificamos si se ha enviado
// alguna variable via GET
if(isset($_GET['id']) && $_GET['categoria']){
    // asignamos los valores
    // a las variables que usaremos
    $cat_ID = $_GET['id'];
    $categoria = $_GET['categoria'];
    $clausula = "WHERE notCategoriaID = '$cat_ID'";
    // tambien armamos el titular de la pagina
    $titulo = "Noticias en la categoria $categoria";
}else{
    // de lo contrario
    // el titulo sera general
    $titulo = "Todas las noticias";
}
// armamos la consulta
$s='sn_noticias';
$c='sn_categorias';
$sqlQueryNot = mysql_query("SELECT notTitulo,
									notTexto,
									notCategoriaID,
									autor,
									fecha,
									catCategoria
							 FROM $s, $c
                            $clausula", $db_link)
                            or die(mysql_error);
echo "<h1>$titulo</h1>";
 
// mostramos las noticias,
// otra vez usanod un bucle while
while($rowNot = mysql_fetch_array($sqlQueryNot)){
    echo "<div class='blog_post'>
		  <div class='blog_postcontent'>
          <a href='blog-archive.html' class='date'>$rowNot[fecha]</a>
		  <h3><a href='blog-post.html'>$rowNot[notTitulo]</a></h3>
		  <ul class='post_meta_links'>
          <li class='post_by'><a href='#'>$rowNot[autor]</a></li>
          <li class='post_categoty'><a href='#'>$rowNot[catCategoria]</a></li>
          </ul>
		  <div class='post_info_content'><p>$rowNot[notTexto]</p>
         </div>
		</div>
	 </div>
	 <div class='clearfix divider_line'>
	 </div>";
}
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Se repite la noticia al ser de diferente categoría

Publicado por xve (5515 intervenciones) el 06/11/2013 21:52:53
Hola Mosiah, la noticia tiene un identificados único?

Si as así, puedes agrupar la noticia por el identificador, así no se te repetirá... algo como: GROUP BY idNoticia de esta manera, únicamente te devolverá una noticia.

De todas maneras, no se si es la mejor forma, pero no te se decir mas, ya que desconozco la estructura de las tablas.

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Mosiah

Se repite la noticia al ser de diferente categoría

Publicado por Mosiah (40 intervenciones) el 06/11/2013 22:55:34
En mi base de datos tengo dos tablas, la de categorías y la de noticias:

sn_noticias -> not_ID > notTitulo > notTexto > notCategoriaID > fecha > autor
sn_categorias -> cat_ID > catCategoria
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Se repite la noticia al ser de diferente categoría

Publicado por Elier (92 intervenciones) el 06/11/2013 23:00:53
Parece que esta fallando el IF con $_GET['categoria'])

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
 
include ('config/db-cnx.php');
 
$s='sn_noticias';
$c='sn_categorias';
 
$queryNoticias =
	"SELECT notTitulo, notTexto, notCategoriaID, autor, fecha, catCategoria ".
	"FROM $s, $c ";
 
 
// id Categoria de las Noticias a mostrar
if(!empty($_GET['id'])){ // Solo tiene que estar el id && $_GET['categoria']){
     $idCategoria = $_GET['id'];
 
	 $queryNoticias .= "WHERE notCategoriaID = '$idCategoria'";
 
	 $nombreCategoria = isset($_GET['categoria'])?$_GET['categoria']:"";
 
	 $titulo = "Noticias en la categoria $nombreCategoria";
}
else
{
	 $titulo = "Todas las noticias";
}
 
 
// armamos la consulta 
 
$resultado = mysql_query($queryNoticias, $db_link);
 
if (!$resultado){
	echo "No se pudo realizar la consulta";
}
else
{
	$noticias = array();
	while($fila = mysql_fetch_array($resultado)){
		$noticias[] = $fila;
	}
 
	render($titulo, $noticias);
}
 
function render($titulo = null, $noticias = null){
	echo "<h1>$titulo</h1>";
	foreach ($noticias as $noticia) {
		echo "<div class='blog_post'>".
		"<div class='blog_postcontent'>".
		"<a href='blog-archive.html' class='date'>".$noticia[fecha]."</a>".
		"<h3><a href='blog-post.html'>".$noticia[notTitulo]."</a></h3>".
		"<ul class='post_meta_links'>".
		"<li class='post_by'><a href='#'>".$noticia[autor]."</a></li>".
		"<li class='post_categoty'><a href='#'>".$noticia[catCategoria]."</a></li></ul>".
		"<div class='post_info_content'><p>".$noticia[notTexto]."</p>.".
		"</div> </div> </div> <div class='clearfix divider_line'> </div>";
	}
}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Se repite la noticia al ser de diferente categoría

Publicado por Mari Carmen (145 intervenciones) el 06/11/2013 23:30:38
Prueba con esto, no me voy a meter en temas de la BBDD, solo el query.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//Defino los campos que usaremos
$campos = array("id","categoria");
//Guardamos las variables que tienen el indice igual que en $campos.
$vars   = array_intersect_key( $_GET, array_flip( $campos ));
//Filtro los false, null, y "" pero no el 0 o el "0".
$vars   = array_filter($vars,'strlen');
//Despues del filtro miramos si estan todos los campos. Si estan todos los campos $difs=array()
$difs  = array_diff_key(array_flip( $campos ),$vars);
 
$query="SELECT `sn_noticias`.`notTitulo`, ".
              "`sn_noticias`.`notTexto`, ".
              "`sn_noticias`.`notCategoriaID`, ".
              "`sn_noticias`.`autor`, ".
              "`sn_noticias`.`fecha`, ".
              "`sn_categorias`.`catCategoria` ".
       "FROM `sn_noticias`, `sn_categorias` ";
 
 
 
//Si difs==array() entonces es que existen todos los campos.
if($difs==array())
{
    $titulo   = "Noticias en la categoria ${vars["categoria"]}";
    $query   .= "WHERE `sn_noticias`.`notCategoriaID` = ${vars["id"]}";
}else{
    $titulo="Todas las noticias";
}

La librería mysql está obsoleta y deberías empezar a trabajar con la librería mysqli.
Fuente: http://www.php.net/manual/es/intro.mysql.php

No me cansaré de repetirlo.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mosiah

Se repite la noticia al ser de diferente categoría

Publicado por Mosiah (40 intervenciones) el 06/11/2013 23:38:04
Eso lo se gracias de todas maneras por decirlo. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar