Foros del Web » Programando para Internet » PHP »

expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Estas en el tema de expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' en el foro de PHP en Foros del Web. ME podeis ayudar donde esta el error? $query = mysql_query("INSERT INTO contactos (nombre,email,mensaje) values ('$_POST['nombre']}','{$_POST['email']}','{$_POST['mensaje']}')");...
  #1 (permalink)  
Antiguo 27/02/2010, 15:40
 
Fecha de Ingreso: febrero-2010
Mensajes: 95
Antigüedad: 14 años, 1 mes
Puntos: 0
expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

ME podeis ayudar donde esta el error?
$query = mysql_query("INSERT INTO contactos (nombre,email,mensaje) values ('$_POST['nombre']}','{$_POST['email']}','{$_POST['mensaje']}')");
  #2 (permalink)  
Antiguo 27/02/2010, 15:45
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Prueba asi:

$query = mysql_query("INSERT INTO contactos (nombre,email,mensaje) values ('$_POST['nombre']','$_POST['email']','$_POST['mensaje']')");
  #3 (permalink)  
Antiguo 27/02/2010, 15:55
Avatar de Nazari  
Fecha de Ingreso: febrero-2010
Ubicación: Canarias - Tenerife
Mensajes: 62
Antigüedad: 14 años, 2 meses
Puntos: 7
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Si sigue sin funcionarte prueba asi, ya que las comillas suelen dar problemas.
Cita:
$query = mysql_query("INSERT INTO contactos (nombre,email,mensaje) values ('".$_POST['nombre']."','".$_POST['email']."','".$_POST['mensaje']."')");
lo que e echo es sacar los valores del interior de las comillas. asi '".$variable."'

Un Saludo
  #4 (permalink)  
Antiguo 27/02/2010, 16:01
 
Fecha de Ingreso: febrero-2010
Mensajes: 95
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Gracias, Gracias y mas gracias, llevo asi 3 horas, eres un crack
  #5 (permalink)  
Antiguo 27/02/2010, 16:03
 
Fecha de Ingreso: febrero-2010
Mensajes: 95
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Ya no me sale el error pero no inserta los datos
Sabes como enviar el formulario por email con los mismos campos

Última edición por granasturcom; 27/02/2010 a las 16:20
  #6 (permalink)  
Antiguo 27/02/2010, 16:12
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

para evitar el lío de las comillas sería mejor que usaras variables:
Código PHP:
$nombre $_POST['nombre'];
$email $_POST['email'];
$mensaje $_POST['mensaje'];
$query mysql_query("INSERT INTO contactos (nombre,email,mensaje) values ('$nombre','$email','$mensaje')"); 
incluso deberías usar funciones para evitar las inyecciones SQL
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #7 (permalink)  
Antiguo 27/02/2010, 16:20
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

A parte de todo lo que te dijeron, era muy sencillo ver el error. Te faltaba un corchete al principio de todo:
$query = mysql_query("INSERT INTO contactos (nombre,email,mensaje) values ('{$_POST['nombre']}','{$_POST['email']}','{$_POST['mensaje']}')");
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #8 (permalink)  
Antiguo 27/02/2010, 16:24
Avatar de Nazari  
Fecha de Ingreso: febrero-2010
Ubicación: Canarias - Tenerife
Mensajes: 62
Antigüedad: 14 años, 2 meses
Puntos: 7
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Si es una buena forma de evitar hacerte un lio, aki dejo dos funciones para limpiar variables seguro que a alguien les sirve

Cita:
function limpiar($texto) { //limpia un texto de caracteres extraños
$texto = htmlspecialchars($texto) ;
$texto = trim($texto) ;
$texto = stripslashes($texto);
$texto = strip_tags($texto);
return $texto ;
}

function limpiar_array($variable){ //Limpia los arrays de caracteres maliciosos
$i = 0;
foreach ($variable as $elem) {
$variable[$i] = limpiar($variable[$i]);
$i++;
}
return $variable;
}
Para limpiar una variable puedes usar:
$nombre = limpiar($_POST['nombre']);

y si lo que quieres es limpiar un array completamente por ejemplo todos los datos que entran de un formulario mediante post o get puedes usar

$_POST = limpiar_array($_POST);

Lo unico tener en cuenta que si quieres guardar o enviar codigo javascript o html para que se ejecute, no debes de limpiarlas. Un Saludo
  #9 (permalink)  
Antiguo 27/02/2010, 16:29
 
Fecha de Ingreso: febrero-2010
Mensajes: 95
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Tengo que hacer algo despues de eso para que me inserte los datos
  #10 (permalink)  
Antiguo 27/02/2010, 16:33
Avatar de Nazari  
Fecha de Ingreso: febrero-2010
Ubicación: Canarias - Tenerife
Mensajes: 62
Antigüedad: 14 años, 2 meses
Puntos: 7
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Si claro tendrias que haser el query, tal y como lo has ehco hasta ahora, si optas por haserlo igual que hasta ahora pero limpiandolos te quedaria algo asi.

Cita:
$_POST = limpiar_array($_POST);
$query = mysql_query("INSERT INTO contactos (nombre,email,mensaje) values ('".$_POST['nombre']."','".$_POST['email']."','".$_POST['mensaje']."')");
Asi de simple.

Si prefieres almacenarlos en variables para evitar liarte con las comillas como dice jcxnet, te quedaria asi:

Cita:

$_POST = limpiar_array($_POST);

$nombre = $_POST['nombre'];
$email = $_POST['email'];
$mensaje = $_POST['mensaje'];
$query = mysql_query("INSERT INTO contactos (nombre,email,mensaje) values ('$nombre','$email','$mensaje')");
Un Saludo
  #11 (permalink)  
Antiguo 27/02/2010, 16:54
 
Fecha de Ingreso: febrero-2010
Mensajes: 95
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

hacerlo lo hago pero no me graba los datos en la base de datos
  #12 (permalink)  
Antiguo 27/02/2010, 16:55
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Y no tienes una conexión antes del query?
mysql_connect(servidor, user, pass)
mysql_select_db(base de datos)
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #13 (permalink)  
Antiguo 27/02/2010, 17:00
 
Fecha de Ingreso: febrero-2010
Mensajes: 95
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Si la tengo la abro a traves de mi funcion
require_once "header.php";
  #14 (permalink)  
Antiguo 27/02/2010, 17:04
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Pues si tienes por ejemplo $conexion=mysql_connect.... cambia el query y mándalo a $conexion:

Código PHP:
Ver original
  1. $query=mysql_query("INSERT INTO tabla (campos) VALUES (valores)", $conexion);
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #15 (permalink)  
Antiguo 27/02/2010, 17:10
 
Fecha de Ingreso: febrero-2010
Mensajes: 95
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

$conn = mysql_connect(HOST, DBUSER, PASS) or die('No se ha podido conectar !<br />por favor contacte con su administrator.');
le doy los valores y luego :
$db = mysql_select_db(DB) or die('No se ha podido conectar con la base de datos !<br />por favor contacte con su administrator.');
tengo esto
y cuando tengo q abrir la bd llamo a la funcion
cambie lo que me dijiste y sigue igual

Última edición por granasturcom; 27/02/2010 a las 17:19
  #16 (permalink)  
Antiguo 27/02/2010, 17:20
Avatar de Nazari  
Fecha de Ingreso: febrero-2010
Ubicación: Canarias - Tenerife
Mensajes: 62
Antigüedad: 14 años, 2 meses
Puntos: 7
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Fijate que al final del query, ha añadido
Cita:
,$conexion
tu deberias de poner ,$conn por que es la variable que te conecta con la base de datos, de todas formas, al final del query prueba a poner
or die(mysql_error());

para ver donde si imprime algun error en pantalla.
  #17 (permalink)  
Antiguo 27/02/2010, 17:21
 
Fecha de Ingreso: febrero-2010
Mensajes: 95
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Gracias esta todo bien era porque ponia esto y claro no entraba dentro
if ( !empty($_POST['submit']) ) //si envia formulario
creo que esto es si no envia
  #18 (permalink)  
Antiguo 27/02/2010, 17:23
 
Fecha de Ingreso: febrero-2010
Mensajes: 95
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Ahora como mando los datos por email
  #19 (permalink)  
Antiguo 27/02/2010, 17:49
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

el problema del principio fue que faltaba un { (un poco tarde jajajaj)

y en cuanto al mail, solo es cuestion de buscar en las faqs.

enviar mail en formato html
o si prefieres algo masl simple solo lee un poco a cerca de la funcion mail
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #20 (permalink)  
Antiguo 27/02/2010, 17:51
 
Fecha de Ingreso: febrero-2010
Mensajes: 95
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Gracias por todo, espero aprender pronto y poder echar una mano tambien
  #21 (permalink)  
Antiguo 27/02/2010, 18:37
 
Fecha de Ingreso: febrero-2010
Mensajes: 95
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Tengo otro Problema , cada vez que pinchio en el link contactos me inserta todos los campos aunque yo no le de a enviar lo hace simplemente al acceder a contacto.php ¿que pasa?
me los crea en blanco

Última edición por granasturcom; 28/02/2010 a las 08:48
  #22 (permalink)  
Antiguo 28/02/2010, 11:49
Avatar de Nazari  
Fecha de Ingreso: febrero-2010
Ubicación: Canarias - Tenerife
Mensajes: 62
Antigüedad: 14 años, 2 meses
Puntos: 7
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

pues que el if que tienes como condicional para que los inserte tiene que estar mal, y al entrar entiende que enviastes el formulario, has comprobado que el form el boton enviar tiene name='submit' ? por que es el valor que veo que compruebas

if(!empty($_POST['submit']){

}

siginifica si submit no esta vacio, lo que quiere decir que se envio el formulario.

Saludos.

Última edición por Nazari; 28/02/2010 a las 12:09
  #23 (permalink)  
Antiguo 28/02/2010, 13:11
 
Fecha de Ingreso: febrero-2010
Mensajes: 95
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

gracias por las respuestas voy a ver porque es

Etiquetas: Ninguno
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:25.