Hola, como esto es otro tema, he creido conveniendo plantearlo así. Antes de volverme loco haciendo pruebas y experimentos, hago esta pregunta: ¿Sería posible crear una pagina de update para cualquier campo de la db mediante un form que solo envie los imput rellenos? Si es que si, me gustaría recibir una pequeña explicacion para intentar desarrollarlo yo, caso contrario, tambien. Gracias
Claro que si se puede , te refieres a ingresar texto en un input y luego almacenarlo en la db? eso es muy sencillo, solo tienes que aprender a utilizar las funciones mysql , no todas y listo.
A ver, yo se que se puede introducir texto a en una db mediante un form, de hecho es así como lo estoy haciendo. Pero si yo quiero solamente actualizar un solo dato erroneo de mi db y tengo cuatro imput, ejem.:(nombre, direccion, provincia, pais), y hoy rectifico (nombre) y mañana (pais), ¿necesito una pagina de envio para cada campo o en una sola pueden estar todos los campos y solo se actualiza el relleno? ¿No se si me explico?
Entonces lo que quieres es lo que me habias comentado en otro tema? es facil , si quieres editar solo un campo , puedes editar solo un campo , y si quieres todos puedes editar todos, mediante un form , utilizando la funcion UPDATE de mysql, quedando un ejemplo asi
editar.php
<!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=windows-1252" />
<title>Documento sin título</title>
</head>
<body>
<h1>Editar el numero de papas que comes al dia</h1>
<?php
$conectar = mysql_connect ("SERVIDOR","USUARIO","CLAVE") or die ("Error");
$seleccionar = mysql_select_db ("BD");
$tabla = mysql_query ("SELECT * FROM papas");
?>
<form action="editando.php" method="post">
<table border="0px">
<tr>
<td>Bolsas de papas:</td>
<td><input type="text" name="papas" value="
<?
if(mysql_num_rows($tabla))
{
if ($papas = mysql_fetch_array($tabla))
{
echo $papas['numero'];
}
}
?>
" /></td>
</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Editar" /></td>
</tr>
</table>
</form>
</body>
</html>
Y editando.php
<?php
$editado = $_POST['papas'];
$conectar = mysql_connect ("SERVIDOR","USUARIO","CLAVE") or die ("Error");
$seleccionar = mysql_select_db ("BD");
/* Aqui actualizamos la bd seria asi
$actualizar = mysql_query("UPDATE tabla SET campo = 'actualizacion' ") or die (Error);
se pone una coma si son mas campos a editar:
$actualizar = mysql_query("UPDATE tabla SET campo = 'actualizacion', campo2 = '' , campo 3.....etc ") or die (Error);
En el ejemplo seria asi:
*/
$actualizar = mysql_query("UPDATE papas SET numero = '$editado' ") or die (Error);
echo "
Tu campo se ha editado correctamente</p>";
?>
Hola cesar, disculpa mi tardanza en contestar pero el 'curro' me absorbe mucho tiempo. No, yo no quiero actualizar campos a traves del code de la pagina de envio del form; lo que quiero es crear un form que ingrese los valores de los campos a actualizar en la pagina de envio, ¿no se si me explico? y ¿si se puede? Todavia no doy para eso, ni para mucho menos (¿a quien quiero engañar?).
oh creo que ya te estoy entendiendo, lo que quieres hacer es que mediante de un formulario selecciones los campos a actualizar, por ejemplo mediante un select name de html , que ponga:
Selecciona la fila que quieras actualizar y aparezca una lista con todos las filas insertadas
cesar_ed escribió:Selecciona la fila que quieras actualizar y aparezca una lista con todos las filas insertadas
Y una vez seleccionada poder actualizar cualquier campo de cualquiera fila. Ejem.: tenemos una bd con "nombre, ciudad, pais". Digamos que tengo a "Juan, Madrid, España" y Juan se muda a Barcelona. Lo que quiero es poder actualizar el campo "Madrid" de "Juan" con un form que se comunique con la pagina de 'envio.php' y esta con la bd. cambiando ella solita los datos sin que yo tenga que actuar sobre el code de la pagina de 'envio.php'.
<!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=windows-1252" />
<title>Documento sin título</title>
</head>
<body>
<form action="editando.php" method="get">
<table border="0px">
<tr>
<?php
$conectar = mysql_connect("TU SERVIDOR","TU USUARIO", "TU CLAVE");
$bd = mysql_select_db ("TU BASE DE DATOS");
$seleccionar = mysql_query ("SELECT * FROM tutabla ") or die ("Ha ocurrido un error al conectar ala bd");
$contando_registros = mysql_num_rows($seleccionar);
if($contando_registros <= 0)
{
echo "<td>No se han encontrado registros en la tabla</td></tr></table></form>";
}
else {
echo '<td>Selecciona la fila que deseas editar</td>';
echo '<td>';
echo '<select name="id">';
if($contando_registros)
{
while ($registros = mysql_fetch_array($seleccionar))
{
echo '<option value="'.$registros['TU ID DE LA TABLA'].'">Fila '.$registros['TU ID DE LA TABLA'].' </option> ';
}
}
echo '</select>';
echo '</td>';
echo '</tr>';
echo '<tr>';
echo '<td></td>';
echo '<td><input type="submit" value="Editar"></td>';
echo '</tr>';
}
?>
</table>
</form>
</body>
</html>
Y una de enviar php , que tomando en cuenta el metodo GET puedes obtener el id de la url, ya que con el codigo que te mostre obtiene el id de tu tabla, ahora solo tienes que seleccionar los campos que quieres editar de la fila seleccionada, fue facil no?
cesar_ed escribió:Entonces lo que quieres es lo que me habias comentado en otro tema? es facil , si quieres editar solo un campo , puedes editar solo un campo , y si quieres todos puedes editar todos, mediante un form , utilizando la funcion UPDATE de mysql, quedando un ejemplo asi
editar.php
<!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=windows-1252" />
<title>Documento sin título</title>
</head>
<body>
<h1>Editar el numero de papas que comes al dia</h1>
<?php
$conectar = mysql_connect ("SERVIDOR","USUARIO","CLAVE") or die ("Error");
$seleccionar = mysql_select_db ("BD");
$tabla = mysql_query ("SELECT * FROM papas");
?>
<form action="editando.php" method="post">
<table border="0px">
<tr>
<td>Bolsas de papas:</td>
<td><input type="text" name="papas" value="
<?
if(mysql_num_rows($tabla))
{
if ($papas = mysql_fetch_array($tabla))
{
echo $papas['numero'];
}
}
?>
" /></td>
</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Editar" /></td>
</tr>
</table>
</form>
</body>
</html>
Y editando.php
<?php
$editado = $_POST['papas'];
$conectar = mysql_connect ("SERVIDOR","USUARIO","CLAVE") or die ("Error");
$seleccionar = mysql_select_db ("BD");
/* Aqui actualizamos la bd seria asi
$actualizar = mysql_query("UPDATE tabla SET campo = 'actualizacion' ") or die (Error);
se pone una coma si son mas campos a editar:
$actualizar = mysql_query("UPDATE tabla SET campo = 'actualizacion', campo2 = '' , campo 3.....etc ") or die (Error);
En el ejemplo seria asi:
*/
$actualizar = mysql_query("UPDATE papas SET numero = '$editado' ") or die (Error);
echo "
Tu campo se ha editado correctamente</p>";
?>
Espero y te ayude :)
buenas,
cesar, me da a mi que sabes algo de php, solo una anécdota, usas varias paginas de php cuando perfectamente puedes incluir todo en una hoja.
Ejemplo de lo que he citado en una hoja:
editar.php
$parte=$_GET['parte'];
if ($parte=="1")
{
$conectar = mysql_connect ("SERVIDOR","USUARIO","CLAVE") or die ("Error");
$seleccionar = mysql_select_db ("BD");
$tabla = mysql_query ("SELECT * FROM papas");
?>
<form action="editar.php?tipo=1" method="post">
<table border="0px">
<tr>
<td>Bolsas de papas:</td>
<td><input type="text" name="papas" value="
<?
if(mysql_num_rows($tabla))
{
if ($papas = mysql_fetch_array($tabla))
{
echo $papas['numero'];
}
}
}
elseif ($tipo=="2")
{
$editado = $_POST['papas'];
$conectar = mysql_connect ("SERVIDOR","USUARIO","CLAVE") or die ("Error");
$seleccionar = mysql_select_db ("BD");
/* Aqui actualizamos la bd seria asi
$actualizar = mysql_query("UPDATE tabla SET campo = 'actualizacion' ") or die (Error);
se pone una coma si son mas campos a editar:
$actualizar = mysql_query("UPDATE tabla SET campo = 'actualizacion', campo2 = '' , campo 3.....etc ") or die (Error);
En el ejemplo seria asi:
*/
$actualizar = mysql_query("UPDATE papas SET numero = '$editado' ") or die (Error);
echo "
Tu campo se ha editado correctamente</p>";
}
else{
}
}
Gracias cesar, lo provaré y te diré como me va. /*Me he comprado un librito ("Creacion de un portal con PHP y MySQL , editorial Ra - Ma"), para los ratos libres en el curro. Pero, la verdad es que me estoy liando mas que las sandalias de un romano*/ En fin paciencia, que dicen que es la madre de todas ciencias. Por cierto ¿porque se usa el metodo GET y no POST en este code? ¿No es mas inseguro? Gracias
cesar_ed escribió:Entonces lo que quieres es lo que me habias comentado en otro tema? es facil , si quieres editar solo un campo , puedes editar solo un campo , y si quieres todos puedes editar todos, mediante un form , utilizando la funcion UPDATE de mysql, quedando un ejemplo asi
editar.php
<!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=windows-1252" />
<title>Documento sin título</title>
</head>
<body>
<h1>Editar el numero de papas que comes al dia</h1>
<?php
$conectar = mysql_connect ("SERVIDOR","USUARIO","CLAVE") or die ("Error");
$seleccionar = mysql_select_db ("BD");
$tabla = mysql_query ("SELECT * FROM papas");
?>
<form action="editando.php" method="post">
<table border="0px">
<tr>
<td>Bolsas de papas:</td>
<td><input type="text" name="papas" value="
<?
if(mysql_num_rows($tabla))
{
if ($papas = mysql_fetch_array($tabla))
{
echo $papas['numero'];
}
}
?>
" /></td>
</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Editar" /></td>
</tr>
</table>
</form>
</body>
</html>
Y editando.php
<?php
$editado = $_POST['papas'];
$conectar = mysql_connect ("SERVIDOR","USUARIO","CLAVE") or die ("Error");
$seleccionar = mysql_select_db ("BD");
/* Aqui actualizamos la bd seria asi
$actualizar = mysql_query("UPDATE tabla SET campo = 'actualizacion' ") or die (Error);
se pone una coma si son mas campos a editar:
$actualizar = mysql_query("UPDATE tabla SET campo = 'actualizacion', campo2 = '' , campo 3.....etc ") or die (Error);
En el ejemplo seria asi:
*/
$actualizar = mysql_query("UPDATE papas SET numero = '$editado' ") or die (Error);
echo "
Tu campo se ha editado correctamente</p>";
?>
Espero y te ayude :)
buenas,
cesar, me da a mi que sabes algo de php, solo una anécdota, usas varias paginas de php cuando perfectamente puedes incluir todo en una hoja.
Ejemplo de lo que he citado en una hoja:
editar.php
$parte=$_GET['parte'];
if ($parte=="1")
{
$conectar = mysql_connect ("SERVIDOR","USUARIO","CLAVE") or die ("Error");
$seleccionar = mysql_select_db ("BD");
$tabla = mysql_query ("SELECT * FROM papas");
?>
<form action="editar.php?tipo=1" method="post">
<table border="0px">
<tr>
<td>Bolsas de papas:</td>
<td><input type="text" name="papas" value="
<?
if(mysql_num_rows($tabla))
{
if ($papas = mysql_fetch_array($tabla))
{
echo $papas['numero'];
}
}
}
elseif ($tipo=="2")
{
$editado = $_POST['papas'];
$conectar = mysql_connect ("SERVIDOR","USUARIO","CLAVE") or die ("Error");
$seleccionar = mysql_select_db ("BD");
/* Aqui actualizamos la bd seria asi
$actualizar = mysql_query("UPDATE tabla SET campo = 'actualizacion' ") or die (Error);
se pone una coma si son mas campos a editar:
$actualizar = mysql_query("UPDATE tabla SET campo = 'actualizacion', campo2 = '' , campo 3.....etc ") or die (Error);
En el ejemplo seria asi:
*/
$actualizar = mysql_query("UPDATE papas SET numero = '$editado' ") or die (Error);
echo "
Tu campo se ha editado correctamente</p>";
}
else{
}
}
gjulian escribió:Gracias cesar, lo provaré y te diré como me va. /*Me he comprado un librito ("Creacion de un portal con PHP y MySQL , editorial Ra - Ma"), para los ratos libres en el curro. Pero, la verdad es que me estoy liando mas que las sandalias de un romano*/ En fin paciencia, que dicen que es la madre de todas ciencias. Por cierto ¿porque se usa el metodo GET y no POST en este code? ¿No es mas inseguro? Gracias
TIenes razon , es mas seguro post , pero para llenar datos de formularios importantes como : email , usuario, contraseña entre otras opciones
EL metodo GET se utiliza para obtener variables en la url y solo queremos obtener el id de la fila , no creo que haya algo inseguro en eso.
Bueno en concreto no es para dar seguridad, si no para que haya menos problemas con la pagina y por supuesto para que te compiques menos cuando te vas adentrando en esto del php como lo es qjulian, trato de ponerlo lo mas facil de entender posible , ya que en el mismo archivo php serian mas instrucciones que podrian confundir al interesado.
Bien cesar_ed, sin tus aclaraciones te puedo asegurar que no lo vería tan claro como leyendo tutoriales o libros. El monton de practicas y pruebas que estoy realizando con tu ayuda me estan enseñando muchisimo, gracias. Bueno paso a meterme con el ultimo code.
A ver, me imagino que tengo que crear formulario que tras elegir la fila correspondiente me de la opcion de rectificar los datos que ella contiene ¿no? Pero solo consigo añadir una fila mas. ¿que estoy haciendo mal? Revisamelo porfa.:
$conectar = mysql_connect("localhost","yo", "clave"); $bd = mysql_select_db ("perez_salinas"); $seleccionar = mysql_query ("SELECT * FROM servicios ") or die ("Ha ocurrido un error al conectar a la bd"); $contando_registros = mysql_num_rows($seleccionar);
if($contando_registros <= 0) { echo "<td>No se han encontrado registros en la tabla</td></tr></table></form>"; } else { echo '<td>Selecciona la fila que deseas editar</td>'; echo '<td>'; echo '<select name="id">'; if($contando_registros) { while ($registros = mysql_fetch_array($seleccionar)) { echo '<option value="'.$registros['dia'].'">dia '.$registros['dia'].'</option> '; } } echo '<input type="text" name="id" values="dia">'; echo '</select>';
no no no , lo estas haciendo mal, el formulario que te di es para obtener el numero de filas de tu bd y al seleccionar la fila y dar click en el boton editar con el metodo GET se obtiene el id de la fila que se quiere editar despues de eso se hace otro formulario con los inputs y contenido que tiene esa fila y desde ahi le puedes cambiar algo o editarlo de ahi mandarlo a otro archivo que actualice los datos en la bd .
Hola, aver si lo he entendido. Una vez seleccionada la fila y hacer click en editar me manda a otra pagina editando.php en la que me debe aparecer el 'id ' de la fila seleccionada ¿no? bien, a esta la consulto así :$result = mysql_query("SELECT id, FROM servicios WHERE dia.id IN (select name)") or die (error); . Pero no es correcto ¿verdad? Tambien he probado:$result = mysql_query("SELECT * FROM servicios WHERE id IN (select name)") or die (error); , y no me dan resultado. ¿Como es?
Como no era de ninguna de esas manera seguí googleando y probando hasta que me he cargao todos los datos. Eso me pasa por intentar hacer algo que no entiendo. De modo que si podeis explicarme detalladamente como se hace, para que lo entienda, os lo agradeceré.
gjulian escribió:Como no era de ninguna de esas manera seguí googleando y probando hasta que me he cargao todos los datos. Eso me pasa por intentar hacer algo que no entiendo. De modo que si podeis explicarme detalladamente como se hace, para que lo entienda, os lo agradeceré.
Por el principio, por favor. A ver, creo entender que con el metodo 'GET' y usando el 'select name' la consulta a 'mysql_fetch_array' (con tu code) me devuelve la columna seleccionada y una vez que indico la fila a actualizar y pulsar el boton de envio debería llevarme a otra pagina que debería mostrarme la fila seleccionada ¿no?, bien pues ese es mi primer problema no consigo hacer que se muestre dicha fila. Como digo en el mensaje anterior he estado mirando, leyendo, probando pero no encuentro la solucion. mysql_query ("SELECT aqui no se si va 'id' FROM servicios o que") Y lo segundo, en la pagina de envio, ¿debe de ir de esta manera?: (UPDATE servicios SET dia='$dia', cliente='$cliente', descriccion='$descriccion', coche='$coche', dieta='$dieta'") ¿Aunque solo quisiera actualizar por ejemplo $dia? Gracias.
gjulian escribió:Por el principio, por favor. A ver, creo entender que con el metodo 'GET' y usando el 'select name' la consulta a 'mysql_fetch_array' (con tu code) me devuelve la columna seleccionada y una vez que indico la fila a actualizar y pulsar el boton de envio debería llevarme a otra pagina que debería mostrarme la fila seleccionada ¿no?, bien pues ese es mi primer problema no consigo hacer que se muestre dicha fila. Como digo en el mensaje anterior he estado mirando, leyendo, probando pero no encuentro la solucion. mysql_query ("SELECT aqui no se si va 'id' FROM servicios o que") Y lo segundo, en la pagina de envio, ¿debe de ir de esta manera?: (UPDATE servicios SET dia='$dia', cliente='$cliente', descriccion='$descriccion', coche='$coche', dieta='$dieta'") ¿Aunque solo quisiera actualizar por ejemplo $dia? Gracias.
Es facil , al seleccionar la tabla y darle enviar , te puse un nombre en la url con el id , al darle click en enviar se envia el id por url poniendo hola.php?id= 2 es solo un ejemplo, como podras ver se envia por url , ahora es simplemente obtener la fila usando el metodo GET ejemplo:
$id= $_GET['id']; // Esto hace que obtengamos la variable id de la url //ahora solo obtenemos la fila //Aqui la conexion a db //Y el query donde obtenemos es aqui $obtener_id = mysql_query("SELECT * FROM tutabla WHERE tucampoid = '$id') or die("Error");
Vale ok. hasta aqui todo bien. La fila está obtenida. Ahora ¿en esta misma pagina debe estar el form con los imputs de los campos que quiero actualizar? ¿no? Bien, ¿y ese form envia los nuevos datos desde ota pagina? ¿no? ¿pero como? Lo tengo así:
<? $id = $_GET["id"]; $dia = $_GET["dia"]; $cliente = $_GET["cliente"]; $descriccion =$_GET["descriccion"]; $coche = $_GET["coche"]; $dieta = $_GET["dieta"]; $a_cuenta = $_GET["a_cuenta"]; mysql_connect ("localhost" , "user" , "contraseña"); mysql_select_db ("mi bd"); $actualizar = mysql_query ("UPDATE mayo set dia = '$dia', cliente = '$cliente', descriccion = '$descriccion', coche = '$coche', dieta = '$dieta', a_cuenta = '$a_cuenta' WHERE id = '$id'") or die("Error en actualizando.php") ; echo "<center><h1>EDITADO</h1></center>"; ?>
Y no me actualiza nada. ¿Como es Estoy totalmente atascado y no avanzo.
Cookies
Usamos cookies necesarias y, si lo autorizas, Google Analytics. Puedes cambiar tu elección cuando quieras.