Foros del Web » Programando para Internet » PHP »

consulta MySql!

Estas en el tema de consulta MySql! en el foro de PHP en Foros del Web. hola como estas? como saban he hecho un sistema de noticias con php y mysql.. cuento mi proble cuando trigo mi noticia hacien esto www.miweb.com/publicaciones.php?idNoticia=3&titulo=hola-mundo ...
  #1 (permalink)  
Antiguo 24/11/2013, 17:02
Avatar de aado29  
Fecha de Ingreso: junio-2012
Ubicación: Miami, United States
Mensajes: 29
Antigüedad: 7 años, 6 meses
Puntos: 0
Exclamación consulta MySql!

hola como estas? como saban he hecho un sistema de noticias con php y mysql.. cuento mi proble cuando trigo mi noticia hacien esto www.miweb.com/publicaciones.php?idNoticia=3&titulo=hola-mundo perteneciendo idNoticia = 3 y titulo = hola-mundo a la misma columna en mi base de datos pero cuando cambio ya se mi el titulo o mi idNoticia me lanza un error (mysql_fetch_assoc)...

Cual es la ayuda que nesecito? que me ensenen a crear un filtro que me diga que si el titulo y el idnoticia no equivalen me lanze un error que por su puesto yo pueda editar.

Muchas gracias Espero su respuesta.

Última edición por aado29; 24/11/2013 a las 23:14
  #2 (permalink)  
Antiguo 25/11/2013, 02:50
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 11 años, 10 meses
Puntos: 574
Respuesta: comprobar contenida en MySql auxilio

Intenta explicarte mejor.....


SELECT * FROM noticias WHERE idNoticia=3 and titulo="hola-mundo";

Si eso retorna false es que no ha encontrado una noticia que cumpla las dos cosas....si no retornara la noticia
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 25/11/2013, 05:01
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.994
Antigüedad: 11 años, 5 meses
Puntos: 2194
Respuesta: consulta MySql auxilio!

Y se supone que tenemos que adivinar cómo lees la noticia? o quieres que alguien haga el trabajo por ti?

Muestra tu código, de otra forma no será posible ayudarte.
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 25/11/2013, 10:03
Avatar de aado29  
Fecha de Ingreso: junio-2012
Ubicación: Miami, United States
Mensajes: 29
Antigüedad: 7 años, 6 meses
Puntos: 0
Respuesta: consulta MySql!

ok este es mi php:
Código PHP:
<?

// iniciamos session
session_start ();

// archivos necesarios
require_once 'admin/config.php';
require_once 
'admin/conexion.php';
require_once 
'admin/esUsuario.php';

// obtengo puntero de conexion con la db
$dbConn conectar();

// verificamos que este conectado el usuario
if ( !empty( $_SESSION['usuario'] ) && !empty($_SESSION['password']) ) {
    
$arrUsuario esUsuario$_SESSION['usuario'], $_SESSION['password'], $dbConn );        
}

if ( !empty(
$_POST['submit']) ) {
    
    if ( !empty(
$_POST['comentario']) )     $comentario     $_POST['comentario'];
    if ( !empty(
$_GET['idNoticia']) )    $idNoticia     $_GET['idNoticia'];
    if ( !empty(
$arrUsuario['idUsuario']))    $idUsuario    $arrUsuario['idUsuario'];
    
    
// completamos la variable error si es necesario
    
if ( empty($comentario) )     $error['comentario']         = true;
    if ( empty(
$idNoticia) )     $error['idNoticia']         = true;
    if ( empty(
$idUsuario) )     $error['idUsuario']         = true;
    
    
// si no hay errores registramos al usuario
    
if ( empty($error) ) {
        
        
// inserto los datos de registro en la db
        
$query  "INSERT INTO `comentarios` (comentario, idUsuario, idNoticia) VALUES ('$comentario','$idUsuario','$idNoticia')";
        
$result mysql_query($query$dbConn);
        
        
header'Location: publicaciones.php?idNoticia='.$idNoticia );
        die;
        
    }
    
}

// traemos la noticia
$query "SELECT noticias.idNoticia, noticias.titulo, noticias.copete, noticias.cuerpo, noticias.fCreacion, noticias.fModificacion, categorias.valor as categoria, usuarios.usuario FROM `noticias` 
INNER JOIN `categorias` ON categorias.idCategoria = noticias.idCategoria 
INNER JOIN `usuarios` ON usuarios.idUsuario = noticias.idUsuario 
WHERE idNoticia = '" 
$_GET['idNoticia'] . "' AND titulo = '" $_GET['titulo'] . "'" ;
$resultado mysql_query ($query$dbConn);
$noticia mysql_fetch_assoc ($resultado);

// traemos los comentarios aprobados
$arrComentarios = array();
$query "SELECT comentarios.idComentario, comentarios.comentario, usuarios.usuario  
FROM `comentarios` 
INNER JOIN `usuarios` ON comentarios.idUsuario = usuarios.idUsuario 
WHERE comentarios.estado = 'apto' AND comentarios.idNoticia = " 
$_GET['idNoticia'] . 
ORDER BY comentarios.idComentario DESC"
;
$resultado mysql_query ($query$dbConn);
while ( 
$row mysql_fetch_assoc ($resultado)) {
    
array_push$arrComentarios,$row );
}

?>
  #5 (permalink)  
Antiguo 25/11/2013, 10:04
 
Fecha de Ingreso: abril-2010
Ubicación: Cancun
Mensajes: 88
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: comprobar contenida en MySql auxilio

Para empezar tienes mucha inseguridad realizando consultas de esa manera obteniendo valores get
  #6 (permalink)  
Antiguo 25/11/2013, 10:28
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.322
Antigüedad: 12 años, 1 mes
Puntos: 2654
Respuesta: consulta MySql!

Código SQL:
Ver original
  1. SELECT
  2.     noticias.idNoticia,
  3.     noticias.titulo,
  4.     noticias.copete,
  5.     noticias.cuerpo,
  6.     noticias.fCreacion,
  7.     noticias.fModificacion,
  8.     categorias.valor AS categoria,
  9.     usuarios.usuario
  10. FROM `noticias`
  11.     INNER JOIN `categorias` ON categorias.idCategoria = noticias.idCategoria
  12.     INNER JOIN `usuarios` ON usuarios.idUsuario = noticias.idUsuario
  13. WHERE idNoticia = '" . $_GET['idNoticia'] . "' AND titulo = '" . $_GET['titulo'] . "'
Mira, si ya tienes el ID de noticia, se supone que el título es irrelevante. Y si tienes el título correctamente, el idNoticia no es necesario.
Pero si uno de los dos valores no llega o no coninciden al mismo tiempo con la oticia, esa consulta no devovlerá datos.
¿Tienes claro eso?
Si lo que quieres es que te evalúe uno u otro, pero al menos uno de ambos, entonces la sintaxis es otra:
Código SQL:
Ver original
  1. SELECT
  2.     noticias.idNoticia,
  3.     noticias.titulo,
  4.     noticias.copete,
  5.     noticias.cuerpo,
  6.     noticias.fCreacion,
  7.     noticias.fModificacion,
  8.     categorias.valor AS categoria,
  9.     usuarios.usuario
  10. FROM `noticias`
  11.     INNER JOIN `categorias` ON categorias.idCategoria = noticias.idCategoria
  12.     INNER JOIN `usuarios` ON usuarios.idUsuario = noticias.idUsuario
  13. WHERE idNoticia = " . $_GET['idNoticia'] . " OR titulo = '" . $_GET['titulo'] . "'
Por otro lado, usar el título como parte de la búsqueda puede ser un poco inseguro, si el valor ingresado en formulario no es exactamente el mismo. Con una sola letra de diferencia, y ese registro no lo encontrarás.

Además, no veo que estés validando en su script PHP que las consultas realmente estén devolviendo datos. Cometes el clásico error de asumir que la consulta funciona y devuelve datos, no lo que no es necesariamente cierto. Nunca.
Valida la respuesta (el result), antes de intentar hacer un fetch.
__________________
¿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 25/11/2013, 12:32
Avatar de aado29  
Fecha de Ingreso: junio-2012
Ubicación: Miami, United States
Mensajes: 29
Antigüedad: 7 años, 6 meses
Puntos: 0
Respuesta: consulta MySql!

gnzsoloyo de verdad muchas gracias.. pero ya encontre lo que necesitaba no era algo que con leer un poco la documentacion php no resolviera.. me que algo asi :
Código PHP:
$query "SELECT noticias.idNoticia, noticias.titulo, noticias.copete, noticias.cuerpo, noticias.fCreacion, noticias.fModificacion, categorias.valor as categoria, usuarios.usuario FROM `noticias` 
INNER JOIN `categorias` ON categorias.idCategoria = noticias.idCategoria 
INNER JOIN `usuarios` ON usuarios.idUsuario = noticias.idUsuario 
WHERE idNoticia = '" 
$_GET['idNoticia'] . "' AND titulo = '" $_GET['titulo'] . "'" ;
$resultado mysql_query ($query$dbConn);
if (
mysql_num_rows($resultado) == 0) {
    
header('Location: ../'.$_GET['titulo'].'-'$_GET['idNoticia'] ); 
}
else {
    
$noticia mysql_fetch_assoc ($resultado);

esto lo que me dice es que si la consulta hecha por $_GET es igual a 0 que redireccione y si encuenta algo en base de datos me los muetre con, ejemplo

Código HTML:
<p><?php echo $noticia['idNoticia']; ?></p><br>
<p><?php echo $noticia['titulo']; ?></p> 

Etiquetas: auxilio, consulta+sql, consulta-mysql, mysql
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 14:09.