mostrar datos formulario

Iniciado por Charly Utrilla, 30 Noviembre 2017, 15:06 PM

0 Miembros y 1 Visitante están viendo este tema.

Charly Utrilla

Hola soy nuevo en este foro.
Estoy creando una pagina en php conectada a una base de datos mysql.
En esa pagina muestro los registros de la bbdd y dos botones por cada registro (editar y eliminar) para que al darle a uno me vaya a una pagina en el que, en el formulario me aparezcan los datos del registro que he seleccionado.
El problema es que me aparece la página con los registros en blanco, sin datos del objeto que quiero mostrar.
A continuación pongo el código de las dos páginas.
INDEX.PHP:
<!DOCTYPE html>
<html lang="en">
<head>
   <title>Articulos</title>
   <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
   <?php
      
function conectar(){
         
$con=mysqli_connect("localhost","root","","dam2d");
         return 
$con;
      }
      function 
desconectar(){
         
mysqli_close(conectar());
      }
      if(
conectar()->connect_error){
         die(
'Error de conexion: '.conectar()->connect_error);
      }else{
         
$sql="SELECT * FROM articulos";
         
$resul=mysqli_query(conectar(),$sql);
         echo 
"<table class='table' border='1'>";
         while(
$linea=mysqli_fetch_array($resul)){
            echo 
"<tr><td colspan='6' align='center'><b>ARTICULOS</b></td></tr>";
            echo 
"<tr><th>ID</th><th>Nombre</th><th>Precio</th><th>Fecha Alta</th><th>Acciones</th></tr>";
            echo 
"<tr>";
            echo 
"<td>",$linea['id'],"</td>";
            echo 
"<td>",$linea['nombre'],"</td>";
            echo 
"<td>",$linea['precio'],"</td>";
            echo 
"<td>",$linea['fechaalta'],"</td>";
            
$id=$linea['id'];
            
//echo $id;?>

            <form action='editar.php' method='post'>
            <input type='hidden' name='id' value='<?php $id ?>'>
            <?php
            
echo "<td><a class='btn btn-warning' href='editar.php?id=".$id."'>EDITAR</a>"."&nbsp";
            echo 
"<a class='btn btn-danger' href='eliminar.php?id='".$id."''>ELIMINAR</a></td>";
            echo 
"</form>";
            echo 
"</tr>";
         }
      }
      
desconectar();
   
?>

</body>
</html>

EDITAR.PHP:
<!DOCTYPE html>
<html lang="en">
<head>
   <title>Editar Articulo</title>
   <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
   <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
   <?php
      conectar
();
      
$id=isset($_POST['id']) ? $_POST['id'] : '';
      
$nom=isset($_POST['nombre']) ? $_POST['nombra'] : '';
      
$precio=isset($_POST['precio']) ? $_POST['precio'] : '';
      
$fecha=isset($_POST['fechaalta']) ? $_POST['fechaalta'] : '';
   
?>

   <div class='container'>
      <div class='jumbotron'>
         <h1>Editar Articulo</h1>
         <p>Introduce todos los datos para editar un articulo en la base de datos.</p>
      </div>
      <form name='formularioeditar' action='index.php' method='post'>
      <div class='form-group'>
         <label for='id'>Introduce el id del articulo:</label>
         <input type='number' class='form-control' placeholder='Introduce el id' name='id' value="<?php echo $id ?>"><br>
         <label for='id'>Introduce el nombre de articulo:</label>
         <input type='text' class='form-control' placeholder='Introduce el nombre' name='nombre' value="<?php echo $nom ?>" size=30><br>
         <label for='precio'>Introduce el precio del articulo:</label>
         <input type='decimal' class='form-control' placeholder='Introduce el precio' name='precio' value="<?php echo $precio ?>"><br>
         <label for='fechaalta'>Introduce la fecha de alta del articulo:</label>
         <input type='date' class='form-control' placeholder='Introduce la fecha de alta' name='fechaalta' value="<?php echo $fecha ?>"><br>
      </div>
      <div class='botons-group'>
         <input type='submit' name='editar' value='EDITAR'>
         <input type='submit' name='volver' value='VOLVER'>
      </div>
      </form>
   </div>
   <?php
      
function conectar(){
         
$con=mysqli_connect("localhost","root","","dam2d");
         return 
$con;
      }
      function 
desconectar(){
         
mysqli_close(conectar());
      }
      function 
editar(){
         
$id=$_POST['id'];
         
$nombre=$_POST['nombre'];
         
$precio=$_POST['precio'];
         
$fecha=$_POST_['fechaalta'];
         
$esta=false;
         if(
conectar()->connect_error){
            die(
'Error de conexion: '.conectar()->connect_error);
         }else{
            
$sql="SELECT * FROM articulos WHERE id=".$id."";
            
$resul=mysqli_query(conectar(),$sql);
            while(
$linea=mysqli_fetch_array($resul)){
               
$esta=true;
            }
            if(
$esta==false){
               echo 
"No existe ningún articulo con el id ".$id;
            }
            if(!
mysqli_query(conectar(),"UPDATE articulos SET nombre='".$nom."',precio='".$precio."',fechaalta='".$fecha."' WHERE id=".$id."")){
               echo 
"No se ha actualizado el articulo!".mysqli_error(conectar());
            }else{
               echo 
"Articulo actualizado!";
            }
         }
      }
      if(isset(
$_POST['editar'])){
         
editar();
      }
      if(isset(
$_POST['volver'])){
         
header('Location:index.php');
      }
      
desconectar();
   
?>

</body>
</html>

Tusso4

Citar<!DOCTYPE html>
<html lang="en">
<head>
   <title>Articulos</title>
   <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
   <?php
      function conectar(){
         $con=mysqli_connect("localhost","root","","dam2d");
         return $con;
      }
      function desconectar(){
         mysqli_close(conectar());
      }
      if(conectar()->connect_error){
         die('Error de conexion: '.conectar()->connect_error);
      }else{
         $sql="SELECT * FROM articulos";
         $resul=mysqli_query(conectar(),$sql);
         Lo que haces en esa linea es conectar a la base de datos y devolver el handler, cada query que hagas conectaras de nuevo a la base de datos?.
         Para ésto, si quieres una función para conectar, podría ser algo tal que así

       $con = null;
function conectar(){
global $con;
$con=mysqli_connect("localhost","root","","dam2d");
}
function desconectar(){
global $con;
mysqli_close($con);
}

         Y para usar la función, solo deberás poner la función conectar(); y después en la query usar el hanlder almacenado en la variable $con;

         echo "<table class='table' border='1'>";
         while($linea=mysqli_fetch_array($resul)){
            echo "<tr><td colspan='6' align='center'><b>ARTICULOS</b></td></tr>";
            echo "<tr><th>ID</th><th>Nombre</th><th>Precio</th><th>Fecha Alta</th><th>Acciones</th></tr>";
            echo "<tr>";
            echo "<td>",$linea['id'],"</td>";
            echo "<td>",$linea['nombre'],"</td>";
            echo "<td>",$linea['precio'],"</td>";
            echo "<td>",$linea['fechaalta'],"</td>";
            $id=$linea['id'];
            //echo $id;?>
            <form action='editar.php' method='post'>
            <input type='hidden' name='id' value='<?php $id ?>'>
            <?php
            echo "<td><a class='btn btn-warning' href='editar.php?id=".$id."'>EDITAR</a>"."&nbsp";
            echo "<a class='btn btn-danger' href='eliminar.php?id='".$id."''>ELIMINAR</a></td>";
            echo "</form>";
            echo "</tr>";
         }
      }
      desconectar();
   ?>
</body>
</html>

Y en el código para editar, recuerda usar mysqli_real_escape_string para evitar inyecciones mysql.