Afegir productes al catàleg
Afegir productes al catàleg
L’administrador o responsable del catàleg pot afegir nous productes al catàleg.
Connexió a la BD
En aquest cas, degut a que estem afegint productes i modificant la BD, necessitarem la connexió d'escriptura.
require_once "../connexioBD/connexioRW.php"; // Connexió PDO
Formulari
El formulari consta de 5 aspectes a emplenar:
- Nom del producte
- Preu
- Descripció
- Estoc
- Categoria
- Imatge
El formulari té una codificació especial per suportar imatges i la seva acció és el mateix codi. També s'afageix un missatge de verificació.
<!-- Formulari -->
<!DOCTYPE html>
<html lang="ca">
<head>
<meta charset="UTF-8">
<title>Afegir Producte</title>
<link rel="stylesheet" href="../css/stylesAfegirProductes.css"> <!-- Definim el full d'estils -->
</head>
<body>
<form method="post" action="" enctype="multipart/form-data"> <!-- Tipus de codificació que permet pujar imatges -->
<h1>Afegir Producte Nou</h1>
<?php if (isset($missatge)):?> <!-- En cas que s'enviï un missatge un cop enviat el formulari -->
<center><p style="color: green; font-weight: bold;"> <?php echo $missatge ?> </p></center> <!-- Missatge d'èxit -->
<?php endif; ?>
Nom:<br>
<input type="text" name="nom" required><br><br>
Preu (€):<br>
<input type="number" step="0.01" name="preu" required><br><br>
Descripció:<br>
<textarea name="descripcio" rows="3" cols="40"></textarea><br><br>
Estoc:<br>
<input type="number" name="estoc" min="0" required><br><br>
Categoria:<br>
<input type="text" name="categoria" required><br><br>
Imatge:<br>
<input type="file" name="imatge" accept="image/*" required><br><br>
<input type="submit" value="Afegir Producte">
</form>
</body>
</html>
Inserció de producte a la BD
Un cop es respon el formulari, abans de fer l'Insert a la BD, haurem de treballar com es desa la imatge. Recordem que la imatge es desa al servidor i a la BD es desa el nom de la imatge.
Per això, definim la ruta on es desen les imatges, el nom de la imatge i la ruta final (rutaImatges/nomImatge)
$directoriImatges = "./../imatges/"; // Carpeta on es desa la imatge $nomImatge = basename($_FILES['imatge']['name']); // Agafem el nom de la imatge $destí = $directoriImatges . $nomImatge; // Definim el destí on es desarà la imatge (../imatges/nomImatge)
Seguidament haurem de moure la imatge a la ruta especificada. En cas que l'operació sigui correcte, realitzarem l'Insert
// Mou el fitxer pujat al directori if (move_uploaded_file($_FILES['imatge']['tmp_name'], $destí)) { // Desa el fitxer al servidor
// Inserim les dades del producte a la BD $stmt = $pdo->prepare(" INSERT INTO productes (nom, preu, descripcio, estoc, categoria, imatge) VALUES (:nom, :preu, :descripcio, :estoc, :categoria, :imatge) ");$stmt->bindParam(':nom', $_POST['nom']); $stmt->bindParam(':preu', $_POST['preu']); $stmt->bindParam(':descripcio', $_POST['descripcio']); $stmt->bindParam(':estoc', $_POST['estoc']); $stmt->bindParam(':categoria', $_POST['categoria']); $stmt->bindParam(':imatge', $nomImatge); // Nom del fitxer a la BD$stmt->execute();$missatge = "Producte afegit correctament"; // Definim un missatge d'èxit
Codi complet
<?php
require_once "../connexioBD/connexioRW.php"; // Connexió PDO
$directoriImatges = "./../imatges/"; // Carpeta on es desa la imatge
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['imatge'])) { // En cas que s'envii el formulari
// Nom del fitxer final
$nomImatge = basename($_FILES['imatge']['name']); // Agafem el nom de la imatge
$destí = $directoriImatges . $nomImatge; // Definim el destí on es desarà la imatge (../imatges/nomImatge)
// Mou el fitxer pujat al directori
if (move_uploaded_file($_FILES['imatge']['tmp_name'], $destí)) { // Desa el fitxer al servidor
// Inserim les dades del producte a la BD
$stmt = $pdo->prepare("
INSERT INTO productes (nom, preu, descripcio, estoc, categoria, imatge)
VALUES (:nom, :preu, :descripcio, :estoc, :categoria, :imatge)
");
$stmt->bindParam(':nom', $_POST['nom']);
$stmt->bindParam(':preu', $_POST['preu']);
$stmt->bindParam(':descripcio', $_POST['descripcio']);
$stmt->bindParam(':estoc', $_POST['estoc']);
$stmt->bindParam(':categoria', $_POST['categoria']);
$stmt->bindParam(':imatge', $nomImatge); // Nom del fitxer a la BD
$stmt->execute();
$missatge = "Producte afegit correctament"; // Definim un missatge d'èxit
} else {
echo "Error en pujar la imatge.";
}
}
?>
<!-- Formulari -->
<!DOCTYPE html>
<html lang="ca">
<head>
<meta charset="UTF-8">
<title>Afegir Producte</title>
<link rel="stylesheet" href="../css/stylesAfegirProductes.css"> <!-- Definim el full d'estils -->
</head>
<body>
<form method="post" action="" enctype="multipart/form-data"> <!-- Tipus de codificació que permet pujar imatges -->
<h1>Afegir Producte Nou</h1>
<?php if (isset($missatge)):?> <!-- En cas que s'enviï un missatge un cop enviat el formulari -->
<center><p style="color: green; font-weight: bold;"> <?php echo $missatge ?> </p></center> <!-- Missatge d'èxit -->
<?php endif; ?>
Nom:<br>
<input type="text" name="nom" required><br><br>
Preu (€):<br>
<input type="number" step="0.01" name="preu" required><br><br>
Descripció:<br>
<textarea name="descripcio" rows="3" cols="40"></textarea><br><br>
Estoc:<br>
<input type="number" name="estoc" min="0" required><br><br>
Categoria:<br>
<input type="text" name="categoria" required><br><br>
Imatge:<br>
<input type="file" name="imatge" accept="image/*" required><br><br>
<input type="submit" value="Afegir Producte">
</form>
</body>
</html>