0% encontró este documento útil (0 votos)
27 vistas22 páginas

Curso Udemy PHP

Cargado por

fert125
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
27 vistas22 páginas

Curso Udemy PHP

Cargado por

fert125
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 22

PHP MYSQL CURSO DE INICIO

Es un lenguaje creado en el año 1994. Puede correr en diversos sistemas operativos. Es un programa Open
Source. Esta mas orientado a correr eficientemente desde el punto de vista de los servidores. Utilizado por
WordPress.

Nuestras Herramientas serna:


Server (Apache)
Database (Mysql)
Text Editor (Sublime)
Web Browser (Chrome)

Un servidor es un programa local o global el cual permite que otros programas se ejecuten sobre el.
El servidor Apache permite ejecutar paginas web desde nuestro pc con un servidor local cuya dirección es
localhost y este localhost abre carpetas de la dirección de xamp en la base del disco C:

Creadas la carpeta MiWebEjemplo, se coloca un index.php y luego si queremos ejecutar eso lo que hay que
hacer es colocar su dirección en el Chrome y ya esta.

CÓDIGO 1

En esta parte de código se ve como se puede ingresar código html y ejecutarlo directamente y mezclarlo
con código php

<?php

echo "This is my first php page, php rocks";


echo "<br>";
echo 10;
?>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mi Página</title>
</head>
<body>
<h1>Bienvenido</h1>
<?php
echo "<p>Este texto fue generado por PHP.</p>";
?>
<p>Este texto está escrito directamente en HTML.</p>
<?php
echo "<p>Hoy es " . date("Y-m-d") . "</p>";
?>
</body>
</html>

CÓDIGO 2
Aqui se estudia la diferencia entre echo y print. Lo principal es que print da un resultado entre 1 y 0 , echo
no por eso no puede ser asignado a una variable. Tambien se dice que print es mas rápido.

<?php
print "Hello from print";
print "<br>";
print 9-7;
print "<br>";
$var= print "Hello from var";
// $var= echo "hello form echo does´nt exist"

A echo se le pueden asignar dos argumentos , a print no.

echo "argument one", "argument two";

Variables: se pueden definir como contenedores.

<?php

$username = "mohamed123";
$num = 8;
$NUM = 9;

echo $username;
echo "<br>";
echo $num;
echo "<br>";
echo $NUM;
?>

Constantes: Son como los variables que no cambian y se pueden acceder desde otras partes del codigo.
<?php
define("CONSTANT","this is a constant");
define("NUMBER", 99);

echo CONSTANT;
echo "<br>";
echo NUMBER;
?>

Tipos de Variables

En php se escribe el tipo de variable y luego el sistema le asigna el tipo, no se declara como en otros
sistemas.

CÓDIGO 3

<?php

$float = 1.1;

$num = 4;

$bool=false;

$str = "This is just a string 99";

var_dump($float);

echo gettype($float);

echo "<br>";

var_dump($bool);

echo gettype($bool);

echo "<br>";

var_dump($num);

echo gettype($num);
echo "<br>";

var_dump($str);

echo gettype($str);

?>

ESTRUCTURAS REPETITIVAS

For

<?php
// Declaramos un array con nombres
$names = ["Carlos", "Ana", "Luis", "Maria", "Pedro"];

// Recorremos el array con un bucle for


echo "Lista de nombres con for:<br>";
for ($i = 0; $i < count($names); $i++) {
echo $names[$i] . "<br>";
}

// Recorremos el array con un bucle foreach


echo "<br>Lista de nombres con foreach:<br>";
foreach ($names as $name) {
echo $name . "<br>";
}

// Mostrar el total de nombres en el array


echo "Total nombres: "; // Agregado el punto y coma aquí
echo count($names);
echo "<br>";
?>

WHILE

Repite la instrucción mientras no se de la condicion

<?php
// Inicializamos una variable
$counter = 1;
echo "Contando con while:<br>";

while ($counter <= 5) {


echo "Contador: $counter<br>";
$counter++; // Incrementamos la variable
}

echo "Contando con for:<br>";

for ($i = 1; $i <= 5; $i++) {


echo "Iteración: $i<br>";
}
?>

SWITCH

Evaluá casos y aplica cuestiones.

<?php

$favColor = "black";

switch ($favColor){

case "red":
echo "your fav color is red";
break;

case "green":
echo "your fav color is green";
break;

default:
echo "you like another color";
}
?>

ARRAYS

Arrays asociativos: son como los comunes pero usan strings para indexar la información en ve de
posiciones numéricas.
<?php
$person = [
"name" => "Carlos",
"age" => 30,
"city" => "Madrid"
];

// Acceso a los valores usando las claves


echo "Nombre: " . $person["name"] . "<br>";
echo "Edad: " . $person["age"] . "<br>";
echo "Ciudad: " . $person["city"] . "<br>";
?>

foreach: El foreach se utiliza para logra recorrer todo el array sin usar numeros porque la matriz asociativa
no los tiene.

Foreach:

<?php
// Array asociativo
$person = [
"name" => "Carlos",
"age" => 30,
"city" => "Madrid"
];

foreach ($person as $key => $value) {


echo $key . ": " . $value . "<br>";
}

$sentence = "Name: " . $person["name"] . ", Age: " . $person["age"] . ", City: " . $person["city"];
echo "<br>" . $sentence;
?>

Multidimensional
Con arreglos sin asignación de nùmero para ellos.

<?php
// Arreglo multidimensional correctamente definido
$multi = array(
array(1, 2, 3),
array(4, 5, 6),
array(7, 8, 9)
);

// Acceso a un elemento específico


echo $multi[0][0]; // Salida: 1
echo "<br>";
echo $multi[1][1]; // Salida: 5
echo "<br>";
echo $multi[2][2]; // Salida: 9
?>

Multidimensional con arreglos con asignación de números para ellos.

<?php
$companies = [
"Company1" => [
"department1" => ["employee1" => "Carlos", "employee2" => "Ana"],
"department2" => ["employee1" => "Luis", "employee2" => "Maria"]
],
"Company2" => [
"department1" => ["employee1" => "Pedro", "employee2" => "Lucia"],
"department2" => ["employee1" => "Jorge", "employee2" => "Sara"]
]
];

// Recorrer cada compañía


foreach ($companies as $company => $departments) {
echo "Company: $company<br>";
foreach ($departments as $department => $employees) {
echo " Department: $department<br>";
foreach ($employees as $id => $name) {
echo " $id: $name<br>";
}
}
echo "<br>";
}
?>

FUNCIONES

las funciones no son sensitivas a casos de mayusculas.


<?php
// Definimos una función para dar la bienvenida
function bienvenida() {
echo "¡Bienvenido al sistema!<br>";
}

// Llamamos a la función
bienvenida();
bienvenida();
bienvenida();

echo "<br>";

function bienvenida1($nombre, $hora) {


echo "¡Buenos $hora, " . $nombre . "!<br>";
}

bienvenida1("Carlos", "días");
bienvenida1("Ana", "tardes");
bienvenida1("Luis", "noches");

?>

FUNCIONES GLOBALES

1. Uso de $_POST para obtener datos de un formulario


En este video, se muestra cómo se puede usar la variable global $_POST para obtener datos enviados por
un formulario HTML utilizando el método POST. El método POST es utilizado para enviar datos de manera
segura (ya que no se muestra en la URL como ocurre con GET).

2. Estructura del formulario HTML


Se comienza creando un formulario HTML con los siguientes elementos importantes:
• El atributo method="POST" que especifica que los datos serán enviados utilizando el método POST.
• El atributo action que indica a qué página se enviarán los datos (en este caso, al mismo archivo PHP).
Ejemplo:

html
Copiar código
<form method="POST" action="">
<label for="username">Nombre de Usuario:</label>
<input type="text" name="username" id="username">
<label for="email">Correo Electrónico:</label>
<input type="email" name="email" id="email">
<input type="submit" value="Enviar">
</form>
• name en los campos de entrada es importante, ya que se usará para acceder a los datos enviados a
través de $_POST en PHP.

3. Comprobación de datos con $_POST en PHP


Después de que el formulario es enviado, se puede comprobar si se han enviado datos a través de
$_POST. Esto se hace usando isset() para asegurarse de que los datos están presentes.
Ejemplo de PHP:

php
Copiar código
if (isset($_POST['submit'])) {
// Verificar si se ha enviado el formulario
$username = $_POST['username'];
$email = $_POST['email'];
echo "Mi nombre de usuario es: " . $username;
echo "Mi correo electrónico es: " . $email;
}
En este caso, $_POST['username'] y $_POST['email'] acceden a los valores que el usuario ha ingresado en
el formulario.

4. Mostrar los valores recibidos


Una vez que el formulario es enviado, los datos introducidos por el usuario pueden ser capturados y
mostrados en la página. Por ejemplo:
php
Copiar código
if (isset($_POST['submit'])) {
$username = $_POST['username'];
$email = $_POST['email'];
echo "Mi nombre de usuario es: " . $username;
echo "Mi correo electrónico es: " . $email;
}
Esto imprimirá el nombre de usuario y el correo electrónico enviados en el formulario cuando el botón
"Enviar" sea presionado.

5. Envío y procesamiento del formulario


El código PHP verifica si el formulario ha sido enviado mediante isset($_POST['submit']). Si el formulario ha
sido enviado, se recuperan los datos de los campos de entrada y se almacenan en variables. Luego, esos
datos se pueden utilizar según sea necesario (en este caso, solo se imprimen en la pantalla).
Ejemplo completo con formulario y PHP:

<?php
if (isset($_POST['submit'])) {
$username = $_POST['username'];
$email = $_POST['email'];
echo "Mi nombre de usuario es: " . $username . "<br>";
echo "Mi correo electrónico es: " . $email . "<br>";
}
?>

<form method="POST" action="">


<label for="username">Nombre de Usuario:</label>
<input type="text" name="username" id="username">
<label for="email">Correo Electrónico:</label>
<input type="email" name="email" id="email">
<input type="submit" name="submit" value="Enviar">
</form>

En este ejemplo, cuando el usuario envía el formulario, los datos del formulario se procesan con PHP y se
muestran en la misma página.

6. Resumen de cómo funciona $_POST


• Formulario HTML: Los datos se recopilan a través de un formulario con el método POST.
• PHP y $_POST: En PHP, se utiliza $_POST['campo'] para obtener los valores enviados por el
formulario.
• Validación: Se utiliza isset() para verificar si los datos han sido enviados.
• Mostrar datos: Los datos del formulario se pueden mostrar o utilizar según sea necesario.

Tiempo y hora

<?php

date_default_timezone_set('America/Argentina/Buenos_Aires');

echo date_default_timezone_set;

// Imprimir la fecha en el formato deseado


echo date('y/m/l');
?>º
SECCION MYSQL Y BASE DE DATOS

Desde phpmyadmin se pueden crear las bases de datos desde comandos aunque
también hay interfaz:
CREACIÓN DE LAS BASES
CREATE DATABASE testdb;
la crea,
USE testdb;
la usa;
DROP DATABASE testdb;
la elimina;
CREACIÓN DE LAS TABLAS
CREATE TABLE users (
id INT (2) NOT NULL,
username VARCHAR (20),
email VARCHAR(20),
password VARCHAR(30)
);
ELIMINACION
DROP TABLE users;
elimina
INGRESO DE DATOS A LA TABLA (MANUALMENTE)
ACTUALIZAR Y BORRAR
UPDATE users SET username = “user number 4” WHERE id = 4;
DELETE FROM user WHERE id = 4;

FUNCIONES:
SUMA:
SELECT SUM(id) FROM users;
AVERAGE:
SELECT SUM(id) FROM users;
COUNT:
SELECT COUNT (id) FROM users;
MIN Y MAX:
SELECT MIN/MAX(id) FROM users;

SELECT AND WHERE.


SELECT * FROM users;
muestra toda la informacion de la tabla.
SELECT password FROM users;
muestra toda la informacion de una columna en especifico.
WHERE : funciona como if.
OPERADOR =
SELECT * FROM users WHERE username= “user1”
OPERADORES OR Y AND
SELECT * FROM users WHERE usernanme= “user1” and id= “123”;
ORDER BY Y GROUP BY
SELECT * FROM blogs ORDER BY id DESC/ASC
SELECT username, password FROM blogs ORDER BY id DESCA/ASC.
EJEMPLOS
CREATE TABLE cats (
id int (2) PRIMARY KEY NOT NULL AUTO_INCREMENT,
name varchar (20)
);
INSERT INTO cats (name)
VALUES (“php”),
(“js”),
(“ruby”);

SELECT title, body, cat_name, COUNT(*) FROM blogs GROUP BY cat_name

ALTER
ALTER TABLE users ADD COLUMN created_at timestamp;
ALTER TABLE users DROP COLUMN created_at timestamp;
ALIAS
SELECT title AS ti FROM blogs;
le da un nickname a las columnas en la columna.

JOINS
se usa basicamente para unir ds tablas que tienen informacion similar o
complementaria y esto se hace uniendo las claves que tiene informacion similar y
son primarias o foraneas

Uso de INNER JOIN

Un INNER JOIN es útil cuando necesitas trabajar con datos relacionados almacenados en
diferentes tablas de una base de datos. Por ejemplo, si tienes dos tablas relacionadas:
1. Tabla usuarios:
markdown
Copiar código
id_usuario | nombre_usuario
---------------------------
1 | Juan
2 | Maria
3 | Pedro

2. Tabla pedidos:
markdown
Copiar código
id_pedido | id_usuario | producto
------------------------------
101 | 1 | Laptop
102 | 2 | Celular
103 | 1 | Teclado

Si quieres obtener una lista de los usuarios junto con los productos que compraron, puedes usar el
INNER JOIN:

SELECT usuarios.nombre_usuario, pedidos.producto


FROM usuarios
INNER JOIN pedidos ON usuarios.id_usuario = pedidos.id_usuario;

Resultado:
diff
Copiar código
nombre_usuario | producto
-------------------------
Juan | Laptop
Maria | Celular
Juan | Teclado

¿Qué hace el INNER JOIN?


1. Relaciona las tablas usando la condición ON usuarios.id_usuario =
pedidos.id_usuario.
2. Filtra los resultados para incluir solo las filas donde los valores en id_usuario
coincidan en ambas tablas.
Se puede usar * en la consultar pero esto hara que aparezcan todas las columnas
y por ende puede generar problemas.

Cómo evitar problemas:

Si tienes columnas con el mismo nombre, puedes:


1. Usar alias para diferenciar las columnas:

SELECT usuarios.id_usuario AS usuario_id, usuarios.nombre_usuario,


pedidos.id_pedido, pedidos.producto
FROM usuarios
INNER JOIN pedidos ON usuarios.id_usuario = pedidos.id_usuario;

2. Especificar solo las columnas necesarias en lugar de usar *:

SELECT usuarios.nombre_usuario, pedidos.producto


FROM usuarios
INNER JOIN pedidos ON usuarios.id_usuario = pedidos.id_usuario;

¿Cuándo es útil usar *?


 Cuando estás explorando las tablas y necesitas ver todas las columnas.
 Cuando sabes que no habrá problemas de rendimiento ni ambigüedad de nombre.
Por un lado esta la parte d ella consulta que determina que columnas entran
SELECT cats.name, blogs.cat_name, blogs.title,blogs.body
Por el otro la parte que determina la unión
FROM cats INNER JOIN blogs ON cats.name= blogs_cat_name;
se le pueden aplicar alias a las columnas si repiten información o nombres.
La principal diferencia entre INNER JOIN, LEFT JOIN, y RIGHT JOIN radica en cómo
manejan las filas que no tienen coincidencias entre las tablas.

1. INNER JOIN
 Solo devuelve las filas donde hay coincidencias entre ambas tablas según la condición
especificada.
 Si no hay coincidencias, esas filas se excluyen del resultado.
Ejemplo:
Con estas tablas:
Tabla usuarios:

id_usuario | nombre_usuario
---------------------------
1 | Juan
2 | Maria
3 | Pedro

Tabla pedidos:

id_pedido | id_usuario | producto


------------------------------
101 | 1 | Laptop
102 | 2 | Celular

Consulta:

SELECT usuarios.nombre_usuario, pedidos.producto


FROM usuarios
INNER JOIN pedidos ON usuarios.id_usuario = pedidos.id_usuario;

Resultado:

nombre_usuario | producto
-------------------------
Juan | Laptop
Maria | Celular

Nota: Pedro no aparece porque no tiene pedidos.

2. LEFT JOIN (o LEFT OUTER JOIN)


 Devuelve todas las filas de la tabla de la izquierda (primer tabla en el FROM), incluso si no
tienen coincidencias en la tabla de la derecha.
 Las filas sin coincidencias en la derecha se rellenan con NULL.

Ejemplo:
Consulta:

SELECT usuarios.nombre_usuario, pedidos.producto


FROM usuarios
LEFT JOIN pedidos ON usuarios.id_usuario = pedidos.id_usuario;

Resultado:

nombre_usuario | producto
-------------------------
Juan | Laptop
Maria | Celular
Pedro | NULL

Nota: Pedro aparece, pero sin producto porque no tiene un pedido asociado.

3. RIGHT JOIN (o RIGHT OUTER JOIN)


 Devuelve todas las filas de la tabla de la derecha (tabla en el JOIN), incluso si no tienen
coincidencias en la tabla de la izquierda.
 Las filas sin coincidencias en la izquierda se rellenan con NULL.

Ejemplo:
Consulta:

SELECT usuarios.nombre_usuario, pedidos.producto


FROM usuarios
RIGHT JOIN pedidos ON usuarios.id_usuario = pedidos.id_usuario;

Resultado:

nombre_usuario | producto
-------------------------
Juan | Laptop
Maria | Celular

Nota: En este caso, como todos los pedidos tienen coincidencias con un usuario, el resultado es el
mismo que el de INNER JOIN. Si hubiera un pedido sin usuario asociado, aparecería con NULL en
la columna nombre_usuario.

Diferencias clave:
Tipo de
Filas incluidas en el resultado
JOIN
INNER
Solo las filas donde ambas tablas tienen coincidencias.
JOIN
Tipo de
Filas incluidas en el resultado
JOIN
Todas las filas de la tabla izquierda, y las filas coincidentes de la derecha (las no
LEFT JOIN
coincidentes en la derecha son NULL).
RIGHT Todas las filas de la tabla derecha, y las filas coincidentes de la izquierda (las no
JOIN coincidentes en la izquierda son NULL).

¿Cuál usar?
 INNER JOIN: Cuando solo necesitas datos que tengan coincidencias entre ambas tablas.
 LEFT JOIN: Cuando necesitas todas las filas de la tabla izquierda, incluso si no hay
coincidencias en la tabla derecha.
 RIGHT JOIN: Cuando necesitas todas las filas de la tabla derecha, incluso si no hay
coincidencias en la tabla izquierda.

PDO

<?php
$host = "localhost:3307";
$dbname = "blogpost";
$user = "root";
$password = "";
try {
// Crear una conexión con PDO
$conn = new PDO("mysql:host=$host;dbname=$dbname", $user, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

echo "Database is working fine";


} catch (PDOException $e) {
echo "There is something wrong: " . $e->getMessage();
}
?>

1. Declaración de variables
php
Copiar código
$host = "localhost:3307"; // Dirección del servidor MySQL y puerto
$dbname = "blogpost"; // Nombre de la base de datos
$user = "root"; // Usuario de la base de datos
$password = ""; // Contraseña del usuario (vacía en este caso)
 $host: Indica la dirección del servidor MySQL. Aquí se especifica localhost y el
puerto 3307.
 $dbname: El nombre de la base de datos a la que queremos conectarnos.
 $user: Usuario con permisos para acceder a la base de datos.
 $password: Contraseña del usuario. En este caso, está vacía.

2. Bloque try
php
Copiar código
try {
// Crear una conexión con PDO
$conn = new PDO("mysql:host=$host;dbname=$dbname", $user, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

echo "Database is working fine";


}

 try: Intenta ejecutar el código dentro del bloque.


 new PDO(...): Crea una nueva conexión a la base de datos usando la clase PDO. La
sintaxis:
 "mysql:host=$host;dbname=$dbname": Indica el motor de base de datos
(mysql), el host, y el nombre de la base de datos.
 $user: Usuario que se usará para la conexión.
 $password: Contraseña del usuario.
 setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION):
 Configura el comportamiento de PDO para que arroje excepciones
(PDOException) cuando ocurra un error.
 echo "Database is working fine";:
 Si todo funciona correctamente, muestra este mensaje.

3. Bloque catch
php
Copiar código
catch (PDOException $e) {
echo "There is something wrong: " . $e->getMessage();
}

 catch (PDOException $e):


 Si ocurre un error durante la conexión o ejecución del bloque try, este lo captura.
 PDOException: Es una excepción específica de errores relacionados con PDO.
 $e->getMessage():
 Recupera el mensaje de error asociado a la excepción. Esto ayuda a identificar el
problema exacto (por ejemplo, credenciales incorrectas, base de datos no encontrada,
etc.).
PROYECTO

conn.php

<?php

try {

$host = "localhost:3307";
$dbname = "todos";
$user = "root";
$pass = "";

$conn = new PDO ("mysql:host=$host;dbname=$dbname",


$user,$pass);
$conn->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);

} catch(PDOException $e) {

echo "error is: " . $e->getMessage();

delete.php

<?php

require "conn.php";

if(isset($_GET['del_id'])) {

$id = $_GET['del_id'];

$delete = $conn->prepare("DELETE FROM tasks WHERE


id=:id");

$delete->execute([':id' => $id]);

header("location: index.php");
}

index.php

<?php

require "conn.php";

$data = $conn->query("SELECT * FROM tasks");

?>

<!DOCTYPE html>
<html>
<head>
<title>todos</title>
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/2.2
.0/jquery.min.js"></script>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6
/css/bootstrap.min.css" />
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/
js/bootstrap.min.js"></script>
<link rel="stylesheet" href="style.css">

</head>
<body>
<div class="container">
<form method="POST" class="form-inline"
id="user_form">

<div class="form-group mx-sm-3 mb-2">


<label for="inputPassword2" class="sr-
only">create</label>
<input name="mytask" type="text" class="form-
control" id="task" placeholder="enter task">
</div>
<input type="hidden" name="action" id="action"
/>
<input type="submit" name="button_action"
id="button_action" class="btn btn-default"
value="Insert" />
</form>

<table class="table">
<thead>
<tr>
<th>#</th>
<th>Task Name</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php while($rows = $data-
>fetch(PDO::FETCH_OBJ)): ?>
<tr>

<td><?php echo $rows->id; ?></td>


<td><?php echo $rows->name; ?></td>
<td><a href="delete.php?del_id=<?php echo
$rows->id; ?>" class="btn btn-danger">delete</a></td>
</tr>
<?php endwhile; ?>

</tbody>
</table>
</div>

<script type="text/javascript">
$('#user_form').on('submit', function(event){
event.preventDefault();
var name = $('#task').val();

if(name != '')
{
//console.log(name);
$.ajax({
url:"insert.php",
method:'POST',
data:new FormData(this),
contentType:false,
processData:false,
success:function(data)
{
alert(data);

$("#action").val("Insert");
$('#button_action').val("Insert");

}
});
}
else
{
alert("Both Fields are Required");
}
});

</script>

</body>
</html>

insert.php

<?php

require "conn.php";

if($_POST["action"] == "Insert") {

$task = $_POST['mytask'];

$insert = $conn->prepare("INSERT INTO tasks


(name) VALUES (:name)");

$insert->execute([':name' => $task]);

//header("location: index.php");

?>

style.css
form {
margin-top: 91px;
margin-left: 281px;
}

También podría gustarte