Foros del Web » Programando para Internet » PHP »

problema con form php que actualiza registros

Estas en el tema de problema con form php que actualiza registros en el foro de PHP en Foros del Web. Buenas, tengo un script que recoge los datos de una BD y los mete en un formulario para luego actualizarlos con un sentencia update. El ...
  #1 (permalink)  
Antiguo 13/07/2009, 12:23
 
Fecha de Ingreso: agosto-2007
Mensajes: 44
Antigüedad: 16 años, 8 meses
Puntos: 0
problema con form php que actualiza registros

Buenas, tengo un script que recoge los datos de una BD y los mete en un formulario para luego actualizarlos con un sentencia update.

El problema es que no me recoge bien el registro que le paso con POST:
Me da error que no encuentra registros (1064) al hacer el SELECT. Creo que tengo un problema con la estructura, es decir los {}.

Gracias gente, yo ya estoy

Aquí el script:

Código PHP:

<?php

include ("conexion.php");
$id_usuari=$_POST["id_usuari"];            //recogo el valor de id usuario i lo asigno a la variable
                
                
if($_POST['modificar']) {
                    
$result=mysql_query("SELECT * FROM usuaris WHERE id_usuari=".$id_usuari$conexion);
                    if(
$result) {
                        
$numFilas=mysql_affected_rows($conexion);
                        echo 
$numFilas." Registre carregat correctament";
                    } else {
                        
$numErr=mysql_errno($conexion);
                        
$descErr=mysql_error($conexion);
                        echo 
"No s'ha pogut carregar el registre<br />";
                        echo 
"Nº error: ".$numErr." * Descipción: ".$decErr;
                    
                    }
                    
                    if(
$result) {
                        while(
$fila=mysql_fetch_array($result)) {
                            
?>
                            <center><table>
                                <tr>
                                    <td align="center" valign="middle">
                                    <form name="frmActualizar" action="modificarusuari.php" method="POST" >
                                        <input type="hidden" name="id_usuari" value="<?php echo $fila[id_usuari]; ?>" />
                                        nom_usuari: <input type="text" name="nom_usuari" size="20" value="<?php echo $fila[nom_usuari]; ?>" /><br />
                                        dep_usuari: <input type="text" name="dep_usuari" size="10" value="<?php echo $fila[dep_usuari]; ?>" /><br /><br />
                                        <input type="submit" name="actualizar" value="actualizar" />
                                    </form>
                                    </td>
                                </tr>
                            </table>
                            </center>
                            <br /><br />
                            <?php
                        
}

                } else if(
$_POST['actualizar']) {
                    
$id_usuari=$_POST["id_usuari"];
                    
$nom_usuari=$_POST['nom_usuari'];
                    
$num_plazas=$_POST['dep_usuari'];
                    
                    
$result=mysql_query("UPDATE usuaris SET nom_usuari='".$nom_usuari."', dep_usuari=".$dep_usuari." WHERE id_usuari=".$id_usuari$conexion);
                    if(
$result) {
                        
$numFilas=mysql_affected_rows($conexion);
                        echo 
$numFilas." FILAS ACTUALITZADES .";
                    } else {
                        
$numErr=mysql_errno($conexion);
                        
$descErr=mysql_error($conexion);
                        echo 
"No se pudo actualizar el registro<br />";
                        echo 
"Nº de error: ".$numErr." * Descipción: ".$decErr;
                    }
                }
                
                
mysql_close($conexion);
            }
        
?>
Gracias de antemano
  #2 (permalink)  
Antiguo 13/07/2009, 13:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: problema con form php que actualiza registros

Te faltarían las comillas en tu variable dep_usuari.

Saludos.
  #3 (permalink)  
Antiguo 15/07/2009, 04:05
 
Fecha de Ingreso: agosto-2007
Mensajes: 44
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: problema con form php que actualiza registros

Muchas gracias por la respuesta, me ha funcionado (en parte).
Bien, he puesto las comillas que me faltaban y alguna cosa más, ahora me carga los datas en el formulario, pero al darle al botón acutalizar, no me los cambia, se me queda en blanco. Seguramente el error esta a partir del else if($_POST['actualizar'])

Me parece que la lio en la sentencia SQL, que soy un zoquete con la sintaxis. Estoy aprendiendo a base de ostias...


Código PHP:

<?php

include ("conexion.php");
$id_usuari=$_POST["id_usuari"];            
                
                if(
$_POST['modificar']) {
                    
$result=mysql_query("SELECT * FROM usuaris WHERE id_usuari=".$id_usuari$conexion);
                    if(
$result) {
                        
$numFilas=mysql_affected_rows($conexion);
                        echo 
$numFilas." Registre carregat correctament";
                    } else {
                        
$numErr=mysql_errno($conexion);
                        
$descErr=mysql_error($conexion);
                        echo 
"No s'ha pogut carregar el registre<br />";
                        echo 
"Nº error: ".$numErr." * Descipción: ".$decErr;
                    
                    }
                    
                    if(
$result) {
                        while(
$fila=mysql_fetch_array($result)) {
                            
?>
                            <center><table>
                                <tr>
                                    <td align="center" valign="middle">
                                    <form name="frmActualizar" action="modificarusuari.php" method="POST" >
                                        <input type="hidden" name="id_usuari" value="<?php echo $fila[id_usuari]; ?>" />
                                        nom_usuari: <input type="text" name="nom_usuari" size="20" value="<?php echo $fila[nom_usuari]; ?>" /><br />
                                        dep_usuari: <input type="text" name="dep_usuari" size="10" value="<?php echo $fila[dep_usuari]; ?>" /><br /><br />
                                        <input type="submit" name="actualizar" value="actualizar" />
                                    </form>
                                    </td>
                                </tr>
                            </table>
                            </center>
                            <br /><br />
                            <?php
                        
}

                } else if(
$_POST['actualizar']) {
                    
$id_usuari=$_POST["id_usuari"];
                    
$nom_usuari=$_POST["nom_usuari"];
                    
$num_plazas=$_POST["dep_usuari"];
                    
                    
$result=mysql_query("UPDATE usuaris SET nom_usuari='".$nom_usuari."', dep_usuari='".$dep_usuari."' WHERE id_usuari=".$id_usuari$conexion);
                    if(
$result) {
                        
$numFilas=mysql_affected_rows($conexion);
                        echo 
$numFilas." FILAS ACTUALIZADAS CORRECTAMENTE.";
                    } else {
                        
$numErr=mysql_errno($conexion);
                        
$descErr=mysql_error($conexion);
                        echo 
"No se pudo actualizar el registro<br />";
                        echo 
"Nº de error: ".$numErr." * Descipción: ".$decErr;
                    }
                }
                
                
mysql_close($conexion);
            }
        
?>

Gracias

Última edición por guillegm; 15/07/2009 a las 04:08 Razón: código mal entrado
  #4 (permalink)  
Antiguo 15/07/2009, 09:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: problema con form php que actualiza registros

Habilita el mostrar errores usando:
Código php:
Ver original
  1. ini_set('display_errors', 'On');

Para que veas los posibles errores.

Saludos.
  #5 (permalink)  
Antiguo 15/07/2009, 16:02
 
Fecha de Ingreso: agosto-2007
Mensajes: 44
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: problema con form php que actualiza registros

Si pongo ese código dentro del if de actualizar, no se visualiza nada. Si lo pongo al principio del script, me aparecen unos valores dentro de los campos que carga el forumulario.

Alguien le puede echar un vistazo al código?
La primera parte va bien, me carga el formulario y la información de los campos, pero al hacer el update no funciona.

Gracias, de verdad
  #6 (permalink)  
Antiguo 15/07/2009, 21:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: problema con form php que actualiza registros

Revisa que tengas las variables necesarias, haz un var_dump($_POST) para que veas las variables que estas recibiendo.

Saludos.
  #7 (permalink)  
Antiguo 21/07/2009, 08:24
 
Fecha de Ingreso: agosto-2007
Mensajes: 44
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: problema con form php que actualiza registros

Cita:
Iniciado por GatorV Ver Mensaje
Revisa que tengas las variables necesarias, haz un var_dump($_POST) para que veas las variables que estas recibiendo.

Saludos.
Creo que recibo todas las variables. He colocado las variables al principio del script y me dice este mensaje:

array(4) { ["id_usuari"]=> string(1) "9" ["nom_usuari"]=> string(5) "Messi" ["dep_usuari"]=> string(6) "Davant" ["actualizar"]=> string(10) "actualizar" }

Por otra parte he mirado y remirado el código y los {} pero esta bien.

Por que no me actualiza los valores con el else if($_POST['actualizar'] ???? es a partir de ahí donde esta mal, y no lo se ver....

Por si os lo quereis mirar, el script lo teneis aqui en txt proves.thewilfamily.com/modificarusuari.txt con el (http delante)

Gracias
  #8 (permalink)  
Antiguo 21/07/2009, 08:40
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: problema con form php que actualiza registros

Ok intenta con esta parte.


Código PHP:
Ver original
  1. include ("conexion.php");
  2. $id_usuari=$_POST["id_usuari"];            
  3.                
  4.                 if( isset($_POST['modificar']) ) {
  5.                     $result = mysql_query("SELECT * FROM usuaris WHERE id_usuari=".$id_usuari, $conexion);
  6.                     if( $result ) {
  7.                
  8.                         $numFilas=mysql_affected_rows($conexion);
  9.                        
  10.                     echo $numFilas." Registre carregat correctament";
  11.                     }
  12.                 else {
  13.                         $numErr=mysql_errno($conexion);
  14.                         $descErr=mysql_error($conexion);
  15.                         echo "No s'ha pogut carregar el registre<br />";
  16.                         echo "Nº error: ".$numErr." * Descipción: ".$decErr;
  17.                    
  18.                     }
  19.                    
  20.                     if( mysql_num_rows($result) ) {
  21.                         while($fila = mysql_fetch_array($result) ) {
  22.                             ?>
  23.                             <center><table>
  24.                                 <tr>
  25.                                     <td align="center" valign="middle">
  26.                                     <form name="frmActualizar" action="modificarusuari.php" method="POST" >
  27.                                         <input type="hidden" name="id_usuari" value="<?php echo $fila["id_usuari"]; ?>" />
  28.                                         nom_usuari: <input type="text" name="nom_usuari" size="20" value="<?php echo $fila["nom_usuari"]; ?>" /><br />
  29.                                         dep_usuari: <input type="text" name="dep_usuari" size="10" value="<?php echo $fila["dep_usuari"]; ?>" /><br /><br />
  30.                                         <input type="submit" name="actualizar" value="actualizar" />
  31.                                     </form>
  32.                                     </td>
  33.                                 </tr>
  34.                             </table>
  35.                             </center>
  36.                             <br /><br />
  37.                             <?php
  38.                         }
  39.  
  40.                     }
  41.              }
  42.              
  43.              else if(isset($_POST['actualizar'])) {
  44.                     $id_usuari=$_POST["id_usuari"];
  45.                     $nom_usuari=$_POST["nom_usuari"];
  46.                     $num_plazas=$_POST["dep_usuari"];
  47.                    
  48.                     $result = mysql_query("UPDATE usuaris SET nom_usuari='".$nom_usuari."', dep_usuari='".$dep_usuari."' WHERE id_usuari=".$id_usuari, $conexion);
  49.                     if($result) {
  50.                         $numFilas=mysql_affected_rows($conexion);
  51.                         echo $numFilas." FILAS ACTUALIZADAS CORRECTAMENTE.";
  52.                     }
  53.                 else {
  54.                         $numErr=mysql_errno($conexion);
  55.                         $descErr=mysql_error($conexion);
  56.                         echo "No se pudo actualizar el registro<br />";
  57.                         echo "Nº de error: ".$numErr." * Descipción: ".$decErr;
  58.                     }
  59.                 }
  60.                
  61.                 mysql_close($conexion);
  #9 (permalink)  
Antiguo 21/07/2009, 09:13
 
Fecha de Ingreso: agosto-2007
Mensajes: 44
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: problema con form php que actualiza registros

Muchas Gracias, ha funcionado.

Pero porque??

mirando tu código veo que en cada if añades isset.

Para que sirve?

Muchas gracias gix2.
  #10 (permalink)  
Antiguo 21/07/2009, 09:22
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: problema con form php que actualiza registros

Real mente el problema estava
Código PHP:

 if( mysql_num_rows($result) ) {
                        while($fila = mysql_fetch_array($result) ) {
                            ?>
                            <center><table>
                                <tr>
                                    <td align="center" valign="middle">
                                    <form name="frmActualizar" action="modificarusuari.php" method="POST" >
                                        <input type="hidden" name="id_usuari" value="<?php echo $fila["id_usuari"]; ?>" />
                                        nom_usuari: <input type="text" name="nom_usuari" size="20" value="<?php echo $fila["nom_usuari"]; ?>" /><br />
                                        dep_usuari: <input type="text" name="dep_usuari" size="10" value="<?php echo $fila["dep_usuari"]; ?>" /><br /><br />
                                        <input type="submit" name="actualizar" value="actualizar" />
                                    </form>
                                    </td>
                                </tr>
                            </table>
                            </center>
                            <br /><br />
                            <?php
                        
}
 
                    } 
             } 
## Esta llave cierra el POST modificar , en tu codigo no la tienes
El problema era que estavas en globando todo en if( POST["modifcar"] )
tenias que cerrar el if post[modificar ] justo antes del else if.


La funcion isset , verifica si esta definida una variable
http://www.php-es.com/function.isset.html
  #11 (permalink)  
Antiguo 21/07/2009, 09:35
 
Fecha de Ingreso: agosto-2007
Mensajes: 44
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: problema con form php que actualiza registros

muchas gracias, no tuve ojos en ver el fallo. Sabia que iba por ahí...+

Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:19.