# 2.- Conectar a base de datos

Opción rapida

    <?php
        $servername = "localhost";
        $username = "username";
        $password = "password";

        // Create connection
        $conn = new mysqli($servername, $username, $password);

        // Check connection
        if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
        }
        echo "Connected successfully";

        $sql = ("SELECT * FROM usuarios");
        $result = $conn->query($sql);

        $fila = $mysqli_fetch_array($result);

        if($fila["mail"] == $mail ){
            echo "El mail correcto";
        }else{
            echo "El mail no existe en la base de datos";
        }

        if($fila["password"] == $password ){
            echo "El password correcto";
        }else{
            echo "El password no existe en la base de datos";
        }

    ?>

La mejor opción es crear en un archivo único solo para la conexión

    <?php
    $server = "localhost";
    $username = "root";
    $password = "";
    $database = "opd";

    $conn = mysqli_connect($server, $username, $password, $database);
    if (!$conn){
        die("Error". mysqli_connect_error());
    }
?>

# Opción moderna para utilizar con MVC

<?php
    class Conexion{
        private $conect;
        public function __construct()
        {
            $pdo = "mysql:host=".host.";dbname=".db.";.charset.";
            try {
                $this->conect = new PDO($pdo, user, password);
                $this->conect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            } catch (PDOException $e) {
                echo "Error en la conexion".$e->getMessage();
            }
        }
        public function conect()
        {
            return $this->conect;
        }
    }
?>

<?php
    //const base_url = "http://localhost/proyect/restobarPhpMysqlAjaxMVC/admin/";
    const base_url = "http://localhost/romacode/restobarPhpMysqlAjaxMVC/admin/";
    const host = "localhost";
    const user = "root";
    const password = "";
    const db = "opd";
    const charset = "charset=utf-8";
    ?>
    class Query extends Conexion{  
    private $pdo, $con, $sql;
        public function __construct() {
            $this->pdo = new Conexion();
            $this->con = $this->pdo->conect();
        }
    }

# Realizar una petición GET a la base de datos

     <?php
        if(isset($_GET['menuid'])){
            $menuId = $_GET['menuid'];
            $sql = "SELECT * FROM menu WHERE menuId='$menuId'";
            $result = mysqli_query($conn, $sql);
            $row = mysqli_fetch_assoc($result);
            $menuName = $row['menuName'];
            $menuPrice = $row['menuPrice'];
            $menuDesc = $row['menuDesc'];
            $menuCategorieId = $row['menuCategorieId'];
            $menuImage = $row['menuImage'];
        } 
    ?>

# Realizar una petición POST || UPDATE a la base de datos

function create()
    {
        include('db/dbconnect.php');
        if (isset($_POST['createItem'])) {
            $menuName = $_POST["menuName"];
            $menuCategorieId = $_POST["menuCategorieId"];
            $menuPrice = $_POST["menuPrice"];
            $menuDesc = $_POST["menuDesc"];
            $menuImage = $_FILES['menuImage']['tmp_name'];
            $menuImageType = pathinfo($menuImage, PATHINFO_EXTENSION);    

            $datainage = file_get_contents($menuImage);
            $img_base64 = base64_encode($datainage);
            $img = 'data:image/' . $menuImageType . ';base64,' . $img_base64;

            $query = "INSERT INTO menu (menuName, menuPrice, menuDesc, menuCategorieId, menuImage) VALUES ('$menuName', '$menuPrice','$menuDesc', '$menuCategorieId', '$img')";
            $resultado = mysqli_query($conn, $query);

            header("Location: ../admin/index.php");
            exit();
        }
    }

# Realizar una petición POST a la base de datos

    function update()
    {
        include('db/dbconnect.php');
        if(isset($_GET['id'])){
            $menuId = $_GET["id"];
            $sql = "SELECT * FROM menu WHERE menuId = $menuId";
            $result = $conn->query($sql);
            $row = $result->fetch_assoc();
            //Otra forma de poner directamente en los value 
            // $row->description;
            
        }

        if(isset($_POST['update'])){
            $menuId = $_GET["id"];
            $menuName = $_POST["menuName"];
            $menuPrice = $_POST["menuPrice"];
            $menuCategorieId = $_POST["menuCategorieId"];
            $menuDesc = $_POST["menuDesc"];
            $menuImage = $_FILES['menuImage']['tmp_name'];
            $menuImageType = pathinfo($menuImage, PATHINFO_EXTENSION);    

            $datainage = file_get_contents($menuImage);
            $img_base64 = base64_encode($datainage);
            $img = 'data:image/' . $menuImageType . ';base64,' . $img_base64;
            $sql = "UPDATE menu set menuName = '$menuName', menuDesc = '$menuDesc',menuCategorieId = '$menuCategorieId', menuPrice = '$menuPrice', menuImage = '$img' WHERE menuId =' $menuId'";
            $result = $conn->query($sql);
            header("Location: ../admin/index.php?page=menuManage");
        } 
    ?>    

# Realizar un POST ||DELETE a la base de datos

    <?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        if (isset($_POST['removeItem'])) {
            include_once('../db/dbconnect.php');

            $menuId = $_POST["menuId"];
            $sql = "DELETE FROM `menu` WHERE `menuId`='$menuId'";
            $result = mysqli_query($conn, $sql);

            if ($result) {

                echo "<script>alert('Removed');
                        window.location=document.referrer;
                    </script>";
            } else {
                echo "<script>alert('failed');
                    window.location=document.referrer;
                    </script>";
            }
        }
    }
    ?>

# Realizar una busqueda

<?php

    <?php 
         $busqueda = strtolower($_REQUEST['busqueda']);
         if(isset($_GET[$busqueda])){
             header('Location: index.php?page=menuManage');
         }
    ?>

	    $sql = "SELECT * FROM `menu`   
	    WHERE (
	    menuName LIKE '%$busqueda%' OR
	    menuDesc LIKE '%$busqueda%'
    )";
    $result = $conn->query($sql);
    while($row=$result->fetch_assoc()){ 
?>

# Realizar una paginación

    <?php
		include('./db/dbconnect.php');
		// $sql = "SELECT * FROM `menu`";
		$sql = "SELECT * FROM `menu`   
		WHERE (
			menuName LIKE '%%' OR
			menuDesc LIKE '%%'
		)";
		$result = mysqli_query($conn, $sql);

		$no_of_products = $result->num_rows;
		$no_of_products_per_page = 12;

		$no_of_pages = ceil($no_of_products / $no_of_products_per_page);

		$page = 1;

		if (isset($_GET["pagination"])) {
			$page = $_GET["pagination"];
		}
		$start_limit = ((int)$page - (int)1) * $no_of_products_per_page;

		$sql = "SELECT * FROM menu where menuId > $start_limit LIMIT  $no_of_products_per_page";

					// SELECT * FROM `menu` WHERE (
					// 		menuName LIKE '%queso%' OR
					// 		menuDesc LIKE '%queso%') ORDER BY 1 LIMIT  5

		$sel_query = mysqli_query($conn, $sql)  or die(mysqli_error($conn));

		while ($row = mysqli_fetch_array($sel_query, MYSQLI_ASSOC)) { ?>
			<tr>
				<th scope="row" class="details_menu"><?php echo $row['menuName'] ?></th>
				<th scope="row" class="details_menu"><?php echo $row['menuDesc'] ?></th>
				<th scope="row" class="text-center"><?php echo $row['menuPrice'] ?></th>
				<th scope="row" class="text-center"><?php echo $row['menuCategorieId'] ?></th>
				<th scope="row" class="bgc">
					<img class="image_menu" src="data:image/png;base64,<?php echo base64_encode(file_get_contents($row['menuImage'])) ?>">
				</th>
				<th scope="row" class="text-center">
					<div class="row text-rigth ml-3">
						<div class="ml-3">
								<a href="menuManageUpdate.php?id=<?php echo $row['menuId'] ?>"><i class="fas fa-edit"></i></a>
									</div>
									<form action="fetch/fetch.php" method="POST" class="ml-3">
										<button name="removeItem" class="btn btn-sm btn-danger"><i class="fas fa-trash-alt"></i></button>
										<input type="hidden" name="menuId" value="<?php echo $row['menuId'] ?>">
									</form>
								</div>
							</th>
						</tr>
					<?php } ?>
				</tbody>
			</table>
			<div class="content_pagination">
				<!-- Pagination button -->
				<nav>
					<ul class="pagination">
						<li class="page-item"></li>
						<?php
						for ($i = 1; $i <= $no_of_pages; $i++) {
							$pageName = basename($_SERVER["PHP_SELF"]);
							if ($page == $i) {
								echo "
								<li class='page-item active'>
									<a href='$pageName?page=menuManage&pagination={$i}' class='page-link'>{$i}</a>
								</li>
							";
							} else {
								echo "
								<li>
									<a href='$pageName?page=menuManage&pagination={$i}' class='page-link'>{$i}</a>
								</li>
							";
							}
						} ?>
						<li class="page-item"></li>
					</ul>
				</nav>
			</div>