Foros del Web » Programando para Internet » PHP »

Como se pueden insertar registros en una base de datos usando una variable

Estas en el tema de Como se pueden insertar registros en una base de datos usando una variable en el foro de PHP en Foros del Web. Hola Estoy intentando crear un foro y tengo un problema a la hora de insertar algunos registros en la base de datos. A continuación incluyo ...
  #1 (permalink)  
Antiguo 14/10/2011, 05:04
 
Fecha de Ingreso: octubre-2011
Mensajes: 6
Antigüedad: 12 años, 6 meses
Puntos: 0
Como se pueden insertar registros en una base de datos usando una variable

Hola
Estoy intentando crear un foro y tengo un problema a la hora de insertar algunos registros en la base de datos.
A continuación incluyo el código php y el formulario. El formulario funciona bien e inserta los registros que se piden en los campos de texto, el problema es que además quiero insertar el valor de la fecha actual en el registro 'fecha' de la base de datos, y en un campo llamado 'id_mensaje' debo insertar un valor que relaciona la respuesta con el mensaje al que contesta.
Por mucho que lo he intentado no consigo insertar esos valores que tengo asignados en unas variables llamadas $fecha_actual y $Mensaje_inicial en la base de datos.
¿Alguien puede ayudarme e indicarme como hacerlo?


<?php require_once('Connections/foro.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($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"] == "Responder")) {
$insertSQL = sprintf("INSERT INTO respuestas (autor, respuesta) VALUES (%s, %s)",
GetSQLValueString($_POST['Autor'], "text"),
GetSQLValueString($_POST['Respuesta'], "text"),
mysql_select_db($database_foro, $foro));
$Result1 = mysql_query($insertSQL, $foro) or die(mysql_error());


$insertGoTo = "Respuestas.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
?>
Y ESTE ES EL FORMULARIO:
<form action="<?php echo $editFormAction; ?>" id="Responder" name="Responder" method="POST">
<table width="392" height="205" border="1" align="center" cellpadding="4" cellspacing="2">
<tr>
<td height="36">AUTOR:</td>
<td><input name="Autor" type="text" id="Autor" maxlength="30" /></td>
</tr>
<tr>
<td>RESPUESTA:</td>
<td><textarea name="Respuesta" id="Respuesta"></textarea></td>
</tr>
<tr>
<td height="34">&nbsp;</td>
<td align="center" valign="middle"><input type="submit" name="Crear" id="Crear" value="Enviar" /></td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="Responder" />
</form>
  #2 (permalink)  
Antiguo 14/10/2011, 07:03
Avatar de mcun  
Fecha de Ingreso: octubre-2010
Ubicación: tras la pantalla
Mensajes: 466
Antigüedad: 13 años, 6 meses
Puntos: 55
Respuesta: Como se pueden insertar registros en una base de datos usando una variable

No veo donde defines el date() no lo envías en el form y en le script que procesa el form tampoco esta..

y la sentencia sql ??
  #3 (permalink)  
Antiguo 14/10/2011, 07:32
 
Fecha de Ingreso: octubre-2011
Mensajes: 6
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Como se pueden insertar registros en una base de datos usando una variable

En la página de los mensajes iniciales se envía por URL una variable que tiene el valor de 'id_mensaje?.
El código es:
<td align="center" valign="middle"><a href="Crear_respuesta.php?cat=<?php echo $colname_Respuestas; ?>"> Responder</a></td>
En la página de respuesta se captura este valor y se asigna a la variable $Mensaje_inicial con el siguiente código:
f (isset($_GET['cat'])) {
$Mensaje_inicial = $_GET['cat'];
}
En cuanto a la fecha actual se asigna a la variable $fecha_actual con el siguiente código:
$fecha_actual = date("Y-m-d");
No las he puesto en el código anterior porque todas las pruebas que he hecho para insertar los valores me han fallado.
  #4 (permalink)  
Antiguo 14/10/2011, 07:37
Avatar de mcun  
Fecha de Ingreso: octubre-2010
Ubicación: tras la pantalla
Mensajes: 466
Antigüedad: 13 años, 6 meses
Puntos: 55
Respuesta: Como se pueden insertar registros en una base de datos usando una variable

lo que sucede es que si no vemos el código completo, solo nos queda imaginar como esta codificado y luego especular donde podría estar el error ...

1º postea todo el código indicando el nombre en cada caso y que hace o debería hacer

2º postealo entre las etiquetas highlight

así tendrás mejor ayuda y nosotros no perdemos el tiempo ;)
  #5 (permalink)  
Antiguo 14/10/2011, 09:06
 
Fecha de Ingreso: octubre-2011
Mensajes: 6
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Como se pueden insertar registros en una base de datos usando una variable

// CODIGO DE LA CONEXION 'foro.php' //

<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_foro = "localhost";
$database_foro = "foro_modelismonaval";
$username_foro = "root";
$password_foro = "";
$foro = mysql_pconnect($hostname_foro, $username_foro, $password_foro) or trigger_error(mysql_error(),E_USER_ERROR);
?>
// LA BASE DE DATOS TIENE LAS SIGUIENTES TABLAS //
TABLA 'mensajes' con los registros 'id_mensaje' (entero autoincrementable), 'titulo' (del mensaje), 'autor', 'fecha', 'mensaje'

TABLA 'respuesta' con los registros 'id_respuesta'(entero autoincrementable), 'id_mensaje' (corresponde al codigo del mensaje del que proviene y su valor se envia por URL en la variable cat), 'autor' (se pide por formulario), 'fecha' (fecha actual que se envia con la variable $fecha_actual), 'respuesta' (se pide por formulario)

EL FORMULARIO QUE SE MUESTRA ES EL SIGUIENTE Y SU FUNCION ES CREAR EL MENSAJE DE RESPUESTA A UN MENSAJE INICIAL:
<form action="<?php echo $editFormAction; ?>" id="Responder" name="Responder" method="POST">
<table width="392" height="205" border="1" align="center" cellpadding="4" cellspacing="2">
<tr>
<td height="36">AUTOR:</td>
<td><input name="Autor" type="text" id="Autor" maxlength="30" /></td>
</tr>
<tr>
<td>RESPUESTA:</td>
<td><textarea name="Respuesta" id="Respuesta"></textarea></td>
</tr>
<tr>
<td height="34">&nbsp;</td>
<td align="center" valign="middle"><input type="submit" name="Crear" id="Crear" value="Enviar" /></td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="Responder" />
</form>
// el formulario tiene los campos 'autor' y 'respuesta' y el botón 'enviar' que inserta los datos del formulario en la base de datos. Además de los datos 'autor' y 'respuesta' del formulario se deben insertar los datos 'fecha' (que debe ser la fecha de creación del mensaje) y 'id_mensaje'(para relacionar la respuesta con el mensaje inicial y cuyo valor se recibe por URL de la pagina mensajes.php) //

// El siguiente codigo inserta los datos generados a través del formulario ('autor', 'respuesta') en la base de datos //

$foro=mysql_conect('foro', 'id_mensaje', 'fecha');
mysql_select_db($database_foro, $foro);
$insertar = "INSERT INTO respuestas(id_mensaje, fecha) VALUES('$Mensaje_inicial', '$fecha_actual')";
$insertar = mysql_query($insertar, $foro) or die(mysql_error());

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "Responder")) {
$insertSQL = sprintf("INSERT INTO respuestas (autor, respuesta) VALUES (%s, %s)",
GetSQLValueString($_POST['Autor'], "text"),
GetSQLValueString($_POST['Respuesta'], "text"),
mysql_select_db($database_foro, $foro));
$Result1 = mysql_query($insertSQL, $foro) or die(mysql_error());


$insertGoTo = "RespuestasSesion.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
?>

// y el siguiente codigo asigna los datos 'fecha' e 'id_mensaje' a las variables $Mensaje_inicial y $fecha_actual //

if (isset($_GET['cat'])) {
$Mensaje_inicial = $_GET['cat'];
}
$fecha_actual = date("Y-m-d");

//El valor de estas variables se ha de insertar en la base de datos en los campos 'fecha' e 'id_mensaje y es el código de la instrucción SQL que lo puede hacer lo que me falta //

// He probado con el codigo siguiente: //

mysql_select_db($database_foro, $foro);
$insertar = "INSERT INTO respuestas(id_mensaje, fecha) VALUES('$Mensaje_inicial', '$fecha_actual')";
$insertar = mysql_query($insertar, $foro) or die(mysql_error());

// pero me da el error siguiente //

Notice: Undefined variable: Mensaje_inicial in C:\wamp\www\pruebas\foro\Crear_respuesta.php on line 108

¿Puedes indicarme cual es la instrucción correcta para insertar esos datos?

Etiquetas: html, mysql, registro, registros, sql, variables
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 12:51.