Foros del Web » Programando para Internet » PHP »

problemas con UPDATE en formulario

Estas en el tema de problemas con UPDATE en formulario en el foro de PHP en Foros del Web. Hola amigos, Estoy haciendo un administrador de contenidos de una web y me ha surgido un problema con un formulario que no hay manera que ...
  #1 (permalink)  
Antiguo 12/06/2009, 04:23
Avatar de jlmoreno31  
Fecha de Ingreso: mayo-2009
Ubicación: Barcelona
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 2
problemas con UPDATE en formulario

Hola amigos,

Estoy haciendo un administrador de contenidos de una web y me ha surgido un problema con un formulario que no hay manera que realice un UPDATE.
Explico el tema, aunque disculparme de antemano porque es un pelin largo.
Tengo una pagina en salas.php con un select option con diferentes tipos de salas de reunión. Cuando escojes la opción en el select, éste, llama a un archivo javascript (getsala.js) y devuelve en la misma pagina(sala.php) (en un div predeterminado) la información de la sala de reunión, con un formulario para poder cambiar datos de las salas (getsala.php). El problema es que en el formulario de getsala.php, cuando hago submit no modificada el registro. Os dejo los códigos por si alguien pudiera ver donde está el error.

Sala.php
Código:
<div id="datos" style="font-family:arial; font-size:12px; color:#333;">
	
		<form name="formsalas" method="post" >
     
	Salas dadas de alta:<br />
    <? 
	$id=$_GET['id_centro'];
$sala ="select Nombre_sala, id_sala from salas where id_centro='$id'" or die(mysql_error());
$resultado=mysql_query($sala) or die( mysql_error() ); 
?>
<select name="salas" style="border:1px solid #ccc;" onchange="showUser(this.value)">
<option selected="selected">Escoja la sala </option >
<?
//Mostrar los registros en forma de menú desplegable
while ($row=mysql_fetch_array($resultado)){
echo '<option value="'.$row['id_sala'].'">'.$row["Nombre_sala"].'</option>';
}
echo "</select><br/><br/>";
echo"<div id='txtHint' style='width:auto; height:auto; '><b>Elija La Sala para Cargar info.</b></div>";
	?>
</select>
</form>
Formulario para hacer update del registro

Código:
<?php
include('conexion.php');
$q=$_GET["q"];

$sql="SELECT * FROM salas WHERE id_sala ='$q'";
$result = mysql_query($sql);
$row=mysql_fetch_array($result);

$id_centro=$row['id_centro'];
$id_sala=$row['id_sala'];
$nombresala=$row['Nombre_sala'];
$descripcion=$row['Descripcion'];
$metros=$row['metros'];
$capacidad=$row['capacidad'];
$precio=$row['Precio'];

	echo "<form action='updatesalas.php' method='post'>";
  	echo "<input type=\"hidden\" name=\"id_centro\" value='$id_centro'><br/>";
	echo "<input type=\"hidden\" name=\"id_sala\" value='$id_sala'><br/>";
	echo "Nombre Sala<br/>";
	echo "<input type=\"text\" name=\"Nombre_sala\" value='$nombresala' style='border:1px solid #ccc;'><br/>";
	echo "Descripcion<br/>";
	echo "<textarea name=\"Descripcion\" cols=\"50\" rows=\"20\" >$descripcion</textarea><br/>";
	echo "Metros:<br/>";
	echo "<input type=\"text\" name=\"metros\" value='$metros' style='border:1px solid #ccc;'><br/>";
	echo "Capacidad:<br/>";
	echo "<input type=\"text\" name=\"capacidad\" value='$capacidad'style='border:1px solid #ccc;' ><br/>";
	echo "Precio:<br/>";
	echo "<input type=\"text\" name=\"Precio\" value='$precio' style='border:1px solid #ccc;'><br/><br/>";
	echo "<input name='modificar' type='submit' value='modificar datos' style='border:1px solid #69c; background:#69c; color:#fff;'>";

echo "</form>";
?>
Archivo php que se encarga de realizar el update

Código:
<?php
    // Configura los datos de tu cuenta
    
    // Conexión a la base de datos
    mysql_connect ($dbhost, $dbusername, $dbuserpass);
    mysql_select_db($dbname) or die("Cannot select database");

    // Preguntaremos si se han enviado ya las variables necesarias
    if (isset($_POST["id_sala"])) {
$id_centro =$_POST['id_centro'];	
$id_sala=$_POST['id_sala'];
$nombresala=$_POST['Nombre_sala'];
$descripcion=$_POST['Descripcion'];
$metros=$_POST['metros'];
$capacidad=$_POST["capacidad"];
$precio=$_POST['Precio'];

 
    //Todo parece correcto procedemos con la inserccion
    $query = "UPDATE salas SET Nombre_sala='$nombresala', Descripcion='$descripcion', metros='$metros', capacidad='$capacidad', Precio='$precio' WHERE id_sala='$id_sala'";
    mysql_query($query) or die(mysql_error());
    $_SESSION["centro"] = $row['id_centro'];
	print "<script>";
	print " self.location='business-centers-salas.php?id_centro=$id_centro'";
	print "</script>"; 
    }
	
    ?>
Si alguien ve el porque no funciona se lo agradecería. Gracias por todo.
  #2 (permalink)  
Antiguo 12/06/2009, 06:00
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: problemas con UPDATE en formulario

Hola jlmoreno31,

Bueno mirando tu codigo.

tienes que verificar si esta variable $id_sala contiene informacion.


Código PHP:

if (isset($_POST["id_sala"])) {} 
En esta linea siempre ejecutara el if a un cuando $id_sala este vacia.

La manera correcta de comprobar seria.

Código PHP:

if ((!empty($_POST["id_sala"])) && (isset($_POST["id_sala"]))) {} 
Verifica y reemplaza , y luego me cuentas.

Puedes comprobar dandole un valor manual a los input

Código PHP:
      echo "<input type=\"hidden\" name=\"id_centro\" value='$id_centro'><br/>";
    echo 
"<input type=\"hidden\" name=\"id_sala\" value='$id_sala'><br/>"
  #3 (permalink)  
Antiguo 12/06/2009, 07:01
Avatar de jlmoreno31  
Fecha de Ingreso: mayo-2009
Ubicación: Barcelona
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: problemas con UPDATE en formulario

Hola,

Gracias por la respuesta. Te cuento, la verdad es que sí contiene información. Pasa una variable que se requiere para después insertarla en la tabla. Todas las variables pasan correctamente, el problema es que no hace el update. De todos modos he cambiado la forma en la que voy a realizarlo. En vez de utilizar Ajax como hasta ahora (que no se mucho) voy ha hacerlo en php creando unas cuantas páginas más y listo.

Gracias por la respuesta.
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:39.