Insertar datos en PHP con POO

Te voy a mostrar como guardar datos con POO (Programación orientado a Objetos ) en PHP.

Crear la tabla mensaje de base de datos.

--
-- Estructura de tabla para la tabla `mensaje`
--

CREATE TABLE `mensaje` (
  `id` int(11) NOT NULL,
  `titulo` varchar(100) COLLATE utf16_spanish2_ci NOT NULL,
  `mensaje` varchar(500) COLLATE utf16_spanish2_ci NOT NULL,
  `usuario` int(11) NOT NULL,
  `desde` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `leido` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf16 COLLATE=utf16_spanish2_ci;

Un código para coger los datos y pasar los parámetros para guardar los datos a la base de datos. Crear una clase de php «message.php»

<?php // es para importar el modelo
include ('ModeloMensaje.php');

// obtener los datos del formulario
$parametro['asunto']  = $_POST['asunto'];
$parametro['mensaje'] = $_POST['mensaje'];

// crear clase 
$message = new ModeloMensaje;
// llamar desde la funcion de insertar
$resultado = $message->insert_mensaje($parametro);

// si es verdado entonces se muestra el mensaje
if ($resultado['success']==TRUE)
{
  $resmes = $resultado['message'];
  echo '<div class="alert alert-success" role="alert"> '.$resmes.' </div>';
}
else{
  $resmes = $resultado['message'];
  echo '<div class="alert alert-danger" role="alert"> '.$resmes.' </div>';
}
?>

Agregar formulario

<form action="message.php" method="post">
  <div class="form-group">
    <label for="exampleFormControlInput1">Asunto</label>
    <input type="text" class="form-control" name="asunto">
  </div>

  <div class="form-group">
    <label for="exampleFormControlTextarea1">Mensaje</label>
    <textarea class="form-control" name="mensaje" rows="3"></textarea>
  </div>
  <button type="submit" class="btn btn-primary mb-2">Enviar</button>
  
</form>

Parte de modelo, crear clase llamado «ModeloMensaje.php» y ahí donde esta la función de conexión y insertar a la base de datos.

Parte de conexión a la base de datos

  public function conectar_bd()
  {

    $servername = "localhost";
    $username = "newuser";
    $password = "password";
    $dbname = "tutofox";

    /* crear la conexión */
    $conexion = new mysqli($servername, $username, $password, $dbname);
    /* comprobar la conexión */
    if ($conn->connect_error) {
        die("Falló la conexión:: " . $conn->connect_error);
    }
    else
    {
      return $conexion;
    }

  }

Parte de insertar (guardar) los datos a la base de datos.

  public  function insert_mensaje($parametro){

    //tiempo
    $hoy = date("Y-m-d H:i:s");
    $asunto = $parametro['asunto'];
    $message = $parametro['mensaje'];

    $sql = "INSERT INTO `mensaje`(`titulo`, `mensaje`, `usuario`, `desde`, `leido`) VALUES ('$asunto', '$message', 1 ,'$hoy', 0)";

    $conn =  $this->conectar_bd();

    if ($conn->query($sql) === TRUE)
    {
        $res['success'] = TRUE;
        $res['message'] = "Envio exitosamente";
    }
    else
    {
      $res['success'] = FALSE;
      $res['message'] = "Error: " . $sql . "<br>" . $conn->error;
    }

    $conn->close();

    return $res;

  } 

Completo ModeloMensaje.php

<?php

class ModeloMensaje  {

  public function conectar_bd()
  {

    $servername = "localhost";
    $username = "newuser";
    $password = "password";
    $dbname = "tutofox";

    /* crear la conexión */
    $conexion = new mysqli($servername, $username, $password, $dbname);
    /* comprobar la conexión */
    if ($conn->connect_error) {
        die("Falló la conexión:: " . $conn->connect_error);
    }
    else
    {
      return $conexion;
    }

  }

  public  function insert_mensaje($parametro){

    //tiempo
    $hoy = date("Y-m-d H:i:s");
    $asunto = $parametro['asunto'];
    $message = $parametro['mensaje'];

    $sql = "INSERT INTO `mensaje`(`titulo`, `mensaje`, `usuario`, `desde`, `leido`) VALUES ('$asunto', '$message', 1 ,'$hoy', 0)";

    $conn =  $this->conectar_bd();

    if ($conn->query($sql) === TRUE)
    {
        $res['success'] = TRUE;
        $res['message'] = "Envio exitosamente";
    }
    else
    {
      $res['success'] = FALSE;
      $res['message'] = "Error: " . $sql . "<br>" . $conn->error;
    }

    $conn->close();

    return $res;

  } 

}

?>

message.php

<html>
  <head>
    <title></title>
    <meta content="">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <style></style>

  </head>
  <body>

    <div class="container">
      <div style="height:50px"></div>
      <h1>< tutofox /> <small>Oh my code!</small></h1>
      <p class="lead">
      <h3>Enviar un nuevo mensaje </h3>

      <?php

      if ($_POST['asunto']&&$_POST['mensaje'])
      {

        include ('ModeloMensaje.php');

        $parametro['asunto']  = $_POST['asunto'];
        $parametro['mensaje'] = $_POST['mensaje'];

        $message = new ModeloMensaje;
        $resultado = $message->insert_mensaje($parametro);

        echo "string";

        //$resultado = ModeloMensaje::insert_mensaje($parametro);

        if ($resultado['success']==TRUE)
        {
          $resmes = $resultado['message'];
          echo '<div class="alert alert-success" role="alert"> '.$resmes.' </div>';
        }
        else{
          $resmes = $resultado['message'];
          echo '<div class="alert alert-danger" role="alert"> '.$resmes.' </div>';
        }

      }

      ?>

      <hr>

      <form action="message.php" method="post">
        <div class="form-group">
          <label for="exampleFormControlInput1">Asunto</label>
          <input type="text" class="form-control" name="asunto">
        </div>

        <div class="form-group">
          <label for="exampleFormControlTextarea1">Mensaje</label>
          <textarea class="form-control" name="mensaje" rows="3"></textarea>
        </div>
        <button type="submit" class="btn btn-primary mb-2">Enviar</button>
        
      </form>

    </div> <!-- /container -->

  </body>
</html>

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *