Consulta para insertar en vez de ID su nombre asociado

Iniciado por the_sheriff_pino, 18 Abril 2013, 13:06 PM

0 Miembros y 1 Visitante están viendo este tema.

the_sheriff_pino

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
Rebélate

WHK

Así?

Código (php) [Seleccionar]
$id = 50;
$sql = 'insert into tabla (nombre) values ((select nombre from personas where id = '.(int)$id.' limit 1))';

the_sheriff_pino

Cita de: WHK en 18 Abril 2013, 14:12 PM
Así?

Código (php) [Seleccionar]
$id = 50;
$sql = 'insert into tabla (nombre) values ((select nombre from personas where id = '.(int)$id.' limit 1))';

Código (php) [Seleccionar]
<!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>
Rebélate

the_sheriff_pino

La consulta que tengo que envía los datos a la base de datos es:
Código (sql) [Seleccionar]
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.
Rebélate

WHK

Código (php) [Seleccionar]
<?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.

the_sheriff_pino

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
Rebélate