Foros del Web » Programando para Internet » PHP »

Script para recibir un formulario.

Estas en el tema de Script para recibir un formulario. en el foro de PHP en Foros del Web. Hola: Tengo un formulario de introducción de datos que pasan a una base MySQL. Cuando se pulsa el botón "Enviar", los datos se graban en ...
  #1 (permalink)  
Antiguo 28/07/2004, 10:46
 
Fecha de Ingreso: julio-2004
Mensajes: 27
Antigüedad: 13 años, 4 meses
Puntos: 0
Script para recibir un formulario.

Hola:

Tengo un formulario de introducción de datos que pasan a una base MySQL.
Cuando se pulsa el botón "Enviar", los datos se graban en su correspondiente tabla y se ejecuta un archivo PHP.

Estoy empezando y no sé escribir ese archivo. Quisiera que tuviera una sentencia condicional (como el if/else de ActionScript), de forma que el usuario recibiera una notificación de error en el caso de que lo haya, o un número de registro, que corresponda con la columna de la tabla definida como clave primaria autoincremental.

Yo he hecho un intento pero me sale siempre el número 1.

Código:
<?php require_once('../Connections/conex_form.php'); ?>
<?php
mysql_select_db($database_conex_form, $conex_form);
$query_Recordset1 = "SELECT inscripciones.numero FROM inscripciones";
$Recordset1 = mysql_query($query_Recordset1, $conex_form) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
Su solicitud ha sido grabada. Le corresponde el número de registro <?php echo $row_Recordset1['numero']; ?> 
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
Un saludo.

Jesús
  #2 (permalink)  
Antiguo 28/07/2004, 11:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No entiendo en que cirscusntancias se genera el error .. pero, si lo que quieres es obtener el último ID (campo autoincremental y único) de tu BD generado por un INSERT .. puedes usar la función:

mysql_insert_id()
www.php.net/mysql_insert_id

Pero .. lo obtendras despues de haber hecho un INSERT a tu BD.

Un saludo,
  #3 (permalink)  
Antiguo 29/07/2004, 02:11
 
Fecha de Ingreso: julio-2004
Mensajes: 27
Antigüedad: 13 años, 4 meses
Puntos: 0
Hola:

Gracias Cluster por tu ayuda.

He conseguido colocar debidamente la función y va todo correctamente. Cuando hay un nuevo insert en la DB mi archivo devuelve el número que le corresponde.

Sin embargo, yo quería perfeccionar el código para que enviara un mensaje de error en el caso de que se produzca un fallo y la solicitud (el insert) no quede grabada.
Yo no sé si ese mensaje lo tengo que construir mediante una sentencia condicional o va a ocurrir lo que pasa cuando envío los datos teniendo vacíos campos marcados NOT NULL.
En este caso el sistema genera mensajes automáticamente y los presenta al usuario.

Por cierto, que esos mensajes de error están en inglés y me gustaría localizar los archivos que los generan para traducirlos.

Un saludo.
  #4 (permalink)  
Antiguo 29/07/2004, 10:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si te refieres a detectar algún posible error con la creación del registro en sí .. pudes usar mysql_query() bajo un condicional y obtener el código/mensaje de error própio de Mysql con:

Código PHP:
if ([email protected]mysql_query("INSERT ...")){
echo 
"Se produjo un error al crear el registro: ".mysql_error();
// terminas la ejecución de tu script si lo deseas ...
exit;

La @ delante de la función indica que no quiero mostrar los mensajes de error de PHP ya que voy a gestionarlo con mi própia lógica.

Ahora, eso sería controlar el "error" físico de Mysql (fallá la conexión y no se puede ejecutar la consulta .. o un error de SQL . etc ...)

Si lo que deseas es verificar la existencia de algún valor de cierto campo de tu BD (de tada la tabla) antes de crear tu registro físicamente para evitar duplicados .. deberías hacer una consulta SQL de SELECT bajo la condición del campo que requieras (WHERE campo=$condicion) y ver si te arroja 1 resultado . .si es así tu "registro" existe y podrás mostrar el mensaje que corresponda. A todo esto te puede ayudar indicar como propiedad del campo que no se ha de repetir en tu BD el tipo "UNIQUE", lo cual .. si intentas crear un campo duplicado que sea de esta propiedad .. Mysql te dará un error carcacterístico; algo tipo: "... Key duplicate ..." .. que, como mensaje de error puedes gestionarlos con mysql_errorn() (que obtiene el nº de código de error) y así hacer tu "IF" para mostrar el error "personalizado" como quieras. Esta sería otra técnica para controlar y evitar "registros duplicados". Por mi parte prefiero usar la otra opción.

Un saludo,

Última edición por Cluster; 29/07/2004 a las 10:29
  #5 (permalink)  
Antiguo 29/07/2004, 17:20
 
Fecha de Ingreso: julio-2004
Mensajes: 27
Antigüedad: 13 años, 4 meses
Puntos: 0
Muchas gracias.

Esto son respuestas de calidad.

Probaré el script que me indicas, aunque no sé como hacer que falle algo para ver si lo hago bien.

El 2º tipo de errores que comentas ni siquiera me lo había planteado. Se ve que aun no he tenido ocasión de tropezar.

En un principio pensé que Julio y Agosto eran dos buenos meses para empezar un curso de PHP, pero luego lo desestimé porque me salió un trabajo largo.
Sin embargo veo que no me va a quedar más remedio que ponerme las pilas si quiero hacer algo serio.
Pero es tan poquita cosa lo que tengo que hacer que requiere PHP, que se hace duro enfrentarse a un mundo nuevo, apasionante y encriptado que tiene como bandera un manual tan grueso.

Bueno, lo dicho, muchas gracias y te ahorro seguir con mis soliloquios.

Un abrazo.

Jesús.
Desde Talavera de la Reina (Toledo) España.

Un saludo.
  #6 (permalink)  
Antiguo 29/07/2004, 21:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
A todo esto .. cuando programas en "PHP" recuerda y ten presente que NO sólo te tienes que pelear con PHP ... Aquí a lo largo del mensaje hemos "tocado" conceptos que son de "Base de datos": del SQL (lenguaje estructurado de consultas) y de modelo de datos en general + las peculiaridades de Mysql.

Y luego está el "lado del cliente" .. es decir, todo ese HTML/javacript/flash.. etc que también usas por qué esa es la "salida" que estás componiendo con tu lenguaje del lado del servidor: en esta ocasión PHP .. pero podría ser cualquier otro. (siempre digo lo mismo: aprendan la "base" de todo esto y dará igual si usan un lenguaje u otro).

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 15:23.