Nueva pregunta

Pregunta:

Fecha: 08-10-2018 06:43:20 (En Español)

Cuando Creo una Llave primaria no se guardan los datos como puedo Guardar los datos teniendo una llave primaria?[Resuelta]

hola tengo el siguiente problema cree un formulario que se almacena en una base de datos todo corre bien hasta que llegue al punto en el que quiero imprimir en pantalla ese formulario al crear esta sentencia...

<?php
include ("conexion.php");
$sql="SELECT * FROM pedido;
$resul=mysqli_query($conexion,$sql);

while ($form = mysqli_fetch_array($resul)) {
echo "$form[hospital1]";
echo "$form[globulos]";
echo "$form[plaquetas]";
echo "$form[plasma]";
echo "$form[materiales]";

}


?>
Me presente con el problema que me trae todos los registro almacenados en la BD ahora yo solo quiero el ultimo registro por lo cual use el siguiente condigo

$sql="SELECT * FROM pedido order by id desc limit 1";

Para poder hacer esto tengo crear una llave primaria en mi tabla allí comienza mi gran problema una ves que creo la Llave primaria ya no se guarda el registro en BD si elimino la Llave primaria si se guardan.

Ahora mi Pregunta seria PORQUE NO SE GUARDA LOS DATOS DEL FORMULARIO CUANDO TENGO UNA LLAVE PRIMARIA CREADA?.


Mi Base de Datos es simple

tabla pedido SIN PRIMARY KEY:
hospital1=varchar
hospital2=varchar
globulos=varchar


tabla pedido CON PRIMARY KEY:
id=int,Primary key
hospital1=varchar
hospital2=varchar
globulos=varchar


cualquier ayuda que me puedan dar se los agradesco porque he estado parado varios solo por esto.
Etiquetas: Base de Datos - HTML - MySQL - PHP MySQLi - Web Votos: 0 - Respuestas: 8 - Vistas: 8 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 08-10-2018 07:44:29 lo mas seguro es que hayas creado la clave primaria, pero no la colocaste como autoincremental, lo que conlleva a que este esperando que llegue dicha clave desde el formulario, colocala como autoincremental y listo, ya alli debería de registrar sin problemas.

    En caso de seguir con el problema luego de hacer el cambio, prueba imprimiendo el posible problema si lo hay con error_get_last de php:

    
    echo error_get_last['message']." en la línea: ".error_get_last['line'];
    
    
      Votos: 0 - Link respuesta
     
  • Fecha: 08-10-2018 09:43:24 hola si esta en auto-incremento cuando cree la columna tilde la opción A.I en la base de datos el problema es que no me arroja error de echo le tengo un mensaje de "Carga exitosa" y el mensaje me sale pero voy a la BD esta Vacia corri el codigo que dejaste y arroja ningun mensaje solo sale mi mensaje de "Carga exitosa" revise otra la BD y no estan los datos   Votos: 0 - Link respuesta
     
  • Fecha: 09-10-2018 14:44:22 la llave primaria es unica y autoincremental, la cual se genera de manera automatica al insertar el nuevo registro.   Votos: 1 - Link respuesta
     
  • Fecha: 09-10-2018 15:02:34 cuelga el código exacto que usas para la inserción a ver que tal y partimos de allí   Votos: 1 - Link respuesta
     
  • Fecha: 09-10-2018 17:47:33 Creo q deberias crear un triger que se ejecute al insertar un dato en la tabla asi ovias poner el.id cada vez que vas a insertar algo puede ser una opcion valida   Votos: 1 - Link respuesta
     
  • Fecha: 10-10-2018 02:57:32 Codigo del ingreso de Datos:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>XXX</title>
    <link rel="stylesheet" href="ssestyle.css">

    </head>
    <body>
    <?php
    session_start();

    if(isset($_SESSION['u_usuario'])){
    }
    else{
    header("location:intro.php");
    }

    ?>
    <div class="logo">
    <img src="img/acin.jpg">
    </div>
    <header>
    <nav class="navegacion">
    <ul class="menu">
    <!--<a href="">Envio de Sangre</a></li>
    <li><a href="">Distribucion </a></li>-->
    <a href="acin.php"><li>Inicio</a>
    <li><a href="">Servicios Extras</a>
    <ul class="submenu">
    <li><a href="">Envio de Sangre</a></li>
    <li><a href="">Distribucion</a></li>
    </ul>
    </li>
    </ul>
    </nav>
    </header>
    <h1>Solicitud de Transporte</h1>

    <h2>Seleccione Hospital</h2>



    <div class="pedido">
    <form action="pedido.php" method="POST">

    <label><input type="checkbox" name="hospi1" value="XXX" ><h2>XXX</h2></label>
    <label><input type="checkbox" name="hospi2" value="XXX" ><h2>XXX</h2></label>


    <center>
    <table>
    <tr>
    <label><input type="checkbox" name="globulos" value="Globulos"><h1>Globulos</h1></label>
    <label><input type="checkbox" name="plaquetas" value="Plaquetas"><h1>Plaquetas</h1></label>
    <label><input type="checkbox" name="plasma" value="Plasma"><h1>Plasma</h1></label>
    <label><input type="checkbox" name="materiales" value="Materiales"><h1>Materiales</h1></label>
    </tr><br><br>
    </table>
    </center><br>


    <h4>Hora de Solicitud:</h4>

    <div class="respuesta">
    <center>
    <a href=""><input type="submit" value="Salir"></a>
    <a href=""><input type="submit" value="Siguiente"></a>
    </center>
    </div>
    </form>
    </div>



    </body>
    </html>

    Codigo de proceso de ingreso de los datos a la BD

    <?php
    ini_set('display_errors',0);
    include ("conexion.php");

    $hospital1=$_POST['hospi1'];
    $hospital2=$_POST['hospi2'];
    $globulos=$_POST['globulos'];
    $plaquetas=$_POST['plaquetas'];
    $plasma=$_POST['plasma'];
    $materiales=$_POST['materiales'];

    $sql = "INSERT INTO pedido VALUES('$hospital1','$hospital2','$globulos','$plaquetas','$plasma','$materiales')";
    mysqli_query($conexion,$sql);
    if (!$sql) {
    echo "hubo un error al cargar los datos";
    }
    else{
    header("location:form.php");
    //echo "datos cargados";
    }


    ?>

    Hasta aqui todo camina excelente los datos se almacenan bien y tengo la siguiente tabla

    Tabla Pedido sin llave primaria: De este modo los datos ingresan perfectamente
    hospital1, hospital2, globulos, plaquetas, plasma, materiales

    Tabla pedido con Llave primaria: De este modo los datos dejan de ingresar
    id, hospital1, hospital2, globulos, plaquetas, plasma, materiales

    La tabla pedido es la unica que tiene llave primaria ninguna otra tabla tiene llaves en este caso tome com llave primaria a (id).

    estoy atento a sus comentarios muchas gracias
      Votos: 0 - Link respuesta
     
  • Fecha: 10-10-2018 05:43:16 Una pregunta mi niño, tienes las dos tablas con el mismo nombre en tu base de datos o la prueba la hiciste por separado?

    De ser así, agregarle una s a pedido con llave e intenta la inserción de nuevo a esta tabla que ahora debería llamarse pedidos
      Votos: 1 - Link respuesta
     
  • Fecha: 16-10-2018 11:42:38 hola Listo el problema era en la tabla completa como tal, solo elimine la tabla y la volví a crear desde 0 pero esta vez con la columna ID que sera la llave primaria con auto-incremento y funciono perfectamente ya carga los datos   Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com