Programación Web y Scripting > PHP
Actualización de Datos
lair:
Hola:
mira revisando mas a detalle tu codigo me paresio encontrar mas errores:
Edita Emp.php
--- Código: PHP --- <table width="800" border="1" bordercolor="#CCCCCC" align="center" cellpadding="10" cellspacing="0"> <form method='POST' action='EditaEmp1.php'> <tr> <td colspan='2' bgcolor="#ECEEF0"><div align='center'> <p><span class="Estilo1">Editar Empresa</span><br/> </p> </div> </td> </tr> <tr> <td width="210">Nombre Empresa :</td> <td width="544"> <!-- si vas a extenderlo mejor usa un colspan o rowspan --> <? include("config.inc.php"); $consult_emp="SELECT id_emp,Nombre_emp,Rut_emp,Telefono_emp,Direccion_emp FROM empresa ORDER BY Nombre_emp"; $result=mysql_query($consult_emp) or die ("Fallo la busqueda"); echo '<select name="Nombre_emp"/>';//la variable que esperas capturar se llama Nombre_emp //Generamos el menu desplegable while ($row=mysql_fetch_array($result)) { echo '<option>'.$row["Nombre_emp"]; $Nombre_emp=$row["Nombre_emp"]; } ?> </td> </tr> <br/><!-- este no sirve de nada aqui --> <tr> <td colspan='2' align='center' bgcolor="#ECEEF0"> <input name='Seleccionar' type='submit' value='Seleccionar' /> </td> </tr> </form></table>
EditaEmp1.php
--- Código: PHP --- <? include("config.inc.php"); $Nom=$_POST["Nombre_emp"];//aqui la capturas y la almacenas en la variable $Nom /* * Aqui tu variable $Nombre_emp ya no existe ahora es $Nom, por lo que creo que esa consulta es retornando vacio */ $sql="SELECT Nombre_emp,Rut_emp,Telefono_emp,Direccion_emp FROM Empresa WHERE Nombre_emp='$Nombre_emp'"; $result=mysql_query($sql) or die("Problemas en la conexion en la Selección"); while ($row=mysql_fetch_array($result)) { $Nombre_emp=$row["Nombre_emp"]; $rut=$row["Rut_emp"]; $separar = explode('-',$rut); $rut1=$separar[0]; $dig=$separar[1]; $tel=$row["Telefono_emp"]; $dir=$row["Direccion_emp"]; }?><table width="800" border="1" bordercolor="#CCCCCC" align="center" cellpadding="10" cellspacing="0"> <!-- Aqui a la linea action='grabau.php?Nombre_emp' no solo la variable no existe sino que si quieres poner ahi un parametro que viene desde php deveria ser de la siguiente manera action='grabau.php?<?php echo $Nombre_emp; ?>' eso en caso de que ESA VARIABLE SEA LA CORRECTA --> <form id='EditaEmp1' name='form1' method='POST' action='grabau.php?Nombre_emp'> <tr> <td colspan='2' bgcolor="#ECEEF0"><div align='center'> <p><span class="Estilo1">Editar Datos de la Empresa: <? echo $Nombre_emp; ?></span><br/> </p> </div> </td> </tr> <tr> <td>Rut :</td> <td><span> <input name='rut1' value='<? echo $rut1 ?>' type='text' size='10' maxlength='9' /> - <input name='dig' value='<? echo $dig ?>' type='text' size='1' maxlength='2' /> </span> </td> </tr> <tr> <td>Telefono :</td> <td><span> <input name='tel' value='<? echo $tel ?>' type='text' size='10' maxlength='10' /> </span> </td> </tr> <tr> <td>Dirección :</td> <td><span> <input name='dir' value='<? echo $dir ?>' type='text' size='65' maxlength='150' /></span> </td> </tr> <br/> <tr> <td colspan='2' align='center' bgcolor="#ECEEF0"> <input name='Guardar' type='submit' value='Guardar' /> </td> </tr> <tr> <td colspan='2' valign='top'> </td> </tr> </form></table>
grabau.php:
--- Código: PHP --- <? include ("config.inc.php"); /* No estoy seguro de lo que intentas pero si esta variable es la que mandas por URL (osea aqui action='grabau.php?Nombre_emp'>) no la puedes capturar con $_POST sino con $_GET * */ $Nombre_emp=$_POST["Nombre_emp"]; $rut1 = $_POST['rut1']; $dig = $_POST['dig']; $rut = $rut1.'-'.$dig; $tel = $_POST['tel']; $dir = $_POST['dir']; $Nom = $_POST['Nom']; echo "Nombre_emp: ",$Nombre_emp,$Nom,$rut1,"- ",$rut,"Dir: ",$dir,"Tel; ",$tel; mysql_query("UPDATE 'empresa' SET Rut_emp='$rut',Telefono_emp='$tel',Direccion_emp='$dir' WHERE Nombre_emp='$Nombre_emp'") or die ("NO GRABO");?><form name='add_emp' method='POST' > <table width="800" border="1" bordercolor="#CCCCCC" align="center" cellpadding="10" cellspacing="0"> <tr> <th align="center" bgcolor="#ECEEF0" class="titnoticia2" scope="col">Grabación Empresa </th> </tr> <tr> <td bordercolor="#000000"><table width="774" height="35"> <tr> <td><div align="center"> <div align="center" class="Estilo1"> DATOS DE NUEVA EMPRESA GRABADO EXITOSAMENTE</div> </td> </tr> </table> </td> <!-- Creo que estas etiquetas sobran o estan mal posicionadas --> </tr> <tr> <td align='center' bgcolor="#ECEEF0"> <a href="menu_central.php">VOLVER</a></span> <span align="right"> <a href="logout.php">SALIR</a></span></td> </tr> </table></form>
intenta con todo eso y suerte, si persisten las molestias aqui estamos para ayudar
SUERTE :good:
F_Tanori:
Edita Emp.php
--- Código: PHP ---<table width="800" border="1" bordercolor="#CCCCCC" align="center" cellpadding="10" cellspacing="0"> <form method='POST' action='EditaEmp1.php'> <tr> <td colspan='2' bgcolor="#ECEEF0"><div align='center'> <p><span class="Estilo1">Editar Empresa</span><br/> </p> </div></td> </tr> <tr> <td width="210">Nombre Empresa :</td> <td width="544"> <? include("config.inc.php"); $consult_emp="SELECT id_emp,Nombre_emp,Rut_emp,Telefono_emp,Direccion_emp FROM empresa ORDER BY Nombre_emp"; $result=mysql_query($consult_emp) or die ("Fallo la busqueda"); echo '<select name="Nombre_emp"/>'; //Generamos el menu desplegable while ($row=mysql_fetch_array($result)) { echo '<option>'.$row["Nombre_emp"]; $Nombre_emp=$row["Nombre_emp"]; } ?> </td> </tr> <br/> <tr> <td colspan='2' align='center' bgcolor="#ECEEF0"> <input name='Seleccionar' type='submit' value='Seleccionar' /></td> </tr> </form></table>
EditaEmp1.php
--- Código: PHP ---<? include("config.inc.php"); $Nom=$_POST["Nombre_emp"]; $sql="SELECT Nombre_emp,Rut_emp,Telefono_emp,Direccion_emp FROM Empresa WHERE Nombre_emp='$Nombre_emp'"; $result=mysql_query($sql) or die("Problemas en la conexion en la Selección"); while ($row=mysql_fetch_array($result)) { $Nombre_emp=$row["Nombre_emp"]; $rut=$row["Rut_emp"]; $separar = explode('-',$rut); $rut1=$separar[0]; $dig=$separar[1]; $tel=$row["Telefono_emp"]; $dir=$row["Direccion_emp"]; }?><table width="800" border="1" bordercolor="#CCCCCC" align="center" cellpadding="10" cellspacing="0"> <form id='EditaEmp1' name='form1' method='POST' action='grabau.php?Nombre_emp'> <tr> <td colspan='2' bgcolor="#ECEEF0"><div align='center'> <p><span class="Estilo1">Editar Datos de la Empresa: <? echo $Nombre_emp; ?></span><br/> </p> </div></td> </tr> <tr><td>Rut :</td><td><span> <input name='rut1' value='<? echo $rut1 ?>' type='text' size='10' maxlength='9' /> - <input name='dig' value='<? echo $dig ?>' type='text' size='1' maxlength='2' /> </span> </td></tr><tr><td>Telefono :</td><td><span> <input name='tel' value='<? echo $tel ?>' type='text' size='10' maxlength='10' /> </span> </td></tr><tr><td>Dirección :</td><td><span> <input name='dir' value='<? echo $dir ?>' type='text' size='65' maxlength='150' /></span></td> </tr> <br/> <tr> <td colspan='2' align='center' bgcolor="#ECEEF0"> <input name='Guardar' type='submit' value='Guardar' /></td> </tr> <tr> <td colspan='2' valign='top'> </td> </tr> </form></table> grabau.php:
--- Código: PHP --- <? include ("config.inc.php"); $Nombre_emp=$_POST["Nombre_emp"]; $rut1 = $_POST['rut1']; $dig = $_POST['dig']; $rut = $rut1.'-'.$dig; $tel = $_POST['tel']; $dir = $_POST['dir']; $Nom = $_POST['Nom']; echo "Nombre_emp: ",$Nombre_emp,$Nom,$rut1,"- ",$rut,"Dir: ",$dir,"Tel; ",$tel; mysql_query("UPDATE 'empresa' SET Rut_emp='$rut',Telefono_emp='$tel',Direccion_emp='$dir' WHERE Nombre_emp='$Nombre_emp'") or die ("NO GRABO"); ?> <form name='add_emp' method='POST' > <table width="800" border="1" bordercolor="#CCCCCC" align="center" cellpadding="10" cellspacing="0"> <tr> <th align="center" bgcolor="#ECEEF0" class="titnoticia2" scope="col">Grabación Empresa </th> </tr> <tr> <td bordercolor="#000000"><table width="774" height="35"> <tr> <td><div align="center"> <div align="center" class="Estilo1"> DATOS DE NUEVA EMPRESA GRABADO EXITOSAMENTE</div></td> </tr> </table></td> </tr> <tr> <td align='center' bgcolor="#ECEEF0"><a href="menu_central.php">VOLVER</a></span> <span align="right"> <a href="logout.php">SALIR</a></span></td> </tr> </table> </form>
Como dice Lair aparentemente estas intentando mandarlo por GET, pero aun asi te falta el valor en el archivo EditaEmp1.php
Tienes que Cambiar
--- Código: PHP ---<form id='EditaEmp1' name='form1' method='POST' action='grabau.php?Nombre_emp'>
Por
--- Código: PHP ---<form id='EditaEmp1' name='form1' method='POST' action='grabau.php?Nombre_emp='.$Nombre_emp>
y en grabau.php
--- Código: PHP --- $Nombre_emp=$_POST["Nombre_emp"];
Por
--- Código: PHP --- $Nombre_emp=$_GET["Nombre_emp"];
Otra solucion "rapida" es agregando el valor como un campo oculto (si no quieres que se vea)
EditaEmp1.php
--- Código: PHP ---<table width="800" border="1" bordercolor="#CCCCCC" align="center" cellpadding="10" cellspacing="0"> <form id='EditaEmp1' name='form1' method='POST' action='grabau.php'> <tr> <td colspan='2' bgcolor="#ECEEF0"><div align='center'> <p><span class="Estilo1">Editar Datos de la Empresa: <? echo $Nombre_emp; ?></span><br/> <!-- ------- Aqui se agrega el valor de $Nombre_emp en un campo oculto ------------------------ --> <input name='Nombre_emp' value='<? echo $Nombre_emp ?>' type='hidden' /> <!-- ------ /Aqui se agrega el valor de $Nombre_emp en un campo oculto ----------------------- --> </p> </div></td> </tr> <tr><td>Rut :</td><td><span> <input name='rut1' value='<? echo $rut1 ?>' type='text' size='10' maxlength='9' /> - <input name='dig' value='<? echo $dig ?>' type='text' size='1' maxlength='2' /> </span> </td></tr><tr><td>Telefono :</td><td><span> <input name='tel' value='<? echo $tel ?>' type='text' size='10' maxlength='10' /> </span> </td></tr><tr><td>Dirección :</td><td><span> <input name='dir' value='<? echo $dir ?>' type='text' size='65' maxlength='150' /></span></td> </tr> <br/> <tr> <td colspan='2' align='center' bgcolor="#ECEEF0"> <input name='Guardar' type='submit' value='Guardar' /></td> </tr> <tr> <td colspan='2' valign='top'> </td> </tr> </form></table>
De esta manera entonces si en grabau.php puedes usar
--- Código: PHP --- $Nombre_emp=$_POST["Nombre_emp"];
Saludos
Kataky:
Gracias Lair y F_Tanori por tratar de ayudarme pero he sido muy metodica con todas las instrucciones que me han dado y no he podido solucionar mi problema.
Sé que el problema se produce cuando grabau.php llama a la función y por alguno de esos misterios de la informática la función no recibe la variable $Nombre_emp pero si todas las demás. Me he dado cuenta que cuando tengo más de 3 llamados de script (EditaEmp.php ---> EditaEmp1.php ---> grabau.php ---> grabaru() ) éste último se marea y no quiere saber nada de la variable, en cambio al crear una nueva empresa o al eliminarla uso 1 script menos y todo funciona de maravillas.
Ahora, buscando otro camino, mi duda es ¿cómo selecciono y muestro en la misma página los datos de la empresa para modificarlos? (en VB era muy fácil) .
Esto de ser autodidacta en PHP me está estresando... :brickwall: , pero no me la puede ganar y el problema es que como me meti en un forro (la necesidad tiene cara de hereje), ya estoy contra el tiempo.
Mil gracias por su ayuda y pasciencia...
lair:
Mira te voy a pasar un pequeño ejemplo en el que uso tanto get como post:
Archivo de conexion conexion.php:
--- Código: PHP ---<?php function conexion(){ $host=mysql_connect("localhost","root","") or die("Error al conectar al servidor"); $connect=mysql_select_db("ext") or die("Error al conectar con la base de datos"); return $host; }?> Index (Lista los registros) index.php:
--- Código: PHP ---<html><head> <title>Pagina de prueba</title></head><body><?php include 'conexion.php'; $link=conexion(); echo(" <table border='1'> <tr> <td>Nombre</td> <td>Direccion</td> <td colspan='2'>username</td> </tr> "); $result=mysql_query("select * from usuarios"); while($reg=mysql_fetch_array($result)){ echo(" <tr> <td>".$reg['nombre']."</td> <td>".$reg['direccion']."</td> <td>".$reg['username']."</td> //aqui los datos son enviador por GET <td><a href='modificar.php?id=".$reg['id']."'>Modificar</a></td> </tr> "); } echo("</table>");?></body></html> Vista de Modificacion modificar.php:
--- Código: PHP ---<?php include 'conexion.php'; $link=conexion(); //Por tanto aqui tenemos que recibirlos con GET $id=$_GET['id']; $registro=mysql_query("select * from usuarios where id='$id'"); $reg=mysql_fetch_array($registro); //desde este formulario los datos ahora se envian por POST echo(" <form id form='form1' method='post' action='reg_us.php'> ID: <input name='id' type='text' value='".$reg['id']."' readonly='true'><br> Nombre: <input name='nom' type='text' value='".$reg['nombre']."'><br> A. Paterno: <input name='a_p' type='text' value='".$reg['paterno']."'><br> A. Materno: <input name='a_m' type='text' value='".$reg['materno']."'><br> Fecha de Nacimiento: <input name='fna' type='text' value='".$reg['fnacimiento']."'><br> Direccion: <input name='dir' type='text' value='".$reg['direccion']."'><br> Telefono: <input name='tel' type='text' value='".$reg['telefono']."'><br> e-Mail: <input name='mail' type='text' value='".$reg['mail']."'><br> Nombre de Usuario: <input name='user' type='text' value='".$reg['username']."'><br> Contraseña: <input name='pass' type='text' value='".$reg['password']."'><br> <input type='submit' value='Modificar'> </form> "); ?> archivo de modificacion reg_us.php:
--- Código: PHP ---<?php include 'conexion.php'; $link=conexion(); //por lo que aqui es necesario recibirlos con POST $id=$_POST['id']; $nombre=$_POST['nom']; $materno=$_POST['a_m']; $paterno=$_POST['a_p']; $nacimiento=$_POST['fna']; $direc=$_POST['dir']; $tele=$_POST['tel']; $email=$_POST['mail']; $usuario=$_POST['user']; $contra=$_POST['pass']; if(mysql_query("update usuarios set nombre='$nombre', materno='$materno', paterno='$paterno', fnacimiento='$nacimiento', direccion='$direc', telefono='$tele', mail='$email', username='$usuario', password='$contra' where id='$id'")){ echo("Registro Modificado"); }else{ echo("Error al Modificar el Registro"); }?> y mi base de datos:
--- Código: SQL ---/* MySQL Data Transfer Source Host: localhost Source Database: ext Target Host: localhost Target Database: ext Date: 10/06/2009 11:43:27 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for usuarios -- ---------------------------- DROP TABLE IF EXISTS `usuarios`; CREATE TABLE `usuarios` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `nombre` VARCHAR(100) NOT NULL, `paterno` VARCHAR(100) NOT NULL, `materno` VARCHAR(100) NOT NULL, `fnacimiento` DATE NOT NULL, `direccion` VARCHAR(100) NOT NULL, `telefono` CHAR(10) DEFAULT NULL, `mail` VARCHAR(100) DEFAULT NULL, `username` CHAR(50) NOT NULL, `password` CHAR(50) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; -- ---------------------------- -- Records -- ---------------------------- INSERT INTO `usuarios` VALUES ('1', 'Lair', 'Apellido Paterno', 'Apellido Materno', '2009-06-10', '3', '3', '3', '3', '3'); INSERT INTO `usuarios` VALUES ('2', 'aaaaaaaaaaaaa', 'bbbbbbbbbbbbbbbbb', 'ccccccccccccccccccccc', '0000-00-00', 'ddddddddddddddddddddddddd', 'eeeeeeeeee', 'fffffffffffffffffffffffffffffffffffffffffffffffff', 'gggggggggggggggggggggggggggggggggggg', 'hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh'); espero y te sean de ayuda, suerte y ya sabes cualquier problema aqui estamos
F_Tanori:
Un ejemplo 'novato' para que vayas viendo ...
--- Código: PHP ---<?php if (isset($_POST['enviar'])){ $dato = $_POST['dato']; echo "<h1>$dato</h1>"; }else{ echo "<form action='".$_SERVER['PHP_SELF']."' method='POST'>"; echo "<label for='dato'>Dato:</label><input name='dato' type='text' id='dato' value="" size=17>"; echo "<input type='submit' name='enviar' id='enviar' value='Grabar' >"; echo "</form>"; } ?>
pruebalo a ver si te sirve
Saludos
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa