Saludos amigos!
Tengo una consulta insert que inserta el valor ID de un registro, y quisiera saber que puedo hacer para que al recibir ese valor ID lo asocie con su nombre y envíe a la base de datos solo el nombre, y no el ID.
Un saludo y espero sus respuestas
Así?
$id = 50;
$sql = 'insert into tabla (nombre) values ((select nombre from personas where id = '.(int)$id.' limit 1))';
Cita de: WHK en 18 Abril 2013, 14:12 PM
Así?
$id = 50;
$sql = 'insert into tabla (nombre) values ((select nombre from personas where id = '.(int)$id.' limit 1))';
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<?php
$c=mysql_connect("localhost","root","");
mysql_select_db("clientes",$c);
//$provincia se obtiene de un select, cuyo valor es el id_provincia
$provincia = $_POST['lst1'];
echo "La provincia seleccionada es ",$provincia;
echo "<br>";
$poblacion = $_POST['lst2'];
echo "La población seleccionada es ",$poblacion;
echo "<br>";
//La siguiente línea es lo que yo tengo para introducir el ID y el nombre de la población.
//$sql = "INSERT INTO tabla (Provincia, Poblacion) VALUES ('$provincia','$poblacion')";
//Lo siguiente es lo que tu me has enviado
$id = $provincia;
$sql = 'insert into tabla (Provincia) values ((select * from personas where id = '.$provincia.'))';
mysql_query($sql);
?>
</body>
</html>
La consulta que tengo que envía los datos a la base de datos es:
INSERT INTO tabla (Provincia, Poblacion) VALUES ('$provincia','$poblacion')
Pero $provincia no es el nombre de la provincia, si no su id.
La composición de las tablas es:
lista_provincias: (id_prov, nom_prov)
lista_poblaciones(id_prov, nom_pobl)
Y quiero insertar los datos en la tabla "tabla" campos Provincia y Poblacion.
<?php
$c = mysql_connect("localhost", "root", "");
mysql_select_db("clientes", $c);
//$provincia se obtiene de un select, cuyo valor es el id_provincia
$provincia = (int)$_POST['lst1'];
$poblacion = (int)$_POST['lst2'];
//La siguiente línea es lo que yo tengo para introducir el ID y el nombre de la población.
//$sql = "INSERT INTO tabla (Provincia, Poblacion) VALUES ('$provincia','$poblacion')";
//Lo siguiente es lo que tu me has enviado
$id = $provincia;
$sql = '
insert into tabla
(
Provincia,
Poblacion
) values (
(select id_prov from lista_provincias where id = '.(int)$provincia.' limit 1),
(select id_prov from lista_poblaciones where id = '.(int)$poblacion.' limit 1)
)
';
mysql_query($sql);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
La provincia seleccionada es <?php echo (int)$provincia; ?><br />
La población seleccionada es <?php echo (int)$poblacion; ?><br />
</body>
</html>
Intenta ordenar tu código y separa el controlador de la vista para que cuando necesites modificar algo sepas donde está cada cosa, o sea, poner el código php en un lado y el html en otro.
Cuando escribas <br> estás usando html4, pero cuando usas xhtml como está puesto en la cabecera de tu sitio web debes utilizar <br />.
Recuerda utilizar cast, o sea establecer el tipo de variable, si $provincia es numérico entonces utiliza (int), si es un string entonces usa (string), si es un array entonces usa (array) y así para prevenir ataques de tipo y que te inyecten código como por ejemplo una inyección sql o un xss.
Saludos.
Gracias por las aclaraciones, pero sigo teniendo el problema de que $provincia lleva el valor del id, y $poblacion del nombre de la poblacion.
Quiero una consulta que cuando guarde el id de $provincia lo asocie al nombre de la provincia que se encuentra en la misma tabla. ID - NOM_PROV