Ver Mensaje Individual
  #6 (permalink)  
Antiguo 15/11/2014, 12:46
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: Crear filtro en la misma página

Cita:
¿Que gano al hacer un echo $consulta."<br>";? Simplemente veo que en la pagina me sale el codigo que esta despues de $consulta=
Lo que "ganas" es asegurarte que una vez incorporado el parámetro, la sintaxis de la consulta en SQL esté correcta, y no vaya a darte problemas...
Es una etapa básica (MUY básica) del trabajo de desarrollo. Se denomina "debuggear".
Cita:
El tipo de dato que se guarda en "seccion" en la BD es varchar, no debería ser eso no? Ya que se pasa correctamente en el formulario, cierto?
No te olvides que PHP y MySQL son cosas completamente independientes. Que una variable en PHP la variable sea un string, no implica que MySQl entienda que es un VARCHAR, porque MySQL no lee, interpreta ni recibe variables de PHP. Sólo recibe sentencias SQL en forma de cadena de texto, y las ejecuta en función de eso.

Para tu caso específico, supongamos que "$_GET['secc']" contiene la palabra "1". Cuando pones esto:
Código PHP:
Ver original
  1. $consulta = "SELECT *
  2. FROM Articles
  3. WHERE seccion=".$_GET['secc']."
  4. AND estado_noticia = 'Publicado'
  5. ORDER BY fecha desc";
lo que recibe MySQL es esto:
Código SQL:
Ver original
  1. SELECT *
  2. FROM Articles
  3. WHERE seccion=1
  4. AND estado_noticia = 'Publicado'
  5. ORDER BY fecha DESC
Si eso es lo que muestra el echo, todo OK, en tanto recuerdes que sólo devolverá datos si seccion=1 y estado_noticia = 'Publicado', al mismo tiempo.
Pero lo que suele pasar muchas veces es que la variable en algun momento está vacía, y en ese caso lo que recibirá MySQL es esto:
Código SQL:
Ver original
  1. SELECT *
  2. FROM Articles
  3. WHERE seccion=
  4. AND estado_noticia = 'Publicado'
  5. ORDER BY fecha DESC
Nota, por favor, que según tu sintaxis aportada la variable debe contener un valor numérico si o si, ya que la estás tratando en el SQL como tal. Si fuese una cadena de texto... te disparará un error de columna desconocida.

Si pasa eso, lo que tendrás es un error de sintaxis... en MySQL.

El problema mas evidente es que al hacer un código de tres lenguajes diferentes indiferenciados en el mismo script, siendo que no estás controlando posibles errores de entrada o salida, el script resulta de muy difícil depuración.
Yo te sugeriría que separes mejor la vista, del PHP, y del manejo de los datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 15/11/2014 a las 17:47