PHP - Enviar dos parametros o variables por URL

 
Vista:
sin imagen de perfil

Enviar dos parametros o variables por URL

Publicado por Rafael (2 intervenciones) el 23/08/2023 23:39:25
Buena tarde estimados, estoy aprendiendo a programar en php y JS, me ha costado un poco, he visto manuales en youtube y otras paginas para ir aprendiendo. Estoy bloqueado con un tema de poder enviar dos variables o parametros por medio de URL, es para poder realizar una consulta sql.

Les explico o detallo como funciona lo que estoy haciendo y lo que necesito:


imagen_2023-08-23_152624582
Tengo estos campos en un formulario, de departamento, municipio y poblado. Logro poder ir generando los select dependiendo del departamento seleccionado, me muestra el listado de municipio sin problema, el de poblados me lo muestra pero aca necesito hacer validacion por 2 campos, parametros o variables, las cuales son, coddepto y codmuni.

El codigo en el htm de estos campos es el siguiente:
<div class="col-md-3">
<label for="depto">Departamento:</label>
<select class="form-select" aria-label="Default select example" id="depto" name="depto" onchange="buscarMunicipio(event);">
<option value="">Seleccione un Departamento</option>
<?php
foreach($data['departamentos'] as $row){?>
<option value="<?php echo $row['coddepto']?>"><?php echo $row['nomdepto'];?></option>
<?php } ?>
</select>
</div>

<div class="col-md-3" id="divmuni">
<label for="muni">Municipio:</label>
<select class="form-select" aria-label="Default select example" id="muni" name="muni" onchange="buscarPoblado(event);">
<!-- aca llena los datos js desde funciones.js -->
</select>
</div>

<div class="col-md-3" id="divpoblado">
<label for="poblado">Poblado/Aldea/Caserio/Zona:</label>
<select class="form-select" aria-label="Default select example" id="poblado" name="poblado">
<!-- aca llena los datos js desde funciones.js -->
</select>
</div>


Mi codigo es el siguiente cuando busco un municipio: (esto por medio de un archivo funciones.js)

function buscarMunicipio(e){
e.preventDefault();
const cod = document.getElementById("depto").value;

if (cod != '') { /* aca validamos si el codigo contiene un valor */
const url = base_url + "Ventas2/buscarMuni/"+cod; /* esta ruta esta en la carpeta controlador */
const http = new XMLHttpRequest();
http.open("GET", url, true);
http.send();
http.onreadystatechange = function(){
if(this.readyState == 4 && this.status == 200) {
const res = JSON.parse(this.responseText);
if (res) {
let html = '';
/* aca lleno el select de los municipios */
res['municipios'].forEach(row => {
html += `<option value="${row['codmuni']}">${[row['nommuni']]}</option>`;
});

document.getElementById("muni").innerHTML = html;
} else {
alertas('Municipios No Cargados','warning');
}

}
}

} else {
alertas('Debe seleccionar un Departamento', 'warning');
}
}

const url = base_url + "Ventas2/buscarMuni/"+cod;
esta url que tengo indicada busca dentro de la carpeta controlador una funcion para sacar el listado de municipios

public function buscarMuni($cod){
$data['municipios'] = $this->model->getMuni($cod);
echo json_encode($data, JSON_UNESCAPED_UNICODE);
die();
}

esta funcion va hacia el modelo a generar la consulta SQL

public function getMuni(String $cod){
$sql = "SELECT * FROM municipios WHERE coddepto = '$cod' ORDER BY nommuni";
$data = $this->selectAll($sql);
return $data;
}

en si todo esto me funciona bien, ahora mi problema es que para generar el listado de poblados, necesito pasarle dos parametros, dos valores o variables dentro de la URL, lo cual espero se pueda.

He intentado lo siguiente:

function buscarPoblado(e){
e.preventDefault();
const cod = document.getElementById("muni").value;
const cod2 = document.getElementById("depto").value;
let valores = [cod,cod2];

const url = base_url + "Ventas2/buscarPobla/"+valores;

aca pasando los datos como un array, lo cual me lo pasa, pero ya dentro del controlador no me los reconoce.
probe tambien de esta forma:

const url = base_url + "Ventas2/buscarPobla/"+cod+cod2;

tampoco, no se si hay alguna forma de pasarle esas dos constantes por la url y que en el controlador pueda usarlas asi:

public function buscarPobla($cod,$cod2){
$data['poblados'] = $this->model->getPoblado($cod,$cod2);
echo json_encode($data, JSON_UNESCAPED_UNICODE);
die();
}

y en el modelo asi:

public function getPoblado(String $cod, string $cod2){
$sql = "SELECT * FROM poblados WHERE codmuni = '$cod' AND coddepto = '$cod2' ORDER BY nompoblado";
$data = $this->selectAll($sql);
return $data;
}

espero haberme explicado, les agradeceria mucho sus comentarios, como les digo soy un poco novato en estos lenguajes y ya busque por todos lados pero no encuentro solucion.

Saludos
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
sin imagen de perfil

Enviar dos parametros o variables por URL

Publicado por Rafael (2 intervenciones) el 24/08/2023 00:26:38
Hola muchas gracias por tus consejos, es primer post que ingreso aca, pero ire tratando de entender la mejor forma de formular mis preguntas. Vere el link que me enviaste para tratar de comprender y buscar una solucion.

Muchas gracias nuevamente por tomarte el tiempo
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