¿Update mediante form?

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
Lo mejor de caerse al tropezar, es volverse a levantar.
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.
Es facil programar "Solo interesate en aprender"
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?
Lo mejor de caerse al tropezar, es volverse a levantar.
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&iacute;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 :)
Es facil programar "Solo interesate en aprender"
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?).
Lo mejor de caerse al tropezar, es volverse a levantar.
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

es asi o me volvi a equivocar?
Es facil programar "Solo interesate en aprender"
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'.
Lo mejor de caerse al tropezar, es volverse a levantar.
entonces puedes hacer algo asi


seleccionar.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&iacute;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?

suerte :D
Es facil programar "Solo interesate en aprender"
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&iacute;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
Lo mejor de caerse al tropezar, es volverse a levantar.
nosabernada escribió:
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&iacute;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{
}
}

Es para mayor seguridad en el archivo

saludos nosaber :wink:
Es facil programar "Solo interesate en aprender"
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.

Suerte :wink:
Es facil programar "Solo interesate en aprender"
Es para mayor seguridad en el archivo

saludos nosaber :wink:



Aham, por supuesto, pero, la seguridad ya la puedes dar de otra manera, no?


Un saludo.
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.

un saludo :)
Es facil programar "Solo interesate en aprender"
En efecto querido amigo, pero

en php, después de las variables, lo que te enseñan son las condiciones, no?

Un saludo.
si , por eso mismo el ya sabe las condiciones y esta adentrandose en mysql.
Es facil programar "Solo interesate en aprender"
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.
Lo mejor de caerse al tropezar, es volverse a levantar.
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>';

echo '</td>';
echo '</tr>';
echo '<tr>';
echo '<td></td>';
echo '<td><input type="submit" value="Editar"></td>';
echo '</tr>';
}

?>


editando.php:

<?
$registros = $_GET["id"];

mysql_connect ("localhost" , "yo" , "clave");
mysql_select_db ("perez_salinas");
$validar = mysql_query ("INSERT INTO servicios( dia )
values ('$registros' )") or die (mysql_error());

echo "<center><h1>EDITADO</h1></center>";
?>



<center><input type=button value=Volver onclick="history.go(-2)"/></center>


<script language="JavaScript" type="text/javascript"/>

</body>
</html>
Lo mejor de caerse al tropezar, es volverse a levantar.
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 .
Es facil programar "Solo interesate en aprender"
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?
Lo mejor de caerse al tropezar, es volverse a levantar.
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é.
Lo mejor de caerse al tropezar, es volverse a levantar.
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é.

Con que parte quieres que empieze
Es facil programar "Solo interesate en aprender"
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.
Lo mejor de caerse al tropezar, es volverse a levantar.
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");

Y listo ves que facil?
Es facil programar "Solo interesate en aprender"
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.
Lo mejor de caerse al tropezar, es volverse a levantar.