Update Mysql php y Alter table

Alter table mysql

En este apartado veremos como modificar nuestra tabla en mysql usando el comando ALTER TABLE

<?php    
    $server="localhost";
    $user="root";
    $password="";

    $mysql = mysqli_connect($server, $user, $password) 
    or die("error");
    mysqli_select_db($mysql, 'practica');

    $result = mysqli_query($mysql, "ALTER TABLE 
    clientes ADD correo VARCHAR(80)
    CHARACTER SET utf8 COLLATE utf8_bin 
    NOT NULL AFTER sexo,
    ADD edad INT(3NOT NULL AFTER correo,
    ADD fecha TIMESTAMP(6NOT NULL AFTER edad");
    if($result){
        echo "correcto";
    }
    else{
        echo "ocurrió un error";
    }
    ?>

Si ejecutamos este código en nuestro navegador y verificamos en nuestra tabla clientes, hemos añadido tres columnas más (correo, edad y fecha). 
Tengamos en cuenta que el campo fecha se actualizará automáticamente cuando se realice la carga de un registro.

Ahora ya tenemos nuestra tabla actualizada y lista para seguir con los demás ejemplos

Update Mysql

La consulta Update es la más larga de todas es mejor verlo con un ejemplo
Para este ejemplo necesitaremos  una página para cargar los datos que tenemos en nuestra tabla  en ella añadiremos un botón que diga actualizar a cada uno de nuestros registros y ese botón debe enviarnos a un formulario donde le cargaremos los demás datos que hacen falta, y necesitaremos otra página que es la que realizará la tarea de actualizar nuestra tabla.

Página 1 la llamaremos pagina1.php
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Página 1</title>
    </head>
    <body>
    <?php
    
    $server="localhost";
    $user="root";
    $password="";

    $mysql = mysqli_connect($server, $user, $password) 
    or die("error");
    mysqli_select_db($mysql, 'practica');

    $result = mysqli_query($mysql, "SELECT 
    id_usuario,nombre,apellido,sexo 
    FROM clientes");
    
    ?>
    <table border="1">
    <tr>
    <th>Nombre</th>
    <th>Apellido</th>
    <th>Sexo</th>
    <th>Correo</th>
    <th>Edad</th>
    <th>Fecha</th>
    <th>Acción</th>
    </tr>
    <?php
    foreach ($result as $row) {
        $nombre=$row['nombre'];
        $apellido=$row['apellido'];
        $sexo=$row['sexo'];
        $user=$row["id_usuario"];
        ?>
        
        <tr>
        <td><?php echo$nombre;?></td>
        <td><?php echo $apellido;?></td>
        <td><?php echo $sexo;?></td>
        <td></td>
        <td></td>
        <td></td>
        <td>
        <form action='buscar.php?id=<?php echo $user;?>' 
        method="GET">
        <input type="submit" value="ACTUALIZAR">
        </form></td>
        
        </tr>
    <?php  
    }
    ?>
    </table>
    </body>
    
</html>

Utilizaremos la misma página en la que mostrábamos los datos que tiene nuestra tabla clientes

Lo que cambia es la siguiente linea de código.
Agregamos un formulario que enviará el id del usuario a otra página llamada buscar.php y le pasamos el id de usuario como parámetro por medio de la función GET. (una aclaración, has notado que en nuestros formularios no hemos agregado nada en el campo id_usuario de nuestra tabla, eso es por que hemos declarado ese campo como autoincrementado, no es necesario que le asignemos un valor ya que al efectuarse un registro este incrementará su valor +1, y es un campo con valor único [clave primaria] lo cual nos permitirá de forma más fácil realizar la tarea de UPDATE ).

<td>
<form action='buscar.php?id=<?php echo $user;?>' 
    method="GET">
<input type="submit" value="ACTUALIZAR">
</form>
</td>



Veamos ahora nuestra página buscar.php

<?php
$idusuario=$_GET["id"];

$server="localhost";
$user="root";
$password="";

$mysql = mysqli_connect($server, $user, $password) 
or die("error");
mysqli_select_db($mysql, 'practica');
$result = mysqli_query($mysql, "SELECT 
nombre,apellido,sexo,correo, edad 
FROM clientes where id_usuario='$idusuario'");
foreach ($result as $row) {
?> 
<form action="update.php" method="POST">
Nombre:
<br>
<input type="text" name="nombre" 
value="<?php echo $row["nombre"];?>">
<br>
Apellido:
<br>
<input type="text" name="apellido" 
value="<?php echo $row["apellido"];?>">
<br>
Sexo:
<br>
<input type="text" name="sexo" 
value="<?php echo $row["sexo"];?>">
<br>
Correo:
<br>
<input type="text" name="correo" 
value="<?php echo $row["correo"];?>">
<br>
Edad:
<br>
<input type="text" name="edad" 
value="<?php echo $row["edad"];?>">
<br>
<input type="hidden" name="id" 
value="<?php echo $idusuario;?>">
<input type="submit" value="Actualizar">
</form>
<?php
}

?>

Está página no es más que un formulario como los que hemos visto.
con la línea de código siguiente buscamos en nuestra tabla el usuario con el id_usuario seleccionado y que pasamos por medio del botón actualizar

    mysqli_query($mysql, "SELECT 
    nombre,apellido,sexo,correo, edad 
    FROM clientes 
    where id_usuario='$idusuario'");



además le estamos pasando a cada input el valor del usuario que hemos seleccionado para actualizar sus datos por medio de la propiedad  value de cada input
.

    <input type="text" name="nombre" 
    value="<?php echo $row["nombre"];?>">


Al pulsar el botón de Actualizar de esta página (buscar.php), nuestros datos se enviarán a la otra página que llamaremos update.php

Veamos el código de la pagina update.php

<?php
$id=$_POST["id"];
$nombre=$_POST["nombre"];
$apellido=$_POST["apellido"];
$sexo=$_POST["sexo"];
$correo=$_POST["correo"];
$edad=$_POST["edad"];

$server="localhost";
$user="root";
$password="";

$mysql = mysqli_connect($server, $user, $password) 
 or die("error");
mysqli_select_db($mysql, 'practica');

$result = mysqli_query($mysql, "
 UPDATE clientes set nombre='$nombre'
apellido ='$apellido' sexo='$sexo'
correo='$correo',  edad='$edad' 
WHERE id_usuario=$id");
if($result){
    echo "Los datos se han actualizado correctamente";
}
else{
    echo "Ocurrió un error al actualizar datos";
}


    

?>

Capturamos todos los campos del formulario enviado por la página anterior


$id=$_POST["id"];
$nombre=$_POST["nombre"];
$apellido=$_POST["apellido"];
$sexo=$_POST["sexo"];
$correo=$_POST["correo"];
$edad=$_POST["edad"];


Luego agregamos nuestra consulta a la tabla, Aquí utilizamos una clausura WHERE.(Le decimos actualizame todos los datos de la tabla clientes DONDE el campo id_usuario sea igual al id de usuario que hemos pasado por medio de formulario).


$result = mysqli_query($mysql, "UPDATE clientes 
set nombre='$nombre', apellido ='$apellido'
sexo='$sexo', correo='$correo',  edad='$edad' 
WHERE id_usuario=$id");


Si nuestra consulta esta correcta nos mostrará un mensaje de que está correcto y de lo contrario nos mostrará un mensaje de error

if($result){
    echo "Los datos se han actualizado correctamente";
}
else{
    echo "Ocurrió un error al actualizar datos";
}


Hasta aquí el código de ejemplo no debe mostrar ningún mensaje de error.


Si esta información te sirvió de ayuda no olvides dejar tus comentarios 

Comentarios