por favor ,ayuda con modificar?

-claudia-linda-

Lanero Regular
27 Abr 2006
19
este es mi formulario en donde envio los datos que seran modificados en el archivo php,pero como puedo dejar en mi codigo php,que si se envia el nombre,solo modifique ese dato,y si se envia la descripcion solo se modifique ese dato.Y cuando el usuario quiera modificar todos los datos,se modifiquen todos.
El problema que tengo,es que si quiero modificar solo el nombre no puedo,y la unica forma que puedo hacerlo,es que modifique todos los datos.pero yo necesito hacerlo por separado,o todos los datos,segun el usuario estime conveniente.

gracias niños y por favor ayuda

Código:
<td> 
Nombre: 
</tr> 
<td> 
<input type=text name=nombre></td> 
</tr> 

<tr> 
<td class='estilocelda'> 
Descripción * # : </td> 
<td> 
<textarea name="descripcion" rows=5 cols=20 
onKeyUp="javascript:this.value=this.value.toUpperCase();">> 
</textarea> 
</tr> 

<input type="submit" value="modificar" name="Modificar" onclick="return formul(this.formulario)"> 
</FORM>

este es mi archivo php en el cual proceso la informacion enviada desde el formulario
PHP:
<?php 
$accion = $_POST['Modificar']; 
if($accion=="modificar") 
{ 

$nombre = $_POST["nombre"]; 
$descripcion = $_POST["descripcion"]; 

include("conexion.php"); 

//aqui me deberia modificar solo nombre 
mysql_db_query ("registro", 
"UPDATE nombres set 
nombre='$nombre' 
where codigo='$codigo'"); 

//aqui me deberia modificar solo descripcion 
mysql_db_query ("registro", 
"UPDATE nombres set 
descripcion='$descripcion' 
where codigo='$codigo'"); 

//aqui me deberia modificar todos los datos 
mysql_db_query ("registro", 
"UPDATE nombres set 
nombre='$nombre', 
descripcion='$descripcion', 
where codigo='$codigo'");
 
Debes ser un poco más explicita con la expliccación, hasta donde entiendo
Lo puedes hacer de dos formas

1. pasar los dos parametros y incluirlos en el update asi uno de ello no se quiera modificar
mysql_db_query ("registro",
"UPDATE nombres set
nombre='$nombre',
descripcion='$descripcion',
where codigo='$codigo'"
);
por ejemplo si descripcion no se quiere moodificar pues no importa

2.
Hacer una pregunta si algun dato a actualizar es vacio
if($nombre=="") //se actualizaría descripcion
{
mysql_db_query ("registro",
"UPDATE nombres set
descripcion='$descripcion'
where codigo='$codigo'"
);

}


ahora para dar una solución más puntual debe explicar un poco mas detalladamente su problema
por ejemplo como toma los datos, etc
 
efectivamente, segun lo que entendi, una opcion es comparar si la variables llega null o vacia "", y de acuerdo a eso armar el sql respectivo.

Saludos
 
gracias miltonfre por ayudarme.


El problema que tengo es que,no puedo modificar solo nombre,ya que para hacerlo,tengo que modificar tambien descripcion.y viceversa con descripcion.usted me puede decir,como debo dejar mi codigo,para que resulte lo que necesito.de lograr modificar por separado o todo junto,segun estime el usuario.

muchas gracias

ahora le explico con codigo
tengo un formulario en donde ingreso los datos que modificare,este es el formulario y envio la informacion a traves del method post,a la pagina proceso_modificar.php
Código:
<table cellspacing="2" cellpadding="2" align=center border=2 align=center>
<FORM name=formulario  action="proceso_modificar.php" method="POST">

<td> 
Nombre: 
</tr> 
<td> 
<input type=text name=nombre></td> 
</tr> 

<tr> 
Cantidad : </td> 
<td> 
<textarea name="cantidad" rows=5 cols=20 
onKeyUp="javascript:this.value=this.value.toUpperCase();">> 
</textarea> 
</tr> 

<tr> 
Descripción : </td> 
<td> 
<textarea name="descripcion" rows=5 cols=20 
onKeyUp="javascript:this.value=this.value.toUpperCase();">> 
</textarea> 
</tr> 

<input type="submit" value="modificar" name="Modificar" onclick="return formul(this.formulario)"> 
</FORM> 
</table>
</html>


esta es la pagina php que recibe los datos de mi formulario,modificacion.html
PHP:
<?php  
$accion = $_POST['Modificar'];  
if($accion=="modificar")  
{  

//aqui recibo los datos enviados de modificar.html
$nombre = $_POST["nombre"];  
$descripcion = $_POST["descripcion"];  

include("conexion.php");  

//aqui me deberia modificar solo nombre,si el usuario lo desea.

mysql_db_query ("registro",  
"UPDATE nombres set  
nombre='$nombre'  
where codigo='$codigo'");  

//aqui me deberia modificar solo descripcion ,si el usuario lo desea 

mysql_db_query ("registro",  
"UPDATE nombres set  
descripcion='$descripcion'  
where codigo='$codigo'");  

//aqui me deberia modificar todos los datos ,al igual que anteriormente si el usuario lo //desea 

mysql_db_query ("registro",  
"UPDATE nombres set  
nombre='$nombre',  
descripcion='$descripcion',  
where codigo='$codigo'");
 
Los 3 querys se llaman igual. Si llamas uno, se ejecutan los 3 y como la ultima es la que actualiza todos los campos, pues tambien se ejecuta y te botará error... o eso creo.

Intenta poner un operador condicional y nombres diferentes a los querys para que te ejecute la que deseas de acuerdo a los parámetros que ingrese el usuario.

O estoy M.F.T.?
 
aqui pregunto si los datos son vacios,pero de igual forma no me actualiza los datos por separados,sino que ytengo que actualizarlos todos,para que cambie la informacion.
cual puede ser el problema?
gracias,donde estara el problema :(

el codigo lo posteo mas abajo,porque en este post,no me salia completo,cuando lo colocaba entre las etiquetas php :( :(,hasta en eso estaba mal :'(
 
ahi esta mi codigo y disculpen,por colocarno en code y no en php :(:(:(
Código:
<?php
 $accion = $_POST['Modificar'];
 if($accion=="modificar")
 {

   $rut                   =   $_POST["rut"];
   $codigo           =   $_POST["codigo"];
   $nombre1               =   $_POST["nombre1"];
   $nombre2               =   $_POST["nombre2"];
   $apellido1             =   $_POST["apellido1"];
   $apellido2             =   $_POST["apellido2"];
   $pass                  =   $_POST["pass"];
   $cargo                 =   $_POST["cargo"];
   $eliminar              =   $_POST["eliminar"];
   $pass_encri        =    md5($pass);

 include("conexion.php");


   if($nombre1!="" and $nombre2!=""
   and $apellido1!="" and $apellido2!="" and $pass_encri!=""
   and $cargo!="" and $eliminar!="")
   {
    mysql_db_query ("registrar",
                   "UPDATE usuarios set
                   codigo ='$codigo',
                   where
                   usu_rut_persona='$rut'");
                  }
                           

if($codigo!="" and $nombre2!=""
   and $apellido1!="" and $apellido2!="" and $pass_encri!=""
   and $cargo!="" and $eliminar!="")
   {
   mysql_db_query ("registrar",
                   "UPDATE usuarios set
                   usu_nombre1='$nombre1',
                   where
                   usu_rut_persona='$rut'");
                   }


  /*if($codigo!="" and $nombre1!=""
   and $apellido1!="" and $apellido2!="" and $pass_encri!=""
   and $cargo!="" and $eliminar!="")
   {
   mysql_db_query ("registrar",
                   "UPDATE usuarios set
                   usu_nombre1='$nombre2',
                   where
                   usu_rut_persona='$rut'");
                   } 


   if($codigo!="" and $nombre1!=""
   and $nombre2!="" and $apellido2!="" and $pass_encri!=""
   and $cargo!="" and $eliminar!="")
   {
   mysql_db_query ("registrar",
                   "UPDATE usuarios set
                   usu_nombre1='$apellido1',
                   where
                   usu_rut_persona='$rut'");
                   }


  if($codigo!="" and $nombre1!=""
   and $nombre2!="" and $apellido1!="" and $pass_encri!=""
   and $cargo!="" and $eliminar!="")
   {
   mysql_db_query ("registrar",
                   "UPDATE usuarios set
                   usu_nombre1='$apellido2',
                   where
                   usu_rut_persona='$rut'");
                   }


   if($codigo!="" and $nombre1!=""
   and $nombre2!="" and $apellido1!="" and $apellido2!=""
   and $cargo!="" and $eliminar!="")
   {
   mysql_db_query ("registrar",
                   "UPDATE usuarios set
                   usu_nombre1='$pass_encri',
                   where
                   usu_rut_persona='$rut'");
                   }


   if($codigo!="" and $nombre1!=""
   and $nombre2!="" and $apellido1!="" and $apellido2!=""
   and $pass_encri!="" and $eliminar!="")
   {
   mysql_db_query ("registrar",
                   "UPDATE usuarios set
                   usu_nombre1='$cargo',
                   where
                   usu_rut_persona='$rut'");
                   }


 if($codigo!="" and $nombre1!=""
   and $nombre2!="" and $apellido1!="" and $apellido2!=""
   and $pass_encri!="" and $cargo!="")
   {
   mysql_db_query ("registrar",
                   "UPDATE usuarios set
                   usu_nombre1='$eliminar',
                   where
                   usu_rut_persona='$rut'");
                   }

  else
  {

   mysql_db_query ("registrar",
                   "UPDATE usuarios set
                   codigo ='$codigo,
                   usu_nombre1='$nombre1',
                   usu_nombre2='$nombre2',
                   usu_apellido1='$apellido1',
                   usu_apellido2='$apellido2',
                   usu_password='$pass_encri',
                   usu_cargo='$cargo',
                   usu_eliminado='$eliminar'

                   where
                   usu_rut_persona='$rut'");


    }  
       mysql_close();
   echo "<script>";
   echo "alert('El o los registros fueron modificados')";
   echo "</script>";
 
  }

  ?>
 
Puedes armar el query dependiendo de los campos que te pasen y que no sean empty.

por ejemplo:

PHP:
//armas el esqueleto del query. Cambia los valores entre "<" y ">" por tus valores reales
// [FIELDS_VALUES] lo vas a cambiar luego por los campos que necesitas actualizar

$query = "UPDATE <table_name> SET [FIELDS_VALUES] WHERE <FIELD> = '<VALUE>'"

//ahora preguntas por los posts/gets que necesitas

if (false === empty($_REQUEST[<VAR_NAME>])
{
    $array_values[] = "<FIELD_NAME> = '{$_REQUEST[<VAR_NAME>]}'";
}

//esto lo haces por cada uno de los posts/gets que estás enviando.
//Si lo tienes bien organizado puedes hacer un foreach al $_REQUEST y te sale mucho mejor.

//para un mejor ejemplo:

if (false === empty($_REQUEST['nombre'])
{
    $array_values[] = "nombre = '" . $_REQUEST['nombre'] . "'";
}

if (false === empty($_REQUEST['apellido'])
{
    $array_values[] = "apellido= '" . $_REQUEST['apellido'] . "'";
}

/*
En este caso estás tomando los valores para un campo de la tabla que se llama "nombre" y otro que se llama "apellido", siempre y cuando haya sido submitida información que corresponda a esos nombres.

Luego de tener toda la info (en este caso sólo dos fields), haces un implode.
*/

$str_update_fields_values = implode(", ", $array_values);

/*
implode toma un array y lo convierte en un string, con los elementos del array separados por el primer parámetro de la función implode (en este caso, <coma espacio>).

finalmente, puedes reemplazar en el $query inicial el substring "[FIELDS_VALUES]" por la variable $str_update_fields_values.

así:

*/

$query = str_replace("[FIELDS_VALUES]", $str_update_fields_values, $query);

/*
Esta línea busca el string "[FIELDS_VALUES]", lo cambia por el contenido de la variable $str_update_fields_values y retorna el nuevo string. (el cual vuelves a guardar en $query).

Luego ejecutas $query, como siempre lo haces.

*/

Si no estoy muy dormido, debe funcionar.
 
Intenta de la siguiente manera

<?php
$accion
= $_POST['Modificar'];
if(
$accion=="modificar")
{

$nombre = $_POST["nombre"];
$descripcion = $_POST["descripcion"];

include(
"conexion.php");

if($descripcion =="")
{
mysql_db_query ("registro",
"UPDATE nombres set
nombre='$nombre'
where codigo='$codigo'"
);
}
else
if($nombre=="")
{


mysql_db_query ("registro",
"UPDATE nombres set
descripcion='$descripcion'
where codigo='$codigo'"
);
}
else
{
mysql_db_query ("registro",
"UPDATE nombres set
nombre='$nombre',
descripcion='$descripcion',
where codigo='$codigo'"
);
}
}//end del primer else


la otra forma la puedes hacer:
Captura ambos valores(descripcion y nombre), ambbos los pasa modificados o no y arma el query con estos valores y simplemente
mysql_db_query ("registro",
"UPDATE nombres set
nombre='$nombre',
descripcion='$descripcion',
where codigo='$codigo'"
);

si ves incluyes en el Update ambos campos, uno de esos puede haberse modificado o no
 
En realidad veo esto más como un problema de Ingenieria de Desarrollo de Software, que un problema de PHP como tal. Lo que puedo darte es una recomendación: modifica siempre todos los datos, a menos que sea estrictamente necesario una modificación selectiva de datos.

Haciendo una modificación selectiva de información puede estarle agregando una complejidad innecesaria a tu aplicación, trata los elementos del registro como un todo y operalos como un solo elemento. Si la decisión de actualizar estrictamente los campos modificados fue por rendimiento AH AH .. mantener 2, 3 ... n UPDATES cuando podrías tener uno solo, no vale la pena. A menos que sea realmente necesario !!! que sería una caso bien extraordinario.
 
hola,de esta manera me modifica bien,pero tengo problemas con el campo password,ya que si dejo vacio el campo password en el formulario,me actualiza como campo null ,osea deja en blanco el campo de la base de datos.
esto me pasa si el usuario no desea modificarlo,porque solo realizara una modificacion en su cargo(por ejemplo).
como puedo solucionar ese problema?

gracias niños por la ayuda
PHP:
if( $pass_encri=="" and $cargo=="" and $eliminar=="")
   {
    mysql_db_query ("registros",
                   "UPDATE nombres set
                   codigo ='$codigo'
                   where
                   usu_rut_persona='$rut'");
                  }

//aqui tengo el problema
if($codigo==""  and $cargo=="" and $eliminar=="")
   {
   mysql_db_query ("registros",
                   "UPDATE usuarios set
                   usu_password='$pass_encri'
                   where
                   usu_rut_persona='$rut'");
                   }


   if($codigo==""  and $pass_encri=="" and $eliminar=="")
   {
   mysql_db_query ("registros",
                   "UPDATE usuarios set
                   usu_cargo='$cargo'
                   where
                   usu_rut_persona='$rut'");
                   }


   if($codigo==""  and $pass_encri==""  and $cargo=="")
   {
   mysql_db_query ("registros",
                   "UPDATE usuarios set
                   usu_eliminado='$eliminar'
                   where
                   usu_rut_persona='$rut'");
                   }


  else
  {

   mysql_db_query ("registros",
                   "UPDATE usuarios set
                   codigo ='$codigo',
                   usu_password='$pass_encri',
                   usu_cargo='$cargo',
                   usu_eliminado='$eliminar'

                   where
                   usu_rut_persona='$rut'");


    }
 
-claudia-linda- dijo:

Hola

Entonces por que no verificas si el password es null, y de ser asi, que no lo ingrese.
Tambien podrias obligar a que en el formulario se ingrese algo en el password.
O preguntar si la longitud de la cadena de caracteres que representa el password es de longitud cero, y si es asi, no lo actualizas.
 
-claudia-linda- dijo:

Bueno, aunque yo personalmente optaria por escribir una sola sentencia SQL que dependa de la informacion que no entre vacia.

Aclaro que hace rato que no toco php, asi que pueden haber errocitos de sintaxis.


PHP:
$sentencia = "";
if($codigo != ""){
   $sentencia = "UPDATE usuarios";
   $sentencia = $sentencia." set codigo = '".$codigo."'";   
}

if($pass_encri != ""){
   if($sentencia == ""){
      $sentencia = "UPDATE usuarios";
      $sentencia = $sentencia." set usu_password = '".$pass_encri."'";
   }else{
      $sentencia = $sentencia.", usu_password = '".$pass_encri."'";
   }
}

if($cargo != ""){
   if($sentencia == ""){
      $sentencia = "UPDATE usuarios";
      $sentencia = $sentencia." set usu_cargo = '".$cargo."'";
   }else{
      $sentencia = $sentencia.", usu_cargo = '".$cargo."'";
   }
}

if($eliminar != ""){
   if($sentencia == ""){
      $sentencia = "UPDATE usuarios";
      $sentencia = $sentencia." set usu_eliminado = '".$eliminar."'"
   }else{
      $sentencia = $sentencia.", usu_eliminado = '".$eliminar."'";
   }
}

if($sentencia != ""){
	$sentencia = $sentencia." where usu_rut_persona = '".$rut."'";
	mysql_db_query ("registros",$sentencia);                  
}else{
	//mostrar un error
}
 
hola,gracias por la ayuda.
aqui me pregunto si el password es null,de serlo,me deberia mostrar el mensaje de no modificado,y el campo password de la tabla,deberia quedar como estaba,sin embargo,si yo no modifico el campo password,el sistema me ingresa informacion en blanco.

como lo puedo arreglar?

PHP:
//aqui pregunto si es NULL
 if($pass_encri==NULL)
 {
         echo"password sin modificacion";
         }

//aqui deberia modificar
else if($codigo_rol!=""  and $cargo!="" and $eliminar!="")
   {
   mysql_db_query ("productos",
                   "UPDATE usuarios set
                   usu_password='$pass_encri'
                   where
                   usu_rut_persona='$rut'");
                   }
 
[WT]Pollux dijo:
Hola

Entonces por que no verificas si el password es null, y de ser asi, que no lo ingrese.
Tambien podrias obligar a que en el formulario se ingrese algo en el password.
O preguntar si la longitud de la cadena de caracteres que representa el password es de longitud cero, y si es asi, no lo actualizas.

como puedo preguntar si la longitud de la cadena de caracteres que representa el password es de longitud cero,me puedes dar un ejemplo.

ya que al verificar si es null,no me resulta.
gracias
 
ahora realize una consulta,para comprobar,si lo que entra esta vacio,pero tampoco me resulta

en donde estara la falla :(?
gracias

esta es la consulta:
PHP:
//le asigno la consulta que realizo a la tabla,para sacar el password 
$consulta=mysql_db_query("productos","select usu_password from usuarios 
where usu_rut_persona='$rut'"); 
//aca recupero la fila,y se la asigno a la variable vacio 
$vacio = mysql_fetch_assoc($consulta); 

/*aca si vacio es igual a NULL,me deberia mostrar ese mensaje,pero no lo hace 
y me modifica el campo password,con valor NULL*/ 
if(($vacio)==NULL) 
{ 
echo "<script>"; 
echo "alert('no modificado');"; 
echo "</script>"; 
} 
/*si el campo no es vacio,deberia pasar a modificar,porque eso quiere decir, 
que se ingreso algo en el campo password*/ 
else if(!empty($codigo_rol)and !empty($cargo)and !empty($eliminar)) 
{ 
mysql_db_query ("productos", 
"UPDATE usuarios set 
usu_password='$pass_encri' 
where 
usu_rut_persona='$rut'"); 
}
 
-claudia-linda- dijo:
ahora realize una consulta,para comprobar,si lo que entra esta vacio,pero tampoco me resulta

en donde estara la falla :(?
gracias .........

Hola, si usaste lo que te mande a ver si funciona???.

Para saber si la longitud es 0 se usa $longitud = strlen($cadena);

podrias tabien comprobar que lo que ingresan no tenga caracteres en blanco al inicio, asi, si el password esta en blanco no lo aceptas, o mejor, mirar que tenga por lo menos 6 caracteres, o algo similar. tambien, muestra con javascript, en un mensajito de alerta lo que hay en el password a ver que es lo que esta pasando.

Otra cosa mas, muestra la sentencia sql a ver si si es consistente y si si hace lo que estas esperando que haga

Suerte.
 
[WT]Pollux dijo:
Hola, si usaste lo que te mande a ver si funciona???.

Para saber si la longitud es 0 se usa $longitud = strlen($cadena);

podrias tabien comprobar que lo que ingresan no tenga caracteres en blanco al inicio, asi, si el password esta en blanco no lo aceptas, o mejor, mirar que tenga por lo menos 6 caracteres, o algo similar. tambien, muestra con javascript, en un mensajito de alerta lo que hay en el password a ver que es lo que esta pasando.

Otra cosa mas, muestra la sentencia sql a ver si si es consistente y si si hace lo que estas esperando que haga

Suerte.

muchas gracias por tu ayuda,utilize strlen,para comprobar si la cadena tenia valor de 0 y luego que el password tuviera,como minimo 6 caracteres.
 

Los últimos temas