elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Problema con PHP y HTML
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con PHP y HTML  (Leído 2,233 veces)
Victor26

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Problema con PHP y HTML
« en: 9 Octubre 2019, 20:23 pm »

Buenas tardes a todos, hoy vengo a compartir y me puedan ayudar de un problema que se me esta presentando en un sistema CRUD de facturacion basico que estoy haciendo.

Utilizo php para enviar los datos y conectar con mysql, que es donde llegan en unas tablas y luego poder ser mostradas en una tabla html. Verificando mi mysql los registros llegan y no se repiten, pero cuando llegan dichos registros a mi tabla html si se repiten cada vez que ingreso un registro nuevo, quisiera saber porque pasa. Gracias

Este es el codigo del formulario donde se envian los datos:
Código
  1. <form method="POST" action="datos.php">
  2. <div class="container facturacion1">
  3. <div class="row">
  4.    <div class="col-12 factura">
  5.      <h1>SISTEMA DE FACTURACION BASICO</h1><br>
  6.    </div>
  7.  
  8. <div class="col-12 col-md-6 facturacion datos2">
  9.    <label>Cedula:</label><br>
  10.    <input type="text" name="cc" placeholder="Digite su cedula"><br>
  11.    <label>Nombre:</label><br>
  12.    <input type="text" name="name" placeholder="Digite su nombre"><br>
  13.    <label>Telefono:</label><br>
  14.    <input type="text" name="phone" placeholder="Digite su celular"><br>
  15.    <label>Direccion:</label><br>
  16.    <input type="text" name="direccion" placeholder="Digite su direccion"><br>
  17.    <label>Fecha:</label><br>
  18.    <input type="date" name="fecha" placeholder="Digite la fecha">
  19.  </div><br><br>
  20.  
  21.    <div class="col-12 col-md-6 facturacion">
  22.        <label>Codigo:</label><br>
  23.        <input type="text" name="code" placeholder="Codigo del Producto"><br>
  24.        <label>Descripcion:</label><br>
  25.        <input type="text" name="descripcion" placeholder="Descripcion del Producto"><br>
  26.        <label>Cantidad:</label><br>
  27.        <input type="text" name="cantidad" placeholder="Cantidad"><br>
  28.        <label>Valor Unitario:</label><br>
  29.        <input type="text" name="vunitario" placeholder="Valor unitario del Producto">
  30.    </div><br><br>
  31.    <div class="col-12 facturacion botones1">
  32.      <input type="submit" name="envia" value="Enviar"><a href="../../index.php"><input type="submit" name="regresar" value="Regresar"></a>
  33.    </div>
  34.  
  35. </div>
  36. </div>
  37. </form>


Codigo donde recibe los datos
Código
  1. <?php
  2.  
  3. include("conexion_factura.php");
  4.  
  5. $cedula       = $_POST['cc'];
  6. $nombre       = $_POST['name'];
  7. $telefono     = $_POST['phone'];
  8. $direccion    = $_POST['direccion'];
  9. $fecha        = $_POST['fecha'];
  10. $codigo       = $_POST['code'];
  11. $descripcion  = $_POST['descripcion'];
  12. $cantidad     = $_POST['cantidad'];
  13. $vUnitario    = $_POST['vunitario'];
  14.  
  15. /* VALIDAR SI LOS DATOS EXISTEN */
  16. $verificar = "SELECT * FROM Clientes, Productos WHERE
  17. Nombre = '$nombre',
  18. Cedula = '$cedula',
  19. Telefono = '$telefono'
  20. Direccion = '$direccion'
  21. Fecha = '$fecha'
  22. Codigo = '$codigo'
  23. Descripcion = '$descripcion'
  24. Cantidad = '$cantidad'
  25. Vunitario = '$vUnitario'";
  26. if(mysqli_num_rows($verificar) > 0) {
  27. print 'Los datos ya existen';
  28. }
  29. /* SI LOS DATOS NO EXISTEN SE INSERTA */
  30. else {
  31.  
  32. $clientes = "INSERT INTO Clientes (Cedula, Nombre, Telefono, Direccion, Fecha) VALUES ('$cedula',            '$nombre',  '$telefono', '$direccion', '$fecha')";
  33.  
  34. $productos = "INSERT INTO Productos (Codigo, Descripcion, Cantidad, Vunitario) VALUES ('$codigo', '$descripcion', '$cantidad', '$vUnitario')";
  35.  
  36. $verificacion = mysqli_query($conectar, $clientes);
  37.  
  38. $verificacion2 = mysqli_query($conectar, $productos);
  39.  
  40. if ($verificacion && $verificacion2) {
  41. header("location: factura.php");
  42. }
  43. else {
  44. header("location: index.php");
  45. }
  46.  
  47. }
  48.  
  49. ?>


Codigo de la tabla html donde llegan los datos procedentes de la tabla mysql la cual muestra doble registro

Código
  1.   <?php
  2.     include("conexion_factura.php");
  3.  
  4.     ?>
  5.  
  6. <div class="container">
  7.  <div class="row">
  8.    <div class="col-12">
  9.  
  10.  <table class="table table-dark">
  11.  <thead>
  12.    <tr>
  13.      <th scope="col">Cedula</th>
  14.      <th scope="col">Nombre</th>
  15.      <th scope="col">Telefono</th>
  16.      <th scope="col">Direccion</th>
  17.      <th scope="col">Fecha</th>
  18.      <th scope="col">Codigo</th>
  19.      <th scope="col">Descripcion</th>
  20.      <th scope="col">Cantidad</th>
  21.      <th scope="col">Vunitario</th>
  22.      <th scope="col">Vtotal</th>
  23.    </tr>
  24.  </thead>
  25.  <tbody>
  26. <?php
  27. $consulta = "SELECT Cedula, Nombre, Telefono, Direccion, Fecha FROM Clientes";
  28. $sql = mysqli_query($conectar, $consulta);
  29. while ($mostrar = mysqli_fetch_array($sql)) {
  30.  
  31. $consulta2 = "SELECT Codigo, Descripcion, Cantidad, Vunitario, Vtotal FROM Productos";
  32. $sql2 = mysqli_query($conectar, $consulta2);
  33.  while ($mostrar2 = mysqli_fetch_array($sql2)) {
  34. ?>
  35.  
  36. <tr>
  37.  <td><?php echo $mostrar['Cedula']?></td>
  38.  <td><?php echo $mostrar['Nombre']?></td>
  39.  <td><?php echo $mostrar['Telefono']?></td>
  40.  <td><?php echo $mostrar['Direccion']?></td>
  41.  <td><?php echo $mostrar['Fecha']?></td>
  42.  <td><?php echo $mostrar2['Codigo']?></td>
  43.  <td><?php echo $mostrar2['Descripcion']?></td>
  44.  <td><?php echo $mostrar2['Cantidad']?></td>
  45.  <td><?php echo $mostrar2['Vunitario']?></td>
  46.  <td><?php echo $mostrar2['Vtotal']?></td>
  47. </tr>
  48.  
  49. <?php
  50.  
  51. }
  52. }
  53. ?>
  54.  
  55.  </tbody>
  56. </table>
  57. <button><a href="index.php">Regresar</a></button>
  58. </div>
  59. </div>
  60.  </div>


Gracias, espero que me puedan colaborar :)


« Última modificación: 21 Octubre 2019, 03:01 am por Victor26 » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Problema con PHP y HTML
« Respuesta #1 en: 10 Octubre 2019, 00:56 am »

Esto es más un problema con las queries y la forma en la que estás trayendo la información. Posiblemente la estructura de tus tablas necesite cambios.

La primera consulta que haces para revisar si es una entrada es duplicada me parece un poco extraña. Hay un JOIN implícito en tu consulta, pero realmente no hay ninguna forma de vincular tus clientes y tus productos. Lo que significa que unos clientes A y B pueden comprar C y D respectivamente y el dataset que obtienes tendría 4 entradas:

Código:
A - C
B - C
A - D
B - D

Lo que básicamente implica que tanto A como B se les facturo C y D.

Es el mismo problema con la forma en la que despliegas la información, estás haciendo un CROSS JOIN manual (con multiples queries). Nuevamente, necesitas agregar un campo en la tabla de Productos que ligue tus clientes con sus productos.

Con eso vas a poder hacer algo como:

Código
  1. SELECT * FROM Productos
  2. INNER JOIN Clientes
  3. ON Clientes.Cedula = Productos.CedulaDeCliente

Otras cosas que deberías tener en cuenta es que muy probablemente no quieras duplicados de Clientes (la query que revisa duplicados, solo revisa por la unión de cliente y producto) y mysqli_num_rows trabaja con los resultados de la consulta (lo que obtienes después de usar mysqli_query).

No se tampoco porque incluyes un hyperlink en el botón de submit


En línea

Victor26

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: Problema con PHP y HTML
« Respuesta #2 en: 10 Octubre 2019, 01:09 am »

Buenas, el problema es que no tengo relacionado la tabla Clientes con Productos.
La tabla Clientes, tiene 5 atributos (Cedula, Nombre, Direccion, Telefono y Fecha).
La tabla Productos, tiene 5 atributos (Codigo, Descripcion, Cantidad, Vunitario y Vtotal)
Las llaves primarias de ambos son Cedula y Codigo.
No he manejado JOIN porque no lo conozco y segun lo que vi en tutoriales necesitaria tener ambas tablas relacionadas para hacer eso.
En el submit tengo el boton "ENVIAR" y "Regresar" que seria a la pagina principal de mi web.
Me tocaria verificar entre ambas tablas cual seria la union entre los campos y aplicar el JOIN pero no se como seria aplicar el JOIN y que parte del codigo llegaria a reemplazar.

Gracias!
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Problema con PHP y HTML
« Respuesta #3 en: 10 Octubre 2019, 01:49 am »

Buenas, el problema es que no tengo relacionado la tabla Clientes con Productos.
La tabla Clientes, tiene 5 atributos (Cedula, Nombre, Direccion, Telefono y Fecha).
La tabla Productos, tiene 5 atributos (Codigo, Descripcion, Cantidad, Vunitario y Vtotal)
Las llaves primarias de ambos son Cedula y Codigo.
No he manejado JOIN porque no lo conozco y segun lo que vi en tutoriales necesitaria tener ambas tablas relacionadas para hacer eso.
En el submit tengo el boton "ENVIAR" y "Regresar" que seria a la pagina principal de mi web.
Me tocaria verificar entre ambas tablas cual seria la union entre los campos y aplicar el JOIN pero no se como seria aplicar el JOIN y que parte del codigo llegaria a reemplazar.

Gracias!
Si no hay una forma de relacionar los registros de la tabla de Clientes con la tabla de Productos pues simplemente no deberías crear una consulta que trate de relacionar las dos tablas. Sin un campo para establecer una relación estricta, el JOIN es básicamente un producto cruzado entre las tablas de Clientes y Productos. Todos las entradas en tu tabla de Clientes tendrían una relación con todas las entradas en la tabla de Productos (como te lo explique en el post anterior).

Los campos que mencionas pueden ser la relación, pero vas a tener que revisarlos. Sí estás trabajando con información ya registrada y nadie ha guardado la relación entre estas dos tablas en ningún lado y es un requisito, alguien se ha equivocado gravemente. Mientras que la información exista en algún lado vas a poder adaptar la base de datos para ingresar la información (buena suerte si las escribió el doctor del pueblo a mano) pero si no...

El JOIN no es nada complicado ya te he puesto el código arriba de como se vería (lo que si necesitas revisar son los campos en los que trabaja el ON).

Puedes imprimir la tabla de clientes y la tabla de productos pero independientemente.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con php o con html.
Desarrollo Web
Angel Zero 3 2,999 Último mensaje 7 Octubre 2011, 02:28 am
por Angel Zero
problema con html y css
Desarrollo Web
mxsoun 5 3,076 Último mensaje 22 Enero 2013, 03:33 am
por mxsoun
Problema PSD a HTML
Desarrollo Web
Urketinn 4 2,833 Último mensaje 31 Enero 2014, 03:26 am
por Urketinn
Problema con la geolocalización con la api de html 5
Desarrollo Web
yoelrodguez 3 2,702 Último mensaje 28 Noviembre 2020, 00:43 am
por yoelrodguez
Problema con HTML
Programación General
diablo.hechicero 1 2,430 Último mensaje 23 Noviembre 2021, 14:35 pm
por diablo.hechicero
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines