Foros del Web » Programando para Internet » PHP »

ERROR EN CODIGO ( insert )

Estas en el tema de ERROR EN CODIGO ( insert ) en el foro de PHP en Foros del Web. Buenas, necesitaria q algun monstruo de php me ayude a corregir en donde esta mal puesto mi codigo ya que estoy queriendo insertar una fila ...
  #1 (permalink)  
Antiguo 18/12/2004, 04:34
Avatar de gaitagarcia  
Fecha de Ingreso: julio-2002
Mensajes: 79
Antigüedad: 21 años, 9 meses
Puntos: 0
ERROR EN CODIGO ( insert )

Buenas, necesitaria q algun monstruo de php me ayude a corregir en donde esta mal puesto mi codigo ya que estoy queriendo insertar una fila en la base de datos y no esta comprendiendo cuando le digo que inserte el valor de la variable $fechaok; .

A los otros datos los estoy tomando de mas abajo de mi pagina y estan en campos de input y selects.

Muchas Gracias
G

Código PHP:
<?php require_once('../Connections/bd_empresas.php'); 
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{

$tiempo_de_alta =1;
$fechaok date"YmdHis",mktime(date("H"),date("i"),date("s"),date("m"),date("d")+$tiempo_de_alta,date("Y")));
                 
  
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}

$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO clasificados (id_rubro, provincia, localidad, titulo, destacado, descripcion, cantidad, precio, estado, fecha, id_usuario, visitas) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['id_rubro'], "text"),
                       
GetSQLValueString($_POST['provincia'], "text"),
                       
GetSQLValueString($_POST['localidad'], "text"),
                       
GetSQLValueString($_POST['titulo'], "text"),
                       
GetSQLValueString($_POST['destacado'], "text"),
                       
GetSQLValueString($_POST['descripcion'], "text"),
                       
GetSQLValueString($_POST['cantidad'], "text"),
                       
GetSQLValueString($_POST['precio'], "int"),
                       
GetSQLValueString($_POST['estado'], "int"),
                       
GetSQLValueString($fechaok"date"), // <--- aqui el error ( CREO )
                       
GetSQLValueString($_POST['id_usuario'], "text"),
                       
GetSQLValueString($_POST['visitas'], "text"));

Última edición por gaitagarcia; 18/12/2004 a las 08:41
  #2 (permalink)  
Antiguo 18/12/2004, 09:04
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
GetSQLValueString($fechaok, "date"), // <--- aqui el error ( CREO )

El valor que le estás asignando a $fechaok no es del tipo DATE, sino TIMESTAMP.
__________________
El conocimiento es libre: Movimiento por la Devolución
  #3 (permalink)  
Antiguo 18/12/2004, 09:15
Avatar de gaitagarcia  
Fecha de Ingreso: julio-2002
Mensajes: 79
Antigüedad: 21 años, 9 meses
Puntos: 0
Desacuerdo Nop

NEGATIVO. puse como me dijiste pero no hay caso.

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 ' '1', '0')' at line 1

ese es el error que me tira el php. Gracias de todas formas. Alguien mas se anima, prueben 2opciones x $1. frijolerou te queda un shoot

( aclaracion, el $ al que me refiero es moneda ARGENTINA )
  #4 (permalink)  
Antiguo 18/12/2004, 09:36
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
¿Y que diablos hace el '1','0' ahi? jajajja :P

asi lo dejaste ahora verdad??

GetSQLValueString($fechaok, "timestamp"),
__________________
El conocimiento es libre: Movimiento por la Devolución
  #5 (permalink)  
Antiguo 18/12/2004, 09:55
Avatar de gaitagarcia  
Fecha de Ingreso: julio-2002
Mensajes: 79
Antigüedad: 21 años, 9 meses
Puntos: 0
Desacuerdo Nop

Si lo e dejado asi por si por ahi ocurre un milagro y alguien se apeada de mi y soluciona mi problema. Muchas gracias igualmente.

( Perdiste el $1 ARGENTINO ) SNIF SNIF jeje
  #6 (permalink)  
Antiguo 18/12/2004, 22:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si en tu BD tienes para ese campo un DATE y tu en $fechaok tienes por ejemplo una fecha de PHP (obtenida con date()) .. fijate bien que formato le estàs dando .. DATE es un formato de fechas tipo: aaaa-dd-mm y si es DATETIME lo anterior más hh:mm:ss .. Si es un TIMESTAMP (de Msyql) .. puede ser YYYYDDMM y no recuerdo si la hora tambièn.. Eso es lo que debes consultar en el manual de Mysql (no de "PHP") por el tipo de dato que uses para ese campo de Fecha y en consecuencia usar PHP para ajustar ese formato a lo que el campo requiera.

Por lo demàs .. te puedo comentar que Mysql en su SQL ya dispone de funciones para generar fechas futuras .. como eso que parece que estàs intentando hacer de un cálcluo tipo "hoy+N dias" o algo asì .. se usa la instrucción de SQL:

DATE_ADD() e INTERVAL y si necesitas la hora actual .. NOW() (fecha+hora) o CURDATE() si no requieres la hora en la fecha. Asì que con todo eso podrìas hacer en SQL ese cálculo probablemente.
http://dev.mysql.com/doc/mysql/en/Da...functions.html

Cuanto màs SQL uses .. mejor, màs óptimas serán tus aplicaciones. Evita usar PHP para cosas que el lenguaje Estructurado de Consultas de tu BD que uses (SQL) ya puede hacer.

Un saludo,
  #7 (permalink)  
Antiguo 19/12/2004, 12:04
Avatar de gaitagarcia  
Fecha de Ingreso: julio-2002
Mensajes: 79
Antigüedad: 21 años, 9 meses
Puntos: 0
Exclamación A Ultima Hora Me Madrugue Con Esto!!!

Cluster mira, no me gusta repetir los POST por que va encontra de las reglas de forosdelweb, el tema es que en este otro post http://www.forosdelweb.com/showthrea...160#post904160
que pense que algo estaba mal en el codigo, en definitiva se trata del mismo error. Pierde las variables cuando hago el submit.

Miralo por favor y decime en donde esta el error.

Muchas Gracias
atte
G
  #8 (permalink)  
Antiguo 19/12/2004, 12:46
Avatar de gaitagarcia  
Fecha de Ingreso: julio-2002
Mensajes: 79
Antigüedad: 21 años, 9 meses
Puntos: 0
Observacion!

EL RESULTADO QUE ME TIRA SI IMPRIMO FECHAOK = a 20041221154709, el campo de la base de datos esta en datetime e probado ingresar los datos de manera manual, asignandole dentro de la funcion a fechaok el valor ese y me lo hace perfectamente. Pasa que lo que yo tengo es un formulario en donde alguien pone la cantidad de dias y a ese select se le suma la fecha actual y a eso se lo tendria que agregar a la base de datos.
  #9 (permalink)  
Antiguo 20/12/2004, 05:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
gaitagarci

Ok, .. no repitas mensajes . .pero continua en los que abras, aportando los datos que creas que falten ...

Sobre tu problema . .ya te comenté que revises los tipos. Tu variable $fecha ... es un timestamp de UNIX .. nada que ver con el formato de un campo DATE que ya te comenté como debes hacerlo.

Usa la función date() para darle el formato que corresponde a ese timestamp por el que corresponde a un DATE de Msyql .

De hecho .. ya usas "date()":
$fechaok = date( "YmdHis", .. etc ...)

pero no con el formato que requiere date que es algo tipo Y/d/m o algo similar

www.php.net/date

Hasta que no "formatees" ese timestamp que generas con tus varaibles al que corresponde al campo DATE de tu BD no se insertará en tu BD o te dará problemas con tipos.

Un saludo
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 23:31.