PHP - CONFLICTO ENTRE FUNCIONES PHP

 
Vista:
sin imagen de perfil
Val: 75
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

CONFLICTO ENTRE FUNCIONES PHP

Publicado por Jonathan (30 intervenciones) el 12/08/2020 09:18:23
Tengo las siguientes dos funciones en PHP las cuales proceso mediante ajax
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php $raiz2 = "../";include 'conexion.php';
class Listado_productos {
 
	public function productos(){
		$con = new Conexion();
        $Query = "SELECT descripcion FROM productos";
        $productos = $con->obtenerdatos($Query);
        $filas = $con->numerofilas2($Query);
        $HTML = '<label for="producto">Producto</label>';
        if($filas > 0){
            $HTML .= '<select name="producto" id="producto" class="custom-select form-control-resp">';
            for($i=0,$filas;$i<$filas;$i++){
                $HTML .= '<option value="'.$productos[$i]['descripcion'].'">'.$productos[$i]['descripcion'].'</option>';
            }
            $HTML .= '</select>';
        }else{
            $HTML .='<select name="producto" id="producto" class="custom-select form-control-resp" disabled></select>';
        }
        return $HTML;
    }
 
	public function codigos(){
		$con = new Conexion();
		if(!(empty($_POST['codigo']))){
			$codigo = $_POST['codigo'];
			$Query = "SELECT descripcion FROM productos WHERE codigosap = '$codigo'";
			$resultados = mysqli_query($con->conexion , $Query);
			$totalresultados = mysqli_num_rows($resultados);
			$HTML = '';
			if($totalresultados > 0) {
				while ($fila = mysqli_fetch_assoc($resultados)) {
					$HTML .= $fila['descripcion'];
				}
			}
		}
		return $HTML;
	}
}
$inputs = new Listado_productos();
if(isset($_POST["action"])){
	$html1 = $inputs->productos();
	$html2 = $inputs->codigos();
	$data = array(
		"html1" => $html1,
		"html2" => $html2,
	);
	echo json_encode($data);
}
?>

Y de esta forma las recupero mediante Ajax

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//LISTADO PRODUCTOS//
function listado_productos(){
    var action = 'fetch_data';
    $.ajax({
        url:"listado_productos.php",
        method: "POST",
        dataType: "json",
        data:{ action:action},
        success:function(data){
            $('.input_producto').html(data.html1);
        }
    });
}
//CODIGO PRODUCTOS//
function codigo_producto(){
    var action = 'fetch_data';
    var codigo = document.getElementById("codigo").value;
    $.ajax({
        url:"listado_productos.php",
        method: "POST",
        dataType: "json",
        data:{ action:action,codigo:codigo},
        success:function(data){
            console.log(data.html2);
        }
    });
}

Por alguna razón solo funciona una de las funciones, pero si borro una de ellas, la otra vuelve a funcionar y viceversa, es como si entraran en conflicto, lo cual no se porque, estaría agradecido de su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Fabian
Val: 166
Ha disminuido su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

CONFLICTO ENTRE FUNCIONES PHP

Publicado por Fabian (40 intervenciones) el 12/08/2020 12:01:45
creo que acá esta el problema:
1
2
3
4
5
6
7
8
9
10
$inputs = new Listado_productos();
if(isset($_POST["action"])){
	$html1 = $inputs->productos();
	$html2 = $inputs->codigos();
	$data = array(
		"html1" => $html1,
		"html2" => $html2,
	);
	echo json_encode($data);
}

Cuando vos estás llamando mediante Ajax a la funcion "listado_productos()", ejectuta mediante $inputs->productos(); la funcionción correcta pero tambien ejectua $inputs->codigos(); a la cual le faltan datos porque no es al correspondiente. Es decir que estás ejecutando mediante una llamada Ajax las 2 funciones siempre. Para evitar esto yo probaría lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$inputs = new Listado_productos();
if(isset($_POST["action"])){
    if(isset($_POST["codigo"])){
       $html2 = $inputs->codigos();
       $data = array(
		"html2" => $html2
	)
    } else {
	$html1 = $inputs->productos();
        $data = array(
		"html1" => $html1
	)
   }
	echo json_encode($data);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 75
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

CONFLICTO ENTRE FUNCIONES PHP

Publicado por Jonathan (30 intervenciones) el 12/08/2020 21:21:13
Creo que eso no me sirve, ya que la primera función productos, muestra un input tipo select en un formulario, y la funcion codigos hace una busqueda a traves de otro input en el mismo formulario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar