Multiplicar dos campos en dreamweaver
Mis genios amigos.
Tengo el campo A y el campo B que son un formulario que se rellena en la página web y se guarda en la base de datos. (No hay problema con esto porque ya están relacionados los campos y efectivamente se guardan los datos en la BD)
Simplemente requiero que en el campo C sea el valor de la multiplicación A*B al insertar un registro pero no sé cómo.
2 respuestas
Perdona que sea escueto. Te envié una respuesta y el sistema no la registró (de hecho te contesté también en la del día 15).
Con PHP (lenguaje de servidor) no puedes acceder a los valores que introduce el usuario en el formulario hasta que este se ha enviado. Por lo tanto tienes dos opciones:
- No incluir el campo C en el formulario. Una vez enviado con REQUEST o POST recibes los valores A y B y ya puedes calcular C y guardarlo en la BBDD
- Incluir el campo C en el formulario. En ese caso debes usar Javascript (lenguaje de cliente) o JQuery y cada vez que se modifique el valor, (con "onchange") por ejemplo, en A o B se actualice C. Cuando envies el formulario ya tendrás disponibles los 3 valores para guardarlo en la base de datos.
Sí, que extraño nunca me llegó la respuesta. Aun así gracias por volver a responder.
Me parece excelente esta solución: "No incluir el campo C en el formulario. Una vez enviado con REQUEST o POST recibes los valores A y B y ya puedes calcular C y guardarlo en la BBDD"
El problema es que usé un código como este pero no me funcionó
En value puse:
"<?php echo $_REQUEST["A"] * $_REQUEST["B"];?>"
Mándame si quieres el código simplificado del formulario y de la inserción en la base de datos.
En "value" no puedes poner esos valores, no se procesan hasta que se envía el formulario, solo si al enviar el formulario se vuelve a mostrar (porque por ejemplo hubiera un valor inválido y quisieses mostrar el error) los REQUEST tendrían los valores de A y B. De todas formas si envías el formulario por POST usa mejor POST[] para recoger los datos.
En el formulario debería estar así:
<form action="guardar_en_base.php" method="post">
campo A: <input type="number" name="A"><br>
campo B: <input type="number" name="B"><br>
<input type="submit" value="Enviar">
</form>
Luego en guardar_en_base.php sería:
¿<?php
Conectar a la base de datos
$a=POST['A'], $b=POST['B'] y $c = $a*$b
Guardar valores
____________________________________________________
Si quieres que aparezca C en el formulario tienes que crear una funcion Javascript que actualice C cuando cambien A o B, pero no puedes hacerlo con PHP:
En el formulario debería estar así:
<form action="guardar_en_base.php" method="post">
campo A: <input type="number" name="A" onchange="actualizaC();"><br>
campo B: <input type="number" name="B" onchange="actualizaC();"><br>
campo C: <input type="number" name="C"><br>
<input type="submit" value="Enviar">
</form>
Luego en guardar_en_base.php sería:
<?php
Conectar a la base de datos
$a=POST['A'], $b=POST['B'] y $c = POST['C']
guardar valores
Y un script en Javascript tipo (no está en código):
function actualizaC(){
a=getElementByName('A').value;
b=getElementByName('B').value;
getElementByName('C').value[a*b];
}
¿Alguna vez le han dicho que usted es genial? Me sorprende que haya alguien que me ayude pero que hasta el código me pida.
Aquí está el código y el resultado va en DEB (en vez de C).
Si gusta me ayuda pero si le da pereza no hay problema. YA HIZO DEMASIADO.
<?php require_once('Connections/Datos.php'); ?>
<?php
$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 formulario (Usuario, Hospital, Fecha, mAs, A, B, DEB, Fibras, Microcalcificaciones) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['Usuario'], "text"),
GetSQLValueString($_POST['Hospital'], "text"),
GetSQLValueString($_POST['Fecha'], "text"),
GetSQLValueString($_POST['mAs'], "text"),
GetSQLValueString($_POST['A'], "int"),
GetSQLValueString($_POST['B'], "int"),
GetSQLValueString($_POST['DEB'], "int"),
GetSQLValueString($_POST['Fibras'], "int"),
GetSQLValueString($_POST['Microcalcificaciones'], "int"));
mysql_select_db($database_Datos, $Datos);
$Result1 = mysql_query($insertSQL, $Datos) or die(mysql_error());
$insertGoTo = "NuevoDatos enviados.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2")) {
$insertSQL = sprintf("INSERT INTO formulario (Contador, Usuario, Hospital, Fecha, mAs, A, B, DEB, Fibras, Microcalcificaciones, Masas, SNR, CNR) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['Contador'], "int"),
GetSQLValueString($_POST['Usuario'], "text"),
GetSQLValueString($_POST['Hospital'], "text"),
GetSQLValueString($_POST['Fecha'], "text"),
GetSQLValueString($_POST['mAs'], "text"),
GetSQLValueString($_POST['A'], "int"),
GetSQLValueString($_POST['B'], "int"),
GetSQLValueString($_POST['DEB'], "int"),
GetSQLValueString($_POST['Fibras'], "int"),
GetSQLValueString($_POST['Microcalcificaciones'], "int"),
GetSQLValueString($_POST['Masas'], "int"),
GetSQLValueString($_POST['SNR'], "text"),
GetSQLValueString($_POST['CNR'], "text"));
mysql_select_db($database_Datos, $Datos);
$Result1 = mysql_query($insertSQL, $Datos) or die(mysql_error());
}
mysql_select_db($database_Datos, $Datos);
$query_Usuarios = "SELECT * FROM users";
$Usuarios = mysql_query($query_Usuarios, $Datos) or die(mysql_error());
$row_Usuarios = mysql_fetch_assoc($Usuarios);
$totalRows_Usuarios = mysql_num_rows($Usuarios);
?>
<?php
mysql_free_result($Usuarios);
?>
Ólvidate entonces del Javascript si no te quieres liar mucho, pero debes de quitar el "DEB" del formulario pues un dato que calculas y que no debe introducir el usuario, y que además solo puedes manejar con Javascript antes de enviarlo.
1º) Quitas el campo "DEB" del formulario.
2º) Usas así el código:
<?php require_once('Connections/Datos.php'); ?>
<?php
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$a=$_POST['A'];
$b=$_POST['B'];
$insertSQL = sprintf("INSERT INTO formulario (Usuario, Hospital, Fecha, mAs, A, B, DEB, Fibras, Microcalcificaciones) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['Usuario'], "text"),
GetSQLValueString($_POST['Hospital'], "text"),
GetSQLValueString($_POST['Fecha'], "text"),
GetSQLValueString($_POST['mAs'], "text"),
GetSQLValueString($_POST['A'], "int"),
GetSQLValueString($_POST['B'], "int"),
GetSQLValueString($a*$b, "int"),
GetSQLValueString($_POST['Fibras'], "int"),
GetSQLValueString($_POST['Microcalcificaciones'], "int"));
mysql_select_db($database_Datos, $Datos);
$Result1 = mysql_query($insertSQL, $Datos) or die(mysql_error());
$insertGoTo = "NuevoDatos enviados.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2")) {
$a=$_POST['A'];
$b=$_POST['B'];
$InsertSQL = sprintf("INSERT INTO formulario (Contador, Usuario, Hospital, Fecha, mAs, A, B, DEB, Fibras, Microcalcificaciones, Masas, SNR, CNR) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['Contador'], "int"),
GetSQLValueString($_POST['Usuario'], "text"),
GetSQLValueString($_POST['Hospital'], "text"),
GetSQLValueString($_POST['Fecha'], "text"),
GetSQLValueString($_POST['mAs'], "text"),
GetSQLValueString($_POST['A'], "int"),
GetSQLValueString($_POST['B'], "int"),
GetSQLValueString($a*$b, "int"),
GetSQLValueString($_POST['Fibras'], "int"),
GetSQLValueString($_POST['Microcalcificaciones'], "int"),
GetSQLValueString($_POST['Masas'], "int"),
GetSQLValueString($_POST['SNR'], "text"),
GetSQLValueString($_POST['CNR'], "text"));
mysql_select_db($database_Datos, $Datos);
$Result1 = mysql_query($insertSQL, $Datos) or die(mysql_error());
}
mysql_select_db($database_Datos, $Datos);
$query_Usuarios = "SELECT * FROM users";
$Usuarios = mysql_query($query_Usuarios, $Datos) or die(mysql_error());
$row_Usuarios = mysql_fetch_assoc($Usuarios);
$totalRows_Usuarios = mysql_num_rows($Usuarios);
?>
<?php
mysql_free_result($Usuarios);
?>
- Compartir respuesta