› Foros › PC › Software libre
Gooler escribió:Declaras $a, $b y $c locales al while así que luego al usarlas en los campos hidden no tienen ningún valor. Decláraras antes del while. En cualquier caso, no sé para qué haces eso, ya que teniendo el idS te puedes traer los demás datos en la consulta que procese al formulario...
$insertar = "insert into avisos (idC,nombre,apellidos,calle,poblacion,cpostal,tlf1,tlf2,dni,naviso) values ('$ncliente','$nombre','$apellidos','$domicilio','$sitio','$cpostal','$tlf1','$tlf2','$dni','$naviso')";
Para este último caso creo recordar que había que agrupar primero los resultados, algo del estilo de:SELECT MAX(idC) FROM avisos GROUP BY idC
(Seguramente no sea exactamente así porque no lo recuerdo bien, pero había que agrupar las cosas de las que querías obtener el máximo)
ashitaka escribió:Gooler escribió:Declaras $a, $b y $c locales al while así que luego al usarlas en los campos hidden no tienen ningún valor. Decláraras antes del while. En cualquier caso, no sé para qué haces eso, ya que teniendo el idS te puedes traer los demás datos en la consulta que procese al formulario...
Uuummm... me he quedado casi igual $a, $b y $c sí que toman un valor, los de la última entrada en la tabla de la BD (yo tengo una lista en una tabla con tres campos: id, localidad y código postal).
Y al hacer el submit del formulario me hace esto:$insertar = "insert into avisos (idC,nombre,apellidos,calle,poblacion,cpostal,tlf1,tlf2,dni,naviso) values ('$ncliente','$nombre','$apellidos','$domicilio','$sitio','$cpostal','$tlf1','$tlf2','$dni','$naviso')";
y los inserta perfectamente en otra tabla. Los values que inserta los coge del name de cada INPUT del formulario.
Gooler escribió:Lo que puedes hacer es, con el idS que obtienes del formulario, generar una consulta para obtener la información desde la tabla de lugares y usarlo en ese insert.
En cualquier caso, te vuelvo a decir que la situación ideal es tener una tabla con los clientes y sus datos y otra con los lugares y los suyos, y en la tabla de avisos insertar sólamente el id del cliente y el id del sitio e información referente al propio aviso. Cuando tengas que mostrar el resto de la información la recuperas de sus respectivas tablas.
$cliente = mysql_query("SELECT idC FROM avisos ORDER BY idC DESC LIMIT 1");
$consulta = mysql_query("SELECT idC, naviso FROM avisos ORDER BY naviso DESC LIMIT 1"); // Coge el último aviso
$x = mysql_fetch_row($consulta);
$nCliente = $x[0] +1;
$nAviso = $x[1] + 1;
$y = mysql_query("SELECT cpostal FROM sitios WHERE nombre LIKE '$elegir' LIMIT 1"); // $elegir es la selección en la dropdown box
$z = mysql_fetch_row($y);
$codigop = $z[0];
select coalesce(max(idC),0)+1 from avisos
Nordal escribió:@ashitaka
Si quieres un autoincremental del Id la sentencia que buscas es:select coalesce(max(idC),0)+1 from avisos
que por cierto, lo puedes usar directametne en el insert.
Otra solucion es que en la definicion de la tabla avisos, el IdC lo configures como autoincremental, con lo que te ahorras estos tinglados.
if ($_POST['elegir'] == "Elegir...") {
// mensaje de error y botón para volver atrás a corregir.
}
echo '<input type=submit method=post name=confirmar value="Confirmar y guardar">';
if ($_POST['confirmar']) {
// insertar datos del formulario en la tabla de la BD
}