PHP - Problema con formulario y mysql

 
Vista:

Problema con formulario y mysql

Publicado por Shinzou (6 intervenciones) el 26/01/2006 16:54:51
Antes debo decir que gracias a esta pagina y a las ayudas que aqui se brindan he aprendido mucho mas que leyendo libros y tutoriales... Gracias a todos los que hacen posible la existencia de paginas como esta!!!
Ahora, mi problema: resulta ke tengo una base de datos en mysql y en una tabla almaceno datos de personas, las cuales pueden ser consultadas desde un formulario al ingresar el id unico de cada persona. La consulta se hace correctamente, ingreso el id y al presionar el submit, llama al script que muestra los datos correspondientes en campos de texto, asi:

<form name="formConsultarId"method="SUBMIT" action="consulta_cliente2.php">
...
muestra campos de texto en blanco, pues aun no se consultan los datos
...
<input tipe="submit" name="Mostrar" value="Mostrar">
</form>

Ahora, los datos tambien debe ser posibles modificarlos y ademas se pueden eliminar las personas de la base de datos, para eso tengo formularios identicos al anterior en otros scripts con las operaciones correspondientes a cada accion. El problema es ke apenas presiono el submit para que cargue el script que muestra los datos de una persona, ya sea en modificar o eliminar, automaticamente se sobreescribe o elimina, sin esperar a que presione el correspondiente boton "eliminar" o "modificar" que llaman a otro script con las funciones respectivas. He probado de todo y nada me ha resultado. Ademas he tratado de "autollamar" la pagina para no tener ke llamar a otro script solo para que me muestre los datos, pero tampoco me ha resultado y en ocasiones arroja resultados muy caprichosos en las consultas a la base de datos, errores que no ocurren si lo hago con la usual pasada de variables por POST desde un script a otro.
Ojala que alguien me pueda ayudar, pues se que todo esta correcto, pero no se porke ocurre lo que ocurre, ojala me puedan explicar el comportamiento de los formularios que interactuan con consultas mysql, y como opera el bucle

if(!$_POST){
...
} else {
...
}

en las autollamadas de paginas, pues me funciona sin problemas mientras en el else, no utilice formularios para la salida de los datos...
De antemano, muchas gracias

P.S.: Antes de postear, mire una consulta anterior con un campo select que muestra datos al hacer una seleccion, eso ke aparecia en la respuesta lo he tratado de hacer y tampoco me ha resultado cuando el formulario contiene funciones mysql, pues los eventos onChange y onClick los he tratado de utilizar y no me resultaron..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con formulario y mysql

Publicado por Mike79 (669 intervenciones) el 26/01/2006 22:01:13
Pues habria que ver tu codigo para determinar donde esta el error, pero por lo que escribes, tienes problemas con tu logica.

¿Como es que el formulario que muestra la información esta borrando los registros?.
Simplemente creo que no tienes claro lo que estas haciendo, y solo estas copiando y pegando fragmentos de codigo.

Ahora, dices: "¿como opera el bucle?" , ¿Te refieres a que no sabes como hace las interacciones un for, o un while?, o te refieres a que no sabes como hacer el bucle con bases de datos?. ¿o ambos?.

Por favor, intenta preguntar mas explicitamente.

Saludos!
-
Miguel Angel
Mike79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con formulario y mysql

Publicado por Shinzou (6 intervenciones) el 27/01/2006 02:27:23
Este formulario pertenece al script eli_cliente1.php y envia el id del cliente a eli_cliente2.php que es el script que realiza la consulta a la base de datos y devuelve los datos del cliente seleccionado para eliminarlo si asi se desea:
<form name="FormBusqueda" method="POST" action="eli_cliente2.php">
<label>Rut  </label><input type="text" name="Id" maxlength="15"><br><br>
<input type="submit" name="MuestraDatos" value="Mostrar"><br><br>
</form>
****************************************************************************************
Este form pertenece al script eli_cliente2.php y tiene un boton que solamente devuelve al usuario al menu principal:
<form name="FormVolver" method="POST" action="menu_clientes.php">
<input type="submit" name="VuelveMenu" value="Volver">
</form>
****************************************************************************************
Este es el formulario del script eli_cliente2.php que muestra los datos de la persona seleccionada, apenas entra y muestra los datos elimina a la persona seleccionada a pesar que la accion de eliminar se lleva a cabo en una funcion de otro script que es invocada al presionar el boton eliminar, que ademas esta en OTRO FORMULARIO!!!:
<form name="FormDatos">
<label>Rut  </label><input type="text" name="Rut" maxlength="15" value =" <?php echo $_POST['Rut'];?>"><br><br>
<?PHP
$link = mysql_connect("localhost","root","password");
mysql_select_db("basededatos",$link);
$consulta = "SELECT NOMBRE FROM CLIENTES WHERE RUT = ('{$_POST['Rut']}')",$link),0); ;
$resultado = mysql_query($consulta, $conexion);
$lafila=mysql_fetch_array($resultado);
$nombre=$lafila["nombre"];
$apellidos=$lafila["apellidos"];
$direccion=$lafila["direccion"];
$telefono=$lafila["telefono"];
$celular=$lafila["celular"];
$email=$lafila["email"];
?>
<label>Nombre  </label><input type="text" name="Nombre" value =" <?PHP echo $nombre; ?>" disabled><br><br>
<label>Apellidos  </label><input type="text" name="Apellidos" value ="<?PHP $apellidos; ?>" disabled><br><br>
<label>Direccion  </label><input type="text" name="Direccion" value ="<?PHP $direccion; ?>" disabled><br><br>
<label>Telefono  </label><input type="text" name="Telefono" value ="<?PHP $telefono; ?>" disabled><br><br>
<label>Celular  </label><input type="text" name="Celular" value ="<?PHP $celular; ?>" disabled><br><br>
<label>Email  </label><input type="text" name="Email" value ="<?PHP $email; ?>" disabled><br><br>
</form>
****************************************************************************************
Este es el formulario del script eli_cliente2.php que debiese eliminar al presionar el submit Eliminar, sin embargo apenas es llamado el script eli_cliente2.php, donde esta el formulario ya elimina, sin mas ni mas:
<form name="FormElimina" method="post" action="<?php include("funciones.php"); eliminar_cliente();?>">
<input type="submit" name="Submit" value="Eliminar">
</form>
****************************************************************************************
Este es el formulario del script eli_cliente2.php que permite volver a la pagina que permite buscar por el Id un cliente que se qiuera eliminar
<form name="FormVolver" method="POST" action="eli_cliente1.php">
<input type="submit" name="VuelveBusqueda" value="Volver">
</form>

1- No tengo problemas con la logica, pues antes de programar existe una instancia de analisis y diseño la cual a pesar de ser engorrosa, no la dejo de lado.

2- Se exactamente lo que estoy haciendo, por eso pregunto el porque se eliminan los registros siendo que solo deben ser mostrados para que el usuario decida si lo quiere borrar o no. El unico copiar-pegar que hice fue desde los scrips hasta aqui.

3- Tenia un bucle
<?PHP if(!$_POST) {
acciones a realizar cuando no se han enviado variables por metodo POST
}
else {
acciones a realizar cuando se han enviado variables por el metodo POST
} ?>
pero solo funcionaba cuando dentro del else NO SE MUESTRAN LAS VARIABLES A TRAVES DE OTRO FORMULARIO. Esto se supone que ahorraba el tener que llamar a otro script solo para mostrar los datos, autollamando a la pagina, pero a pesar que en muchos sitios se explica las acciones y el funcionamiento de las autollamadas, estas en mi caso, no fueron aplicables. Por eso preguntaba como funciona ESTE CASO DEL BUCLE IF-ELSE EN PARTICULAR, CON LA CONDICION DE LA EXISTENCIA O NO DE DATOS VENIDOS DESDE UN FORMULARIO.

Uf! no creo poder ser mas preciso, sorry si me extendi un poco, pero si con palabras no me supe expresar, supongo que el codigo hablara por si solo. Ahora espero que aquellos en disposicion de ayudarme, tengan la pelicula mas clara.

Gracias y saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con formulario y mysql

Publicado por Shinzou (6 intervenciones) el 27/01/2006 02:39:05
Fe de erratas....

Estas 2 lineas estan desordenadas, porque estaba editandolas al momento de ponerlas en mi post anterior:
$consulta = "SELECT NOMBRE FROM CLIENTES WHERE RUT = ('{$_POST['Rut']}')",$link),0); ;
$resultado = mysql_query($consulta, $conexion);

Asi debieran ser:
$consulta = "SELECT NOMBRE FROM CLIENTES WHERE RUT = ('{$_POST['Rut']}')"; ;
$resultado = mysql_query($consulta, $link);

Sorry... :P
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con formulario y mysql

Publicado por Mike79 (669 intervenciones) el 27/01/2006 05:15:26
Me temo que si es de logica.

Bueno, primero lo primero, el If no es un bucle, es una estrcutura de control.

Segundo. El error si es de logica y esta aquí:

script: eli_cliente2.php
<form name="FormElimina" method="post" action="<?php
include("funciones.php"); eliminar_cliente();?>">

Cuando tu usas un include, dentro de un archivo de php, el archivo se incluye en ese momento, y si despues haces un llamada a una funcíón, la función se ejecuta en ese momento, no importa que este en el action del formulario, el codigo se ejecuta en ese momento. Para hacer que no se ejecute, te recomiendo la forma facil:

En ese form, ponle un campo oculto, donde le pases el id, y llama a otro archivo php, que reciva el id, y ahora si borre lo que tenga que borrar, ahí pondrias el include y todo lo que necesitas.

La forma un poquito más dificil, es igual, poner un campo oculto, pero hacer que el action haga referencia al mismo script, y como tu decias, hacer el if, de que si es "borrar" entonces haga una cosa y si no haga otra. Como tip, yo en esos casos, ademas del id paso un campo oculto que se llama Borrar con el valor de "si".

Saludos!
-
Miguel Angel
Mike79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con formulario y mysql

Publicado por Shinzou (6 intervenciones) el 27/01/2006 14:57:13
Muchas gracias por la ayuda, ahora me queda todo claro. Ya me parecia extraño la llamada a la funcion dentro del formulario, pues ese fue un "consejo" que me dieron y como yo estaba agotado de ideas, le di uso a pesar que en ese momento no entendia tan claramente el uso de los formularios cuando se incluye codigo php...
Gracias tambien por la aclaracion de la estructura de control if, todos los dias se aprende algo nuevo, pues en los tutoriales que he leido aparecen esas estructuras como "ciclos, bucles y estructuras de control" no aclarando muy bien cual es cual, supongo que como las estructuras son iguales independiente del lenguaje, dan por hecho que uno sabe cual es cual.
Gracias finalmente por la paciencia >_<
Bytes!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar