ayuda con php y msql

jesusjalpan

Bovino adolescente
#1
hola estoy practicando para un examen que voy a tener de programacion web y tengo algunas dudas
estoy haciendo pruebas basicas de php y mysql lo de insertar modificar y borrar
ya inserto pero ahora quiero modificar algun registros de los que tengo en la base y no lo hace solo vueve a isertar un nuevo registro y yo quierio que actualize

alguie me puede ayudar este es mi codigo

<html>
<head>
<title> pagina de prueba</title>
</head>
<FORM ACTION="prueba.php"METHOD="POST">
NOMBRE:<br>
<INPUT TYPE="text" name="nombre" value=""><br>
DIRECCION:<br>
<INPUT TYPE="text" name="direccion" size="30" value=""><br>
SEXO:<br>
<INPUT type="radio" name= "sexo" value="Hombre"> Hombre<br>
<INPUT type="radio" name="sexo" value="Mujer"> Mujer<br>



ESTADO:<br>
<SELECT name= "estado">

<option> elige un estado
<OPTION> SAN LUIS POTOSI
<OPTION> QUERETARO
<OPTION> ZACATECAS
<OPTION> JALISCO
<OPTION> DF
<OPTION> NUEVO LEON
<OPTION> SINALOA
<OPTION> TAMAULIPAS
</SELECT>

Fecha de nacimiento:<br>
DIA:
<SELECT name= "dia">

<option> elige un dia
<OPTION> 01
<OPTION> 02
<OPTION> 03
<OPTION> 04
<OPTION> 05
<OPTION> 06
<OPTION> 07
<OPTION> 08
</SELECT>
MES:
<SELECT name= "mes">

<option> elige un mes
<OPTION> 01
<OPTION> 02
<OPTION> 03
<OPTION> 04
<OPTION> 05
<OPTION> 06
<OPTION> 07
<OPTION> 08
</SELECT>

AÑO:
<SELECT name= "año">

<option> elige un año
<OPTION> 1999
<OPTION> 2000
<OPTION> 2001
<OPTION> 2004
<OPTION> 2005
<OPTION> 2006
<OPTION> 2007
<OPTION> 2008
</SELECT>



<INPUT TYPE="submit" value="aceptar">



<?php


$nombre=$_POST['nombre'];
$direccion=$_POST['direccion'];
$sexo=$_POST['sexo'];
$dia=$_POST['dia'];
$mes=$_POST['mes'];
$año=$_POST['año'];
$fecha=$año.$mes.$dia;
$estado=$_POST['estado'];





$conexion=mysql_connect("localhost","root","")or die("error en la conexion");

mysql_select_db("prueba",$conexion);


$consulta ="UPDATE alumnos SET direccion='$direccion', estado='$estado' WHERE nombre='$nombre'";

$rs = mysql_query($consulta);
if($rs == false){
echo'<p>error al modifocar los datos</p>';
}else{
echo'<p>los datos se modificaron correctamente</p>';
}

mysql_close($conexion);

?>



</html>



este es el codigo primero tengo un formulario y despues esta lo de php porfa si alguien sabe que me ayude porfa gracias
 
#2
hola estoy practicando para un examen que voy a tener de programacion web y tengo algunas dudas
estoy haciendo pruebas basicas de php y mysql lo de insertar modificar y borrar
ya inserto pero ahora quiero modificar algun registros de los que tengo en la base y no lo hace solo vueve a isertar un nuevo registro y yo quierio que actualize

alguie me puede ayudar este es mi codigo

<html>
<head>
<title> pagina de prueba</title>
</head>
<FORM ACTION="prueba.php"METHOD="POST">
NOMBRE:<br>
<INPUT TYPE="text" name="nombre" value=""><br>
DIRECCION:<br>
<INPUT TYPE="text" name="direccion" size="30" value=""><br>
SEXO:<br>
<INPUT type="radio" name= "sexo" value="Hombre"> Hombre<br>
<INPUT type="radio" name="sexo" value="Mujer"> Mujer<br>



ESTADO:<br>
<SELECT name= "estado">

<option> elige un estado
<OPTION> SAN LUIS POTOSI
<OPTION> QUERETARO
<OPTION> ZACATECAS
<OPTION> JALISCO
<OPTION> DF
<OPTION> NUEVO LEON
<OPTION> SINALOA
<OPTION> TAMAULIPAS
</SELECT>

Fecha de nacimiento:<br>
DIA:
<SELECT name= "dia">

<option> elige un dia
<OPTION> 01
<OPTION> 02
<OPTION> 03
<OPTION> 04
<OPTION> 05
<OPTION> 06
<OPTION> 07
<OPTION> 08
</SELECT>
MES:
<SELECT name= "mes">

<option> elige un mes
<OPTION> 01
<OPTION> 02
<OPTION> 03
<OPTION> 04
<OPTION> 05
<OPTION> 06
<OPTION> 07
<OPTION> 08
</SELECT>

AÑO:
<SELECT name= "año">

<option> elige un año
<OPTION> 1999
<OPTION> 2000
<OPTION> 2001
<OPTION> 2004
<OPTION> 2005
<OPTION> 2006
<OPTION> 2007
<OPTION> 2008
</SELECT>



<INPUT TYPE="submit" value="aceptar">



<?php


$nombre=$_POST['nombre'];
$direccion=$_POST['direccion'];
$sexo=$_POST['sexo'];
$dia=$_POST['dia'];
$mes=$_POST['mes'];
$año=$_POST['año'];
$fecha=$año.$mes.$dia;
$estado=$_POST['estado'];





$conexion=mysql_connect("localhost","root","")or die("error en la conexion");

mysql_select_db("prueba",$conexion);


$consulta ="UPDATE alumnos SET direccion='$direccion', estado='$estado' WHERE nombre='$nombre'";

$rs = mysql_query($consulta);
if($rs == false){
echo'<p>error al modifocar los datos</p>';
}else{
echo'<p>los datos se modificaron correctamente</p>';
}

mysql_close($conexion);

?>



</html>



este es el codigo primero tengo un formulario y despues esta lo de php porfa si alguien sabe que me ayude porfa gracias
Pero, que error te marca ?
 

jesusjalpan

Bovino adolescente
#3
ninguno solo que enves de actualizar el registro pone otro registro nuevo y yo lo que quoero es que me cambie datos del que ya esta en la base por los datos que le estoy dando
 

amic_182

Bovino adicto
#4
Para empezar tus <OPTION> no tienen el atributo value; sea lo que selecciones, $_POST['estado'] siempre va a estar vacio.

Por otra parte tienes clausulas peligrosisimas, entiendo que esto es para un examen de programacion, pero debes ser mas cauteloso al programar. Estas pasando input del usuario directamente a la base de datos (terrible error).

La manera fea y poco profesional de "limpiar" input del usuario es usando mysql_esacpe_real_strings o algo asi, pero te digo... es la manera fea, poco profesional e insegura que los novatillos de PHP utilizan para "limpiar" input.

Por otra parte, haces updates basados en el nombre del usuario.
Que tal si tu base de datos tiene
Juan Perez, Tamaulipas
Juan Ramirez, Tabasco
Juan Chavez, Sinaloa

y luego tu corres la siguiente clausula
UPDATE `personas` SET `estado` = "Estado de Mexico" WHERE `nombre` = "Juan";


De pronto todos los registros cuyo nombre sea Juan, seran movidos al Estado de Mexico... un comportamiento definitvamente no deseado. Todos los UPDATES trata de hacerlos a traves de un numero no adivinable, yo generalmente utilizo un hash.

Los novatillos te diran "usa el ID del usuario", pero tu no quieres ser un novatillo verdad? El ID del usuario se puede adivinar, porque tiende a incrementar de 1 en 1, asi que es muy probable que el usuario con ID =1 , sea el usuario con mas altos privilegios en un sistema. En cambio si utilizas hashes, sera muy dificil tratar de adivinar cual usuario fue el primero en registrarse, o cosas mas importantes que se puedan obtener a traves del ID del usuario.


Otra cosa que los novatillos te diran son tus condiciones,
veo que utilizas

if($rs==false) {
echo "error";
} else {
echo "exito";
}

Obtendras el mismo resultado si escribes:

$mensaje = ($rs)?"Exito":"Error"
echo $mensaje;


Finalmente, yo escribira lo siguiente asi:

$consulta = "UPDATE `alumnos` SET `direccion`=".$direccion.",`estado`=".$estado."WHERE `nombre`=".$nombre;

Pero te recuerdo, esa es la manera en que los novatillos hacen programas en PHP. Si te quieres hacer bueno, empezaria a estudiar PDO enPHP
 
Arriba