Foros del Web » Programando para Internet » PHP »

Modificar registros de una base de datos.

Estas en el tema de Modificar registros de una base de datos. en el foro de PHP en Foros del Web. Pues ante todo gracias de ante mano para el que se moleste en mirar mi duda/problema. Necesito modificar una fila de una tabla de mi ...
  #1 (permalink)  
Antiguo 10/03/2010, 10:39
Avatar de dengaku  
Fecha de Ingreso: enero-2010
Mensajes: 69
Antigüedad: 14 años, 3 meses
Puntos: 1
Modificar registros de una base de datos.

Pues ante todo gracias de ante mano para el que se moleste en mirar mi duda/problema. Necesito modificar una fila de una tabla de mi base datos ya mostrada mediante una consulta.
Código:
<?PHP
// Iniciar sesión
   session_start();

// Si se ha enviado el formulario
   $usuario = $_REQUEST['nombre'];
   $clave = $_REQUEST['pass'];
   if (isset($usuario) && isset($clave))
   {

   // Comprobar que el usuario está autorizado a entrar
      $conexion = mysql_connect ("localhost", "root", "")//ip, usuario y contraseña
         or die ("No se puede conectar con el servidor");
      mysql_select_db ("bdlibro") //conecta a base de datos cursos
         or die ("No se puede seleccionar la base de datos");
      $salt = substr ($usuario, 0, 2);
      $clave_crypt = crypt ($clave, $salt);
      $instruccion = "select nombre, password from usuarios where nombre = '$usuario'" .
         " and password = '$clave_crypt'";
      $consulta = mysql_query ($instruccion, $conexion)
         or die ("Fallo en la consulta");
      $nfilas = mysql_num_rows ($consulta);
      mysql_close ($conexion);

   // Los datos introducidos son correctos
      if ($nfilas > 0)
      {
         $usuario_valido = $usuario;
         // Con register_globals On
         // session_register ("usuario_valido");
         // Con register_globals Off
         $_SESSION["usuario_valido"] = $usuario_valido;
      }
   }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<link href="estilo.css" rel="stylesheet" type="text/css" />
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
</head>

<body bgcolor="#000000" background="IMAGENES/fondo1 copia.jpg">



<div id="Layer4">
    <?php
// Sesión iniciada
   if (isset($_SESSION["usuario_valido"]))
   {
        include("libreria1.php");
		$conexion=conecta();
		
		//carrito
		$itemsEnCesta=$_SESSION['itemsEnCesta'];
		
        if (isset($_REQUEST['libro_actual']))    
		    $libro = $_REQUEST['libro_actual'];
		if (isset($libro)){ 
		    if (!isset($itemsEnCesta[$libro]))
				$itemsEnCesta[$libro]=1;
		    else
				$itemsEnCesta[$libro]+=1;
			header("Location:".$_SERVER["PHP_SELF"]);
			//exit;
		}
		$_SESSION['itemsEnCesta']= $itemsEnCesta;

        //listado de productos
		
		$sql="select * from libros where copias";
		$registros=mysql_query($sql,$conexion) or
  		die("Problemas en el select:".mysql_error());

		print "<p>Mantenimiento:</p>";
		print "<hr color='#61380B' />";
   		print "<p align=center><table border=3 bgcolor=000000 bordercolor=oooooo>";
   		print "<tr><td>Codigo libro</td><td>Titulo</td><td>Editorial</td><td>Autor</td><td>Categoria</td><td>Copias</td><td>Precio</td><td>Imagen</td></tr>";

		while ($reg=mysql_fetch_array($registros))
		{	
			print "<tr><td>".$reg['cod_libro']."</td>";
  			print "<td>".$reg['titulo']."</td>";
   			print "<td>".$reg['editorial']."</td>";
				
			$sql2="select nombre from autores where id_autor ='".$reg['idautor']."'";
			$autores=mysql_query($sql2,$conexion) or
  					die("Problemas en el select:".mysql_error());
			while ($reg_a=mysql_fetch_array($autores)){
				print "<td>".$reg_a['nombre']."</td>";
			}
			print "<td>".$reg['categoria']."</td>";
			print "<td>".$reg['copias']."</td>";
			print "<td>".$reg['precio']."</td>";
			print "<td><img src='".$reg['imagen']."'</td>";
			print "</td><td><a href=modifica_libro.php?codigo=".$reg['cod_libro']."><img src=IMAGENES/modificar.png></a></td>";
   			print "</td><td><a href=borrar_libro.php?codigo=".$reg['cod_libro']."><img src=IMAGENES/borrar.png></a></td></tr>";
   		}		
  		print "<tr><td><a href=inserta_libro.php><img src=IMAGENES/añadir.jpg></a></td></tr>";
        print "</table>";




mysql_close($conexion);
}
// Intento de entrada fallido
   else if (isset ($usuario))
   {
      print ("<BR><BR>\n");
      print ("<P ALIGN='CENTER'>Acceso no autorizado</P>\n");
      print ("<P ALIGN='CENTER'>[ <A HREF='index.php'>Conectar</A> ]</P>\n");
   }
?>

//........(botones en flash)

		<?php
		if(isset($_SESSION["usuario_valido"])){
			$usuario_r = $_SESSION["usuario_valido"];
			print("Bienvenido : $usuario_r <br>");
			print("<A HREF='logout.php'>LOGOUT</A>");			
		}
		else{ ?>
		<form id="form1" name="form1" method="post" action="index.php">
        
		  <label>
		 Nombre:  
		 <input type="text" name="nombre" />
		  </label>
          <label>
          Contraseña:
          <input type="password" name="pass" />
          <br />
          <input type="submit" name="Submit" value="Enviar" />
          <br />
          </label>
        </form>
		<?php 
		}
		?>		</td>
      </tr>
      <tr>
        <td height="33">&nbsp;</td>
      </tr>
      <tr>
        <td height="36">&nbsp;</td>
      </tr>
      <tr>
        <td height="29">&nbsp;</td>
      </tr>
      <tr>
        <td height="28">&nbsp;</td>
      </tr>
      <tr>
        <td height="33">&nbsp;</td>
      </tr>
      <tr>
        <td height="29">&nbsp;</td>
      </tr>
      <tr>
        <td height="29">&nbsp;</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
      </tr>
    </table></td>
  </tr>
</table>
</body>
</html>
  #2 (permalink)  
Antiguo 10/03/2010, 10:40
Avatar de dengaku  
Fecha de Ingreso: enero-2010
Mensajes: 69
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Modificar registros de una base de datos.

Hay mucho "escombro" son botones flash, en este muestro los datos en una tabla, y quiero que clicando en la imagen modificar.png, me mande a otro php que e llamado modifica_libro.php , en el cual quiero realizar la consulta apropiada para que me permita mediante varios campos de insercion y un boton, poder modificar los datos de esa fila en cuestión, y por el momento no consigo que haga lo que quiero

Este es modifica_libro.php
Código:
<?PHP

//Iniciar sesión
session_start();
?>
<html>
<head>
<title>Mod Libro</title>
</head>
<body>

<?php
   
if (isset ($_REQUEST[modificar]))
	{

    $errores = false;
	$titulo = $_REQUEST['titulo'];
	$editorial = $_REQUEST['editorial'];
	$idautor = $_REQUEST['idautor'];
	$categoria = $_REQUEST['categoria'];
	$copias = $_REQUEST['copias'];
	$precio = $_REQUEST['precio'];
	$imagen = $_REQUEST['imagen'];
	if ($titulo=="") { 
	   $error[1]='  Complete el titulo'; 
	   $errores=true;}
	if ($editorial=="") { 
	   $error[2]='  Complete la editorial'; 
	   $errores=true;}
	if ($idautor=="") { 
	   $error[1]='  Complete el ID del autor'; 
	   $errores=true;}
	if ($categoria=="") { 
	   $error[2]='  Complete la categoria'; 
	   $errores=true;}
	if ($copia=="") { 
	   $error[1]='  Complete el numero de copias'; 
	   $errores=true;}
	if ($precio=="") { 
	   $error[1]='  Complete el precio'; 
	   $errores=true;}

}

if (isset ($_REQUEST[modificar]) and ! $errores){

	    include("libreria1.php");
		$conexion=conecta();
		
	
$conexion=mysql_connect("localhost","root","") or
             die("Problemas en la conexion");
mysql_select_db("bdlibro",$conexion) or
             die("Problemas en la selección de la base de datos");
$sql="update libros set titulo='$titulo', editorial='$editorial', idautor='$idautor', categoria='$categoria', copias='$copias', precio='$precio', cod_libro='$cod_libro' where cod_libro='$cod_libro'";
//print $sql;
$registros=mysql_query($sql,$conexion) or
              die("Problemas en el select:".mysql_error());
  echo "El libro fue modificado";

 }
else{

$conexion=mysql_connect("localhost","root","") or
             die("Problemas en la conexion");
mysql_select_db("bdlibro",$conexion) or
             die("Problemas en la selección de la base de datos");
$registros=mysql_query("select * from libros
                        where cod_libro='$cod_libro'",$conexion) or //consulta tabla libros
             die("Problemas en el select:".mysql_error());

if ($fila=mysql_fetch_array($registros))
{
  print '<form action="" method="post">';
  print '<input type="hidden" name="codigo" value="'.$fila['codigo'].'">';
  print "<br>Titulo: ";
  print '<input type="hidden" name="titulo" value="'.$fila['titulo'].'">';
  		 print ("<font color='#990033'>$error[1]</font><BR>");
  print "<br>Editorial: ";
  print '<input type="text" name="editorial" value="'.$fila['editorial'].'">';
        print ("<font color='#990033'>$error[2]</font><BR>");
  print "<br>Id del Autor: ";
  print '<input type="text" name="idautor" value="'.$fila['idautor'].'">';
        print ("<font color='#990033'>$error[3]</font><BR>");
  print "<br>categoria: ";
  print '<input type="hidden" name="categoria" value="'.$fila['categoria'].'">';
  		 print ("<font color='#990033'>$error[4]</font><BR>");
  print "<br>copias: ";
  print '<input type="text" name="copias" value="'.$fila['copias'].'">';
        print ("<font color='#990033'>$error[5]</font><BR>");
  print "<br>precio: ";
  print '<input type="text" name="precio" value="'.$fila['precio'].'">';
        print ("<font color='#990033'>$error[6]</font><BR>");
  print '<br>';
  print  "<br>Curso: ";

  print '<br>';  
  print '<input type="submit" name="modificar" value="modificar">';
  print '</form>';
}
 }
?>
</body>
</html>
Soy bastante espeso en esto, y seguramente esté todo horrorosamente mal, pero es que estoy atascado T.T

Última edición por dengaku; 10/03/2010 a las 11:02
  #3 (permalink)  
Antiguo 10/03/2010, 10:44
Avatar de blogger  
Fecha de Ingreso: diciembre-2005
Ubicación: frente al monitor
Mensajes: 398
Antigüedad: 18 años, 4 meses
Puntos: 12
Respuesta: Modificar registros de una base de datos.

Por que no nos muestras el codigo donde intentas hacer la modificacion y nos dices cual es el error que te aparece?
__________________
http://exegesis-biblica.com/
  #4 (permalink)  
Antiguo 10/03/2010, 10:50
Avatar de dengaku  
Fecha de Ingreso: enero-2010
Mensajes: 69
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Modificar registros de una base de datos.

Pues verás, es que no me da ningún error, se queda en blanco, cuando hago click en mi boton modificar me envia a modifica_libro.php pero no hace nada, ni me muestra el formulario que supuestamente me beria aparecer para cambiar los datos de esa fila,

y bueno no se si el problema está en la consulta, aunque, si pongo un else al ultimo if y coloco por ejemplo

Código:
else
  echo "No existe ningun libro";
 }
me muestra eso, no me crea los inputs directamente pasa hacia el else
  #5 (permalink)  
Antiguo 10/03/2010, 10:57
Avatar de blogger  
Fecha de Ingreso: diciembre-2005
Ubicación: frente al monitor
Mensajes: 398
Antigüedad: 18 años, 4 meses
Puntos: 12
Respuesta: Modificar registros de una base de datos.

Y por que no nos muestras el codigo completo del modifica_libro.php??, no somos adivinos.
__________________
http://exegesis-biblica.com/
  #6 (permalink)  
Antiguo 10/03/2010, 11:01
Avatar de dengaku  
Fecha de Ingreso: enero-2010
Mensajes: 69
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Modificar registros de una base de datos.

Mi primer mensaje de aquí es el php que muestra los datos de la base de datos, en el segundo mensaje e mostrado modifica_libro.php que es lo que quiero que haga al operación de modificar
  #7 (permalink)  
Antiguo 10/03/2010, 11:03
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima, Perú
Mensajes: 136
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Modificar registros de una base de datos.

tendrias que mostrar el otro archivo, quizas, y lo que es muy probable, no estes recibiendo bien los datos
  #8 (permalink)  
Antiguo 10/03/2010, 11:10
Avatar de blogger  
Fecha de Ingreso: diciembre-2005
Ubicación: frente al monitor
Mensajes: 398
Antigüedad: 18 años, 4 meses
Puntos: 12
Respuesta: Modificar registros de una base de datos.

Ok, creo ya encontre el problema, ¿Por que usas $_REQUEST? utiliza ya sea $_POST o $_GET segun el caso (y en este caso en particular debes usar $_POST, por que asi lo has definido en el formulario).
__________________
http://exegesis-biblica.com/
  #9 (permalink)  
Antiguo 11/03/2010, 09:41
Avatar de dengaku  
Fecha de Ingreso: enero-2010
Mensajes: 69
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Modificar registros de una base de datos.

um vale el problema era el siguiente:

Código:
<?PHP

//Iniciar sesión
session_start();

        include("libreria1.php");
		$conexion=conecta();
		$cod_libro=$_REQUEST[codigo];
   
if (isset ($_REQUEST[modificar])){
    $errores = false;
	$cod_libro=$_REQUEST[cod_libro];
	$titulo = $_REQUEST['titulo'];
	$editorial = $_REQUEST['editorial'];
	$idautor = $_REQUEST['idautor'];
	$categoria = $_REQUEST['categoria'];
	$copias = $_REQUEST['copias'];
	$precio = $_REQUEST['precio'];
	$imagen = $_REQUEST['imagen'];
	if ($titulo=="") { 
	   $error[1]='  Complete el titulo'; 
	   $errores=true;}
	if ($editorial=="") { 
	   $error[2]='  Complete la editorial'; 
	   $errores=true;}
	if ($idautor=="") { 
	   $error[1]='  Complete el ID del autor'; 
	   $errores=true;}
	if ($categoria=="") { 
	   $error[2]='  Complete la categoria'; 
	   $errores=true;}
	if ($copia=="") { 
	   $error[1]='  Complete el numero de copias'; 
	   $errores=true;}
	if ($precio=="") { 
	   $error[1]='  Complete el precio'; 
	   $errores=true;}
//print $errores."..........";
}

if (isset ($_REQUEST[modificar]) and $errores!=0){
	
$conexion=mysql_connect("localhost","root","") or
             die("Problemas en la conexion");
mysql_select_db("bdlibro",$conexion) or
             die("Problemas en la selección de la base de datos");
$sql="update libros set titulo='$titulo', editorial='$editorial', categoria='$categoria', copias='$copias', precio='$precio' where cod_libro='$cod_libro'";
//print $sql;
$registros=mysql_query($sql,$conexion) or
              die("Problemas en el select:".mysql_error());
//  echo "El libro fue modificado";
		$pagina="carrito.php";
		header("Location:$pagina");
 }
else{

$conexion=mysql_connect("localhost","root","") or
             die("Problemas en la conexion");
mysql_select_db("bdlibro",$conexion) or
             die("Problemas en la selección de la base de datos");
$sql2="select * from libros where cod_libro='$cod_libro'";
$registros=mysql_query($sql2,$conexion) or 
             die("Problemas en el select:".mysql_error());
if ($fila=mysql_fetch_array($registros))
{ 

  print '<form action="modifica_libro.php" method="post">';

  print '<input type="hidden" name="cod_libro" value="'.$fila['cod_libro'].'">';
  print "<br>Titulo: ";
  print '<input type="text" name="titulo" value="'.$fila['titulo'].'">';
  		 print ("<font color='#990033'>$error[1]</font><BR>");
  print "<br>Editorial: ";
  print '<input type="text" name="editorial" value="'.$fila['editorial'].'">';
        print ("<font color='#990033'>$error[2]</font><BR>");
  print "<br>Id del Autor: ";
  print '<input type="text" name="idautor" value="'.$fila['idautor'].'">';
        print ("<font color='#990033'>$error[3]</font><BR>");
  print "<br>categoria: ";
  print '<input type="hidden" name="categoria" value="'.$fila['categoria'].'">';
  		 print ("<font color='#990033'>$error[4]</font><BR>");
  print "<br>copias: ";
  print '<input type="text" name="copias" value="'.$fila['copias'].'">';
        print ("<font color='#990033'>$error[5]</font><BR>");
  print "<br>precio: ";
  print '<input type="text" name="precio" value="'.$fila['precio'].'">';
        print ("<font color='#990033'>$error[6]</font><BR>");
  print '<br>';
  print  "<br>Curso: ";

  print '<br>';  
  print '<input type="submit" name="modificar" value="modificar">';
  print '</form>';
}
 }
?>
</body>
</html>
Era un pequeño lio con los nombres, y que no recogia en ningun sitio el 'codigo' por lo que no hacia nada. y no mostraba nada, tampoco habia incluido la libreria

Etiquetas: modificar, registros
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 06:42.