Foros del Web » Programando para Internet » PHP »

Error con T_CONSTANT_ENCAPSED_STRING

Estas en el tema de Error con T_CONSTANT_ENCAPSED_STRING en el foro de PHP en Foros del Web. Saludos, aqui sigo en la busqueda de soluciones.. Estoy haciendo una consulta en donde el nombre de la tabla de la consulta viene asignado por ...
  #1 (permalink)  
Antiguo 06/03/2013, 08:55
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 17 años, 3 meses
Puntos: 28
Error con T_CONSTANT_ENCAPSED_STRING

Saludos,
aqui sigo en la busqueda de soluciones..
Estoy haciendo una consulta en donde el nombre de la tabla de la consulta viene asignado por una variable que se obtiene de un POST ...

estoy haciendo todo pero al hacer la busqueda me arroja este error

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/morr0113/public_html/buscador.php on line 19

Código PHP:
 <?php
@$busqueda $_POST["for"] ;
@
$base $_POST["for"] ;
extract($_POST);

//cadena de conexion 
$conexion mysql_connect("localhost","morr0113_admin","morro2012"); 
mysql_select_db("morr0113_2012"$conexion); 
//DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe 
if ($busqueda<>''){ 
      
//Mostramos los titulos de los articulos o lo que deseemos... 
      
$trozos=explode(" ",$busqueda);

$cadbuscar = array();

foreach(
$trozos as $palabra){
     
$cadbuscar[] = "descripcion LIKE '%$palabra%' OR titulo LIKE '%$palabra%'";
}
$query $query sprintf("SELECT descripcion, titulo FROM %s",$base"where";
$query .= implode(' or '$cadbuscar);
$query .= " LIMIT 50";

$result=mysql_query($query$conexion);  

}

?>
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #2 (permalink)  
Antiguo 06/03/2013, 10:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Error con T_CONSTANT_ENCAPSED_STRING

Estás concatenando mal, tan simple que es imposible de no ver.
Código PHP:
$query $query sprintf("SELECT descripcion, titulo FROM %s",$base"where"
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 06/03/2013, 10:45
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 17 años, 3 meses
Puntos: 28
Respuesta: Error con T_CONSTANT_ENCAPSED_STRING

eso... Gracias..
Código PHP:
 <?php
@$busqueda $_POST["for"] ;
@
$base $_POST["base"] ;

//cadena de conexion 
$conexion mysql_connect("localhost","morr0113_admin","morro2012"); 
mysql_select_db("morr0113_2012"$conexion); 
//DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe 
if ($busqueda<>''){ 
      
//Mostramos los titulos de los articulos o lo que deseemos... 
      
$trozos=explode(" ",$busqueda);

$cadbuscar = array();

foreach(
$trozos as $palabra){
     
$cadbuscar[] = "descripcion LIKE '%$palabra%' OR titulo LIKE '%$palabra%'";
}
$query sprintf("SELECT descripcion, titulo FROM %s WHERE",$base) ;
$query .= implode(' or '$cadbuscar);
$query .= " LIMIT 50";

$result=mysql_query($query$conexion);  

}
echo 
$query;
?>
Pero como buen codigo no dejan de salir los errores... ahora me dice

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/morr0113/public_html/buscador.php on line 153

Código PHP:
<?php  While($row=mysql_fetch_object($result)) {
  
//muestras resultados
 
      
$descripcion=$row->descripcion
      
$titulo=$row->titulo
      echo 
$descripcion." - ".$titulo."<br>"
   } 
?>
no le veo nada de mal
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #4 (permalink)  
Antiguo 06/03/2013, 11:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Error con T_CONSTANT_ENCAPSED_STRING

Es imposible para nosotros adivinar la causa de los errores únicamente con ver código, necesitas aprender a depurar tus consultas para que al menos tengas una idea de lo que sucede.

Código PHP:
$result=mysql_query($query$conexion) or die('ERROR: '.mysql_error()); 
De otra forma nos pides ver cosas imposibles de ver, que tu no veas nada mal no significa que todo deba estar bien.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 06/03/2013, 11:57
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 17 años, 3 meses
Puntos: 28
Respuesta: Error con T_CONSTANT_ENCAPSED_STRING

me arroja esto

ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIKE '%tucacas%' OR titulo LIKE '%tucacas%' LIMIT 50' at line 1

ahora bien.. no me funciona ni con fetch_array o assoc...
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #6 (permalink)  
Antiguo 06/03/2013, 12:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Error con T_CONSTANT_ENCAPSED_STRING

Bueno, es normal que lo segundo no te funcione si lo primero da error, ¿no te parece lógico?

Ahora el punto es que tu consulta de SQL tiene errores de sintaxis, eso es lo que te indica el mensaje de error.

Así pues, adivinar exactamente a lo que se refiere el error es imposible en este punto, así que por favor imprime la consulta y observa si está bien redactada, según recuerdo eso ya lo debes saber hacer.

¿Por qué no lo has hecho aún?

Insisto, las habilidades de depuración son algo tan valioso que a veces con eso basta, mucho antes de abrir un tema en algún foro.

Si depuras tus consultas paso a paso jamás tendrás que abrir un tema sólo para que te digan: por favor, imprime la consulta y observa si está bien escrita.

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 06/03/2013, 12:14
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 17 años, 3 meses
Puntos: 28
Respuesta: Error con T_CONSTANT_ENCAPSED_STRING

aqui esta impresa

SELECT descripcion, titulo FROM hoteles WHEREdescripcion LIKE '%tucacas%' OR titulo LIKE '%tucacas%' LIMIT 50
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #8 (permalink)  
Antiguo 06/03/2013, 12:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Error con T_CONSTANT_ENCAPSED_STRING

Bueno, pues yo veo un error bastante claro, no hay ningún espacio después del WHERE.

PDTA: date unos minutos para respirar, de verdad, no entiendo como es posible no hayas visto eso al imprimir la consulta.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 06/03/2013, 12:18
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 17 años, 3 meses
Puntos: 28
Respuesta: Error con T_CONSTANT_ENCAPSED_STRING

jajajajajaja emmm bueno... si .. ya lo vi.. Disculpa y Gracias!!!!
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #10 (permalink)  
Antiguo 06/03/2013, 12:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Error con T_CONSTANT_ENCAPSED_STRING

Cita:
Iniciado por T4ke0veR Ver Mensaje
Solucionado.. era un simple "espacio"

Gracias!!!
No es tan "simple", de hecho lee bien lo que te decía anteriormente, aprender a depurar consultas nos hubiera ahorrado todo este penoso procedimiento.

Y disculpa por lo de "penoso", pero es que muchos temas se crean constantemente bajo la misma norma: no sé que pasa y voy a ver si alguien mas entiende lo que sucede aquí.

Cuando debería ser: no sé que pasa, primero investigo y depuro todo lo posible, luego investigo si alguien pasó por lo mismo y si no, finalmente voy a ver si alguien mas entiende lo que sucede aquí.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 06/03/2013, 13:42
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 17 años, 3 meses
Puntos: 28
Respuesta: Error con T_CONSTANT_ENCAPSED_STRING

Bueno si, tienes un poco de razón en lo que dices... Pero de echo se me presentó un problema el cual he buscado y buscado y no he resuelto, pues no consigo el error por mas que le doy vueltas y aqui esta algo parecido pero no me funciona por alguna razón....

Al mismo buscador le he ingresado un paginador de resultados para cuando el llegue a 10 me diga siguiente y asi no se muestre tanto... pero al darle a siguiente, el mismo no me conserva el criterio de busqueda y sale como si no hubiese buscado absolutamente nada...

Consylta
Código PHP:
 <?php
@$busqueda $_POST["for"] ;
@
$base $_POST["base"] ;

//cadena de conexion 
$conexion mysql_connect("localhost","morr0113_admin","morro2012"); 
mysql_select_db("morr0113_2012"$conexion); 
//DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe 
if ($busqueda<>''){ 
      
//Mostramos los titulos de los articulos o lo que deseemos... 
      
$trozos=explode(" ",$busqueda);

$cadbuscar = array();
$maxRows 10;
$pageNum 0;
if (isset(
$_GET['pageNum'])) {
  
$pageNum $_GET['pageNum'];
}
$startRow $pageNum $maxRows;

foreach(
$trozos as $palabra){
     
$cadbuscar[] = "descripcion LIKE '%$palabra%' OR titulo LIKE '%$palabra%'";
}
$query sprintf("SELECT descripcion, titulo, id FROM %s WHERE ",$base) ;
$query .= implode(' or '$cadbuscar);
//$query .= " LIMIT 20";
$query_limit sprintf("%s LIMIT %d, %d"$query$startRow$maxRows);
$result=mysql_query($query_limit$conexion) or die(mysql_error());  

if (isset(
$_GET['totalRows'])) {

  
$totalRows $_GET['totalRows'];

} else {
  
$all mysql_query($query);
  
$totalRows mysql_num_rows($all);
}
$totalPages ceil($totalRows/$maxRows)-1;

$queryString "";

if (!empty(
$_SERVER['QUERY_STRING'])) {
  
$params explode("&"$_SERVER['QUERY_STRING']);
  
$newParams = array();
  foreach (
$params as $param) {

    if (
stristr($param"pageNum") == false && 
        
stristr($param"totalRows") == false) {
      
array_push($newParams$param);
    }
  }
  if (
count($newParams) != 0) {
    
$queryString "&" htmlentities(implode("&"$newParams));
  }
}
$queryString sprintf("&totalRows1=%d%s"$totalRows$queryString);
}
Muestro los resultados

Código PHP:
<?php  While($row=mysql_fetch_object($result)) {
  
//muestras resultados
if ($base=="hoteles") {
      
$descripcion=$row->descripcion
      
$titulo=$row->titulo
      
$id=$row->id;
      echo 
" - <a href='detalhotel.php?id=".$id."'>".$titulo."</a><span class='buscador2'>  ".$descripcion."</span><br />"
   }
 if (
$base=="rest") {
      
$descripcion=$row->descripcion
      
$titulo=$row->titulo
      
$id=$row->id;
      echo 
" - <a href='detalrest.php?id=".$id."'>".$titulo."</a><span class='buscador2'>  ".$descripcion."</span><br />"
   }
 if (
$base=="pecuaria") {
      
$descripcion=$row->descripcion
      
$titulo=$row->titulo
      
$id=$row->id;
      echo 
" - <a href='detalpec.php?id=".$id."'>".$titulo."</a><span class='buscador2'>  ".$descripcion."</span><br />"
   }
 if (
$base=="nautica") {
      
$descripcion=$row->descripcion
      
$titulo=$row->titulo
      
$id=$row->id;
      echo 
" - <a href='detalnautica.php?id=".$id."'>".$titulo."</a><span class='buscador2'>  ".$descripcion."</span><br />"
   }
if (
$base=="embarcaderos") {
      
$descripcion=$row->descripcion
      
$titulo=$row->titulo
      
$id=$row->id;
      echo 
" - <a href='detalemb.php?id=".$id."'>".$titulo."</a><span class='buscador2'>  ".$descripcion."</span><br />"
   }
if (
$base=="eventos") {
      
$descripcion=$row->descripcion
      
$titulo=$row->titulo
      
$id=$row->id;
      echo 
" - <a href='detaleventos.php?id=".$id."'>".$titulo."</a><span class='buscador2'>  ".$descripcion."</span><br />"
   }
if (
$base=="emergencias") {
      
$descripcion=$row->descripcion
      
$titulo=$row->titulo
      
$id=$row->id;
      echo 
" - <a href='detalemergencias.php?id=".$id."'>".$titulo."</a><span class='buscador2'>  ".$descripcion."</span><br />"
   }
if (
$base=="clasificados") {
      
$descripcion=$row->descripcion
      
$titulo=$row->titulo
      
$id=$row->id;
      echo 
" - <a href='detalcla.php?id=".$id."'>".$titulo."</a><span class='buscador2'>  ".$descripcion."</span><br />"
   }
   } 
?>
y finalmente pagino

Código PHP:
<?php if ($pageNum 0) { // Show if not first page ?>
              <a href="<?php printf("%s?pageNum=%d%s"$currentPage0$queryString); ?>">Primero</a>
              <?php // Show if not first page ?></td>
            <td width="29%" align="center"><?php if ($pageNum 0) { // Show if not first page ?>
              <a href="<?php printf("%s?pageNum=%d%s"$currentPagemax(0$pageNum 1), $queryString); ?>">Anterior</a>
              <?php // Show if not first page ?></td>
            <td width="25%" align="center"><?php if ($pageNum $totalPages) { // Show if not last page ?>
              <a href="<?php printf("%s?pageNum=%d%s"$currentPagemin($totalPages$pageNum 1), $queryString); ?>">Siguiente</a>
              <?php // Show if not last page ?></td>
            <td width="23%" align="center"><?php if ($pageNum $totalPages) { // Show if not last page ?>
              <a href="<?php printf("%s?pageNum=%d%s"$currentPage$totalPages$queryString); ?>">&Uacute;ltimo</a>
              <?php // Show if not last page ?>
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #12 (permalink)  
Antiguo 06/03/2013, 13:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Error con T_CONSTANT_ENCAPSED_STRING

Pues no es un problema, más bien el problema es que no estas pasando las variables que estas usando para ejecutar la consulta inicial.

Recuerda que PHP es un lenguaje 'stateless' es decir cada que se ejecuta necesitas pasarle toda la información necesaria.

Ahora tú buscador lo estas haciendo rescatando variables por POST, pero el paginador le estas pasando variables por GET, entonces evidentemente por eso se pierde, si le quitas los @ a tus variables POST vas a poder ver el problema.

El uso de @ es muy desaconsejado, sobre todo cuando no entiendes para que se debe de usar, es mejor ver todos los posibles errores y notices que te indique tu código para poder programarlo correctamente.

Saludos.
  #13 (permalink)  
Antiguo 06/03/2013, 14:18
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 17 años, 3 meses
Puntos: 28
Respuesta: Error con T_CONSTANT_ENCAPSED_STRING

Ok, entiendo lo de que no paso la variable, elimine las @ como me indicaste .. Ahora las variables que le estoy pasando al buscador son $pageNum y $totalRows...

Que me recomiendas hacer en este caso??? obtener las variables $busqueda por GET y cambiar mi formulario??? o declaras alguna variable para el paginador???
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #14 (permalink)  
Antiguo 06/03/2013, 14:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Error con T_CONSTANT_ENCAPSED_STRING

Exacto, tienes que usar GET en el buscador, para que todas las variables que se pasen sean por GET, y así las puedas rescatar en tus enlaces.

Saludos.
  #15 (permalink)  
Antiguo 06/03/2013, 14:36
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 17 años, 3 meses
Puntos: 28
Respuesta: Error con T_CONSTANT_ENCAPSED_STRING

Excelente.. funcionó a la perfección, Gracias a ambos... se puede abrir un post para dejar el buscador listo para quienes lo necesiten???
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...

Etiquetas: html, mysql, select, sql, tabla
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:08.