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

 

 


Tema destacado: Introducción a Git (Primera Parte)


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

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Problema con clonar input y traer datos.
« en: 27 Diciembre 2019, 20:41 pm »

Buenas tardes a todos, en el dia de hoy vengo a pedirles una colaboracion con un codigo que no me quiere funcionar.

Tengo una tabla, donde yo quiero clonar la fila dependiendo de si la persona desea agregarlo con un (+), la fila principal tiene una funcion Jquery que hace que al yo digitar un codigo el trae de la base de datos la informacion como (Descripcion y valor unitario) y la pone en el input correspondiente, ahora todo esto me resulta, y todo esta bien. Pero al momento de yo crear una fila nueva el trae por defecto lo que tenga la primer fila, y si yo voy a traer la informacion de un producto por medio del codigo no tiene activado el codigo Jquery, que podria hacer en ese caso?.

CODIGO HTML
Código:
<div class="container">
  <div class="row">
    <div class="col-12">
  <form >
   <h3>Agregar Pedido</h3>
<select name="cc" class='mi-selector'>
          <option>Seleccione Cedula:</option>
            <?php
               $sql = "SELECT Cedula FROM Usuario";
               $consulta = mysqli_query($conectar, $sql);
            while ($mostrar = mysqli_fetch_array($consulta)) {
                ?>
          <option value="<?php echo $mostrar['Cedula'];?>"><?php echo $mostrar['Cedula'];?></option>
            <?php }?>
         </select>
    <table class="tabla">
     <tr class="fila-fija">
                  <td><input type="number" name="codigo[]" class="codigo"><span class="resultado"></span></td>
                  <td><input type="text" disabled="" name="descripcion[]" class="descrip" value="" placeholder="Descripcion"></td>           
                  <td><input type="text" name="Unidad[]" placeholder="Unidad"></td>
                  <td><input type="text" name="cantidad[]" placeholder="Cantidad"></td>
                  <td><input type="number" disabled="" name="vunitario[]" class="vunitario" value="" placeholder="Vunitario"></td>
                  <td class="eliminar"><input type="button"   value="Menos -"/></td>
     </tr>
    </table>
      <table>
<tr>
<td><input type="number" name="iva" placeholder="IVA"></td>
<td><input type="date" name="fecha"></td>
</tr>
   </table>
   <div class="btn-der">
     <input type="submit" name="insertar" value="Guardar" class="btn btn-info"/>
     <button id="adicional" name="adicional" type="button" class="btn btn-warning"> Más + </button>
   </div>
  </form>
</div>
</div>
</div>

JS:
Código:
<script type="text/javascript">
  // RELLENAR CAMPOS
$(document).ready(function() {
$(".codigo").focus();
$(".codigo").keydown(function(e) {
  ;
var url="getdatos.php";
$.getJSON(url,{ _num1: $(".codigo").val() }, function(clientes){
$.each(clientes, function(i,cliente) {
$(".vunitario").val(cliente.vunitario);
$(".descrip").val(cliente.descripcion);

if(cliente.resultado == "2") {
  $(".resultado").css("color","red");
  $(".resultado").text("codigo no disponible");
} else {
  $(".resultado").css("color","green");
  $(".resultado").text("codigo disponible");
}
});
});
});
});
</script>

// CLONAR UN INPUT
        $(function(){
// Clona la fila oculta que tiene los campos base, y la agrega al final de la tabla
$("#adicional").on('click', function(){
$(".tabla tbody tr:eq(0)").removeClass('fila-fija').clone(true).appendTo(".tabla");
});
// Evento que selecciona la fila y la elimina
$(document).on("click",".eliminar",function(){
var parent = $(this).parents().get(0);
$(parent).remove();
});
});

PHP: TRAER LOS DATOS PARA RELLENARLOS
Código:
<?php
$cod = $_GET['_num1'];
if (!empty($cod)) {
    comprobar($cod);
}
function comprobar($cod)
{
    include("../conexion_mysql.php");
    $sql = "SELECT * FROM Productos WHERE Codigo = '$cod'";
    $consulta = mysqli_query($conectar, $sql);
    $clientes = array();
    $row = mysqli_num_rows($consulta);
    if ($row == 0) {
        $clientes[] = array('codigo' => 'No hay nada', 'descripcion' => 'No hay nada', 'vunitario' => '0', 'resultado' => 2);
    } elseif ($row > 0) {
        while ($contar = mysqli_fetch_row($consulta)) {
            $codigo=$contar[0];
            $descripcion=$contar[1];
            $vunitario=$contar[3];
            $clientes[] = array('codigo' => $codigo, 'descripcion' => $descripcion, 'vunitario' => $vunitario, 'resultado' => 1);
        }
    }
    $json_string = json_encode($clientes);
    echo $json_string;
}
?>

Muchas gracias, espero me puedan colaborar :)


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Problema con clonar input y traer datos.
« Respuesta #1 en: 28 Diciembre 2019, 19:13 pm »

Te van a hackear la base de datos, eres vulnerable a SQL injection

Código:
$sql = "SELECT * FROM Productos WHERE Codigo = '$cod'";

Sobre tu duda incial deja reviso el codigo pero por lo que veo tendras que cambiar varias cosas


En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: Problema con clonar input y traer datos.
« Respuesta #2 en: 28 Diciembre 2019, 22:54 pm »

Exporta todos los script y hojas de estilo a documentos externos. Bloquea inline javascript. Utiliza sentencias preparadas. Parsea el input recibido en el PHP. Opcionalmente parsea en el cliente el envio para reducir carga del servidor enviando consultas no válidas. Y opcionalmente puedes parsear la respuesta en el cliente usando un text node o cambiando los símbolos por sus entidades correspondientes. Admite solo cargar recursos de tus archivos o librerías de terceros que uses.
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

Victor26

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: Problema con clonar input y traer datos.
« Respuesta #3 en: 30 Diciembre 2019, 21:54 pm »

Buenas tardes, AlbertoBSD. Claro en algunos codigos PHP, tengo incluido codigo para proteger al SQL Injection si no que este es un proyecto personal de aprendizaje que estoy haciendo, soy muy tirado a la practica y aprendiendo poco a poco la teoria hasta que me meta a estudiar la Universidad. Si me puedes ayudar con lo que estoy haciendo mal en el codigo excelente, gracias de todas maneras.

@?0!,5^34. Exacto, yo el CSS y el JS lo tengo dentro de un archivo aparte y los tengo anexados atravez de sus directorios, ese codigo javascript que tenia hay mismo en el documento era porque estaba metiendolo en donde estaban los codigos javascript y no me queria funcionar, pero ya resolvi eso. Ya comente lo de las sentencias preparadas arriba en mi comentario, Lo de parsear el input recibido en PHP y tambien envio para reducir la carga del servidor, eso lo estoy mirando en tutoriales para aprender, pues hay estuve mirando una libreria que uno indexaba al HTML para que hiciera eso de parsear.
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Problema con clonar input y traer datos.
« Respuesta #4 en: 30 Diciembre 2019, 23:36 pm »

Tengo una tabla, donde yo quiero clonar la fila dependiendo de si la persona desea agregarlo con un (+),

Esto ya lo tienes no, segun veo esta el event on click con el jquery

la fila principal tiene una funcion Jquery que hace que al yo digitar un codigo...

Incorrecto
-Se genera el documento HTML
-Se carga el javascript luego carga Jquery
-El Jquery le asigna la función con el evento Keydown a todos los elementos que tengan coincidan con el selector ".código"

Código
  1. $(".codigo").keydown(function(e) {

Aclara que en ese momento solo existe uno solo que es el que esta en la columna fija.

Al clonar loe elementos solo estas clonando el HTML, no estas volviendo a asignar las funciones a los elementos recién creados

Cosas que tienes que cambiar para que esto funcione es asignar un ID unico a cada elemento por que si lo sigues haciendo de esa manera:

Código
  1. $(".vunitario").val(cliente.vunitario);
  2. $(".descrip").val(cliente.descripcion);
  3.  

Lo que vas a realizar es cambiarle el valor a todos los elementos que tengan el nombre de vunitario y descrip.

Otra cosa por favor edita tu post principal y agrega el código que tengas para protegerte de SQL Injection, Esto con el fin de que cuando alguien nuevo entre y vea tu código copie el código que lo protege del BUG, No es por nada pero desde hace mas de 10 años la principal vulnerabilidad son los SQL Injection, hay que ayudar a evitar código Vulnerable por favor.

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Clonar el value de un input con Jquery
Desarrollo Web
.:Weeds:. 0 2,401 Último mensaje 21 Agosto 2012, 08:43 am
por .:Weeds:.
traer un solo dato de la base de datos!!
Bases de Datos
luiferrr 3 3,871 Último mensaje 13 Noviembre 2013, 22:17 pm
por Pablo Videla
traer un solo dato de la base de datos!!
PHP
luiferrr 6 3,121 Último mensaje 14 Noviembre 2013, 22:49 pm
por armandex293
Traer datos de una página web a una computadora específica
Dudas Generales
zagk 0 1,819 Último mensaje 27 Junio 2017, 21:21 pm
por zagk
Como traer los datos distintos a una fecha.
Bases de Datos
yoelrodguez 0 1,911 Último mensaje 20 Mayo 2020, 01:45 am
por yoelrodguez
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines