Foros del Web » Programando para Internet » PHP »

Consulta como

Estas en el tema de Consulta como en el foro de PHP en Foros del Web. Como puedo hacer para poner una consulta en varias lineas. Por ejemplo el original sería: Código PHP: $query  =  "SELECT fr.*,fr.title as tituloforo, ps.subject as subject, ps.*, rp.*,count(rp.idreply) as cantreply, us.*, rp.date, DAYOFMONTH(rp.date) AS dia, DAYOFWEEK(rp.date) AS semana, MONTH(rp.date) AS mes, YEAR(rp.date) AS year, DATE_FORMAT(rp.date,'%h:%i %p') AS hora FROM foros fr, post ps, reply rp, users us WHERE fr.idforo=" . $_GET [ 'foro' ]. ...
  #1 (permalink)  
Antiguo 06/06/2004, 11:57
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Consulta como

Como puedo hacer para poner una consulta en varias lineas. Por ejemplo el original sería:
Código PHP:
$query "SELECT fr.*,fr.title as tituloforo, ps.subject as subject, ps.*, rp.*,count(rp.idreply) as cantreply, us.*, rp.date, DAYOFMONTH(rp.date) AS dia, DAYOFWEEK(rp.date) AS semana, MONTH(rp.date) AS mes, YEAR(rp.date) AS year, DATE_FORMAT(rp.date,'%h:%i %p') AS hora FROM foros fr, post ps, reply rp, users us WHERE fr.idforo=".$_GET['foro']." AND ps.idcat=".$idcat." AND ps.idforo=".$idforo." AND rp.idpost=ps.idpost AND us.iduser=ps.iduser GROUP BY rp.idpost ORDER BY ps.idpost,rp.idreply"
pues bien lo que quiero hacer es algo como esto:
Código PHP:
$query "SELECT fr.*,fr.title as tituloforo, ps.subject as subject, ps.*, rp.*,count(rp.idreply) as cantreply, us.*, rp.date";
$query. = "DAYOFMONTH(rp.date) AS dia, DAYOFWEEK(rp.date) AS semana, MONTH(rp.date) AS mes, YEAR(rp.date) AS year, DATE_FORMAT(rp.date,'%h:%i %p') AS hora";
$query. = "FROM foros fr, post ps, reply rp, users us WHERE fr.idforo=".$_GET['foro']." AND ps.idcat=".$idcat." AND ps.idforo=".$idforo." AND rp.idpost=ps.idpost AND us.iduser=ps.iduser GROUP BY rp.idpost ORDER BY ps.idpost,rp.idreply"
pero no se si esto es lo correcto pues me da errores a la hora de compilar el código.
Salu2
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 06/06/2004, 12:13
 
Fecha de Ingreso: febrero-2004
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 0
Hola:
Puedes formar la cadena de esa forma, pero el error lo da porque no estás dejando espacios.
Deberías escribir algo asi: $query. = " FROM foros...", es decir, al abrir las comillas o antes de cerrarlas, debes dejar un espacio, de lo contrario, quedaría todo junto y daría un error de sintaxis.

Saludos
__________________
Una sofisticada, confiable y segura solución de hosting.
Sistema de distribución redundante, respaldado diariamente.

www.uruservers.com
  #3 (permalink)  
Antiguo 06/06/2004, 12:26
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 14 años, 2 meses
Puntos: 4
cual es el error que te marca?
  #4 (permalink)  
Antiguo 06/06/2004, 12:30
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
Los errores por espacios en tal caso serían de mysql, o el motor que se este usando. Y por lo tanto no serían al compilar. Si es error al compilar, entonces es otra cosa, la concatenación de las cadenas es correcta.

danos un poco mas de información...

un saludo
  #5 (permalink)  
Antiguo 06/06/2004, 12:37
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
He hecho lo que me dijo uruservers

He hecho lo que me han indicado y el error que me da a la hora de compilar es este:
Cita:
Error: E_PARSE parser error at functions.php line 364
y la linea 364 es esta:
Código PHP:
$query "SELECT fr.*,fr.title as tituloforo, ps.subject as subject, ps.*, rp.*,count(rp.idreply) as cantreply, us.*, rp.date";
# Esta linea de abajo es la 364
$query. = " DAYOFMONTH(rp.date) AS dia, DAYOFWEEK(rp.date) AS semana, MONTH(rp.date) AS mes, YEAR(rp.date) AS year, DATE_FORMAT(rp.date,'%h:%i %p') AS hora";
$query. = " FROM foros fr, post ps, reply rp, users us WHERE fr.idforo=".$_GET['foro']." AND ps.idcat=".$idcat." AND ps.idforo=".$idforo." AND rp.idpost=ps.idpost AND us.iduser=ps.iduser GROUP BY rp.idpost ORDER BY ps.idpost,rp.idreply"
Salu2 y gracias
__________________
Ing. Reynier Pérez Mira
  #6 (permalink)  
Antiguo 06/06/2004, 12:46
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 14 años, 2 meses
Puntos: 4
me late que es esta la linea que te da el error y ahora sabemos que no es un error en sql sinon en php

$query. = " FROM foros fr, post ps, reply rp, users us WHERE fr.idforo=".$_GET['foro']." AND ps.idcat=".$idcat." AND ps.idforo=".$idforo." AND rp.idpost=ps.idpost AND us.iduser=ps.iduser GROUP BY rp.idpost ORDER BY ps.idpost,rp.idreply";

podrias tratar de cambiarla por:
$query. = " FROM foros fr, post ps, reply rp, users us WHERE fr.idforo=$foro AND ps.idcat=$idcat AND ps.idforo=$idforo AND rp.idpost=ps.idpost AND us.iduser=ps.iduser GROUP BY rp.idpost ORDER BY ps.idpost,rp.idreply";

o por:
$query. = " FROM foros fr, post ps, reply rp, users us WHERE fr.idforo=" . $_GET['foro'] . " AND ps.idcat=" . $idcat . " AND ps.idforo=" . $idforo . " AND rp.idpost=ps.idpost AND us.iduser=ps.iduser GROUP BY rp.idpost ORDER BY ps.idpost,rp.idreply";

checa que en esta ultima separo las variables del concatenador por un espacio
  #7 (permalink)  
Antiguo 06/06/2004, 12:53
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
ah ya.. no mas bien no separes por espacios. Esto está mal:

Código PHP:
$sql "cadena uno";
$sql. = "cadena dos"
esto está bien:

Código PHP:
$sql "cadena uno";
$sql .= "cadena dos"
el " . " y el " = " (el punto y el igual) deben ir juntos, por que son 1 operador, separados no son válidos.

un saludo
  #8 (permalink)  
Antiguo 06/06/2004, 12:54
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Ok. Probaré y luego les digo
__________________
Ing. Reynier Pérez Mira
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 18:46.