PHP - Guardar texto selecionado en un combobox anidado

 
Vista:
Imágen de perfil de Cesar
Val: 67
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Guardar texto selecionado en un combobox anidado

Publicado por Cesar (24 intervenciones) el 08/03/2019 12:22:04
Buenas lo primero agradecerles este sitio me ha sacado de muchos apuros.

Y ahora a lio jejejejej
llevo un tiempo intentando guardar el valor seleccionado del segundo combo anidado en una pagina .

Me intento explicar , tengo dos combo dependientes uno de otro que cargan desde una base de datos hasta hay todo bien .
en la base de datos el primer combo hay dos campos ID y nombre
en la base de datos el segundo combo hay tres campos ID_pais , ID_continente y nombre
los dos combos se conectan por post mediante javascrip hasta hay seguimos bien .

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
(function(){
 
	// Lista de Continentes
	$.post( 'continentes.php' ).done( function(respuesta)
	{
		$( '#continentes' ).html( respuesta );
	});
 
	// lista de Paises	
	$('#continentes').change(function()
	{
		var el_continente = $(this).val();
 
		// Lista de Paises
		$.post( 'paises.php', { continente: el_continente} ).done( function( respuesta )
		{
			$( '#paises' ).html( respuesta );
		});
	});
 
	// Lista de Ciudades
	$( '#paises' ).change( function()
	{
		var pais = $(this).children('option:selected').html();
		alert( 'Lista de Ciudades de ' + pais );
	});
 
})

El problema llega ahora estos , dos combos estan dentro de un formulario con mas combos y text area
que al completarse se mandan por post a otra base de datos .
el problema que es que de estos combos anidados , se manda a la base de datos el ID en vez del nombre selecionado , y necesito el nombre porque luego de esa base de datos salen graficas .

Espero haberme explicado bien , hay veces que no me entiendo ni yo mismo jejejejej.
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 joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Guardar texto selecionado en un combobox anidado

Publicado por joel (1269 intervenciones) el 08/03/2019 13:24:32
Hola Cesar, yo te recomiendo que envies siempre el ID, y en tu página PHP, si necesitas el nombre, los buscas en la base de datos y tendras el nombre correspondiente al id.
Te digo esto, porque siempre es mejor pasar el id que es unico y numerico que el texto... pero si quieres que se pase el texto, cambiando el contenido del value="" en el <option> enviaras el texto.

Si lo que quieres es obtener el texto del option seleccionado, este código creo que te servira:
https://www.lawebdelprogramador.com/codigo/JavaScript/3605-Mostrar-el-texto-del-select-seleccionado-en-un-input-type-text.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Guardar texto selecionado en un combobox anidado

Publicado por Kathyu (905 intervenciones) el 08/03/2019 16:08:46
Ya le dijeron lo mejor es el ID, pero si por X o Y razón no lo quiere así, mande id al segundo form, ahí consulta nombre por ese ID y ya lo envía al otro lado. Facilisimo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Guardar texto selecionado en un combobox anidado

Publicado por Cesar (2 intervenciones) el 09/03/2019 11:24:33
Esto es lo que llevo intentando un tiempo y no consigo devolver , cuando selecciono el me manda a este código lo comparo con la
ID y me devuelve el ID al formulario original o nada , después de modificar lo varias veces .

1
2
3
4
5
6
7
8
9
10
11
12
$conexion = mysqli_connect("localhost","root","","ideas_web");
 
$el_continente = $_POST['continente'];
 
$query = $conexion->query("SELECT * FROM paises WHERE id_continente = $el_continente");
 
echo '<option value="0">Seleccione</option>';
 
while ( $row = $query->fetch_assoc() )
{
	echo '<option value="' . $row['id_pais']. '">' . $row['nombre'] . '</option>' . "\n";
}

Sigo probando y muchas gracias por las respuestas
da gusto encontrarse con gente que ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Guardar texto selecionado en un combobox anidado

Publicado por Cesar (2 intervenciones) el 10/03/2019 12:54:39
Disculpa pero llevo todo el fin de semana intentándolo y nada , con el enlace que me puso el compañero casi lo conseguí pero no se porque solo me recogía el texbox los que tenían el id 1 del primer combo estos de maravilla y guardaba todo bien en la BD , pero los demás ID nada no me cargaban en el textbox.
Y de la manera que me indica Kathyu no consigo devolver el nombre a la variable post del form para luego al dar a enviar y que me mande ese texto .

Please ayuda , me tiene loco esto .

He intentando hasta llenar el select pulsando un botón , cree cuatro botones uno con cada consulta e intentaba cargar este select con los datos de la consulta al pulsar cada botón y nada asi me quitaba el hacerles anidados .

y seguro que es facil pero ya me atranque y no hay manera.

Gracias de antemano y un saludo.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Cesar
Val: 67
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Guardar texto selecionado en un combobox anidado

Publicado por Cesar (24 intervenciones) el 12/03/2019 22:56:57
Ayuda please
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de italo_pm
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Guardar texto selecionado en un combobox anidado

Publicado por italo_pm (193 intervenciones) el 13/03/2019 03:29:55
Hola, no he entendido que es lo que deseas,

ya tienes el procedimiento (segun tu codigo) para obtener los continentes, los paises que es lo que te falta?

1
2
3
4
5
6
7
8
9
10
11
// Lista de Ciudades
$( '#paises' ).change( function()
{
//aqui obtienes el valor del value (casi siempre el id de tu record de datos)
var id_pais_seleccionado = $(this).val();
 
//aqui obtienes el texto del option
var valor_pais_seleccionado = $(this).children('option:selected').html();
 
alert('id pais seleccionado: ' + id_pais_seleccionado + ' valor pais seleccionado: ' + valor_pais_seleccionado );
});

si lo que deseas es el elenco de ciudades en base al pais seleccionado:

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
/**/
$(document).ready(function(){
  $('#paises').on('change',function() {
 
    //aqui obtienes el valor del value (casi siempre el id de tu record de datos)
    var id_pais = $(this).val();
 
    //aqui obtienes el texto del option
    var valor_pais = $(this).children('option:selected').html();
 
    alert('id pais: ' + id_pais + ' valor pais: ' + valor_pais );
 
    //usaremos solo el id (id_pais) para recuperar las ciudades del pais seleccionado 
    $.ajax({
      type:'POST',
      url:'php/ciudades.php',
      data:'id_pais='+id_pais, //recibire con metodo $_POST
      success:function(html) {
 
       // Si todo va bien, escribo en el tag html select option con id ciudades. (asi como continente/pais)
        $('#ciudades').html(html);
      }
    });
  });
});
/**/

ciudades.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
//* file config database
 
$conexion = mysqli_connect("localhost","root","","ideas_web");
 
$id_pais = $_POST['id_pais'];   //valor recibido
 
$query = $conexion->query("select c.id_ciudad id_ciudad, c.nombre nombre_ciudad from ciudades c, paises p where c.id_pais = p.id_pais and c.id_pais = $id_pais");
 
 
echo "<option value=''>-ajax - Selecciona Ciudad-</option>";
 
while ($row = $query->fetch_assoc()) {
 
echo "<option value=".$row['id_ciudad'].">".$row['nombre_ciudad ']."</option>";
 
}
 
?>

obviamente deberas de tener un select option con id="ciudades"


1
2
3
<select id="ciudades" name="ciudades" >
   <option>-Ciudades-</option>
</select>

revisa los nombres y rutas de los files, revisa el nombre y campos de las tablas mysql, si la $query no es igual a la que escribi, adaptala a la tuya.

lee el codigo y la parte de los comentarios (//) que ahi esta explicado que cosa hace el codigo.

prueba en test, si tienes problemas escribelos igual que a los errores. trata de ser claro en tus explicaciones, si hay errores, escribe el codigo de los otros files ya que es imposible generar los errores.

salud2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Cesar
Val: 67
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Guardar texto selecionado en un combobox anidado

Publicado por Cesar (24 intervenciones) el 17/03/2019 13:56:30
solucionado por fin jejejejeje
y como se esperaba despues de una semana de darlo vueltas ,
de la manera mas facil .

pongo la solucion por si a alguien le puede venir bien .

al final en el envio del segundo select he cargado tanto el value como el option con lo mismo y asi recupero el value con
el tecçxto que era lo que queria

Gracias a todos por la ayuda .
+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
require_once 'conexion.php';
 
function getVideos(){
  $mysqli = getConn();
  $id = $_POST['id'];
  $query = "SELECT * FROM `defecto` WHERE id_lista = $id";
  $result = $mysqli->query($query);
  $videos = '<option value="0">Elige una opción</option>';
  while($row = $result->fetch_array(MYSQLI_ASSOC)){
    $videos .= "<option value='$row[nombre]'>$row[nombre]</option>";
  }
  return $videos;
}
 
echo getVideos();

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar