-
Notifications
You must be signed in to change notification settings - Fork 0
/
add_product.php
189 lines (151 loc) · 5.18 KB
/
add_product.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
<?php
/* add_product.php */
/*
Il file contiene il codice necessario per aggiungere un prodotto al database
*/
//Includo la libreria di base.
include 'libreria.php';
/*Avvio la sessione e controllo che il login sia stato effettuato*/
session_start();
//Se la sessione non è impostata reindirizzo l'utente al login con stato "not_logged"
if(!isset($_SESSION['ADMIN']))
reindirizza("login.php?status=not_logged");
/* */
//La variabile controlla se tutti i campi del form sono stati inizializzati
$formOk = true;
//Controllo se sto utilizzando il metodo POST e acquisisco i dati dal form
//Mi assicuro che i dati sono stati inizializzati
//Se i dati sono inizializzati controllo che non ci sia codice malevolo con la funzione test_input
if($_SERVER["REQUEST_METHOD"] == "POST")
{
if(!empty($_POST['nome-prodotto']))
$nome_prodotto = test_input($_POST['nome-prodotto']);
else
$formOk = false;
if(!empty($_POST['descrizione']))
$descrizione = test_input($_POST['descrizione']);
else
$formOk = false;
if(!empty($_POST['prezzo']))
$prezzo = test_input($_POST['prezzo']);
else
$formOk = false;
if(!empty($_POST['disponibilita']))
$disponibilita = test_input($_POST['disponibilita']);
else
$formOk = false;
//if(!isset($_POST['foto']))
//$formOk = false;
if(!$formOk)
{
errore("Form non compilato correttamente");
die();
}
}
else
{
errore("Errore generico");
die();
}
//Prendo il nome grezzo del file es: foto.jpg
$nome_file = basename($_FILES["foto"]["name"]);
//Cartella di destinazione dell'immagine.
$target_dir = "product_img/";
//Nome del file da posizionare nella cartella.
$target_file = $target_dir . basename($_FILES["foto"]["name"]);
//Flag di controllo
$uploadOk = true;
//Prendiamo l'estensione dell'immagine
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Controlla se il file caricato è un immagine
if(isset($_POST["submit"]))
{
//Return FALSE on failure
$check = getimagesize($_FILES["foto"]["tmp_name"]);
if($check != false)
{
$uploadOk = true;
}
else
{
$uploadOk = false;
errore("Il file non è una foto.");
}
}
// Verifica il formato del file
if($imageFileType != "jpg" && $imageFileType != "jpeg")
{
errore("Formato file non supportato.");
$uploadOk = false;
}
//Verifichiamo che il flag è ok
if ($uploadOk == false)
{
errore("File non caricato.");
}
else //Se è tutto ok prova a caricare il file.
{
//La funzione sposta il file nella cartella target, se fallisce ritorna false
if (move_uploaded_file($_FILES["foto"]["tmp_name"], $target_file))
{
//Prendo il nome del file appena caricato.
$nome_file = basename($_FILES["foto"]["name"]);
}
else
{
//Stampiamo un messaggio d'errore
errore("C'è stato un problema nel caricamento del file." . print_r($_FILES,true));
die();
}
}
//Mi connetto al db per inserire i dati nel database
$connessione = connessione_db();
//Creo la query per inserire i dati e il nome della foto nel database
$query = "INSERT INTO Prodotto (nome_prodotto,descrizione,prezzo,disponibilita,foto) VALUES ('$nome_prodotto','$descrizione',$prezzo,$disponibilita,'$nome_file');";
//Lancio la query e metto il risultato nel result_set
$result_set = mysqli_query($connessione, $query);
//Controllo se non ci sono errori nella query
if($result_set == false)
{
die(mysqli_error($connessione));
}
//Prendo l'id del prodotto appena inserito
$query = "SELECT id_prodotto FROM Prodotto WHERE foto = '$nome_file' AND nome_prodotto = '$nome_prodotto' AND prezzo = $prezzo;";
//Lancio la query e metto il risultato nel result_set
$result_set = mysqli_query($connessione, $query);
//Controllo se non ci sono errori nella query
if($result_set == false)
{
die(mysqli_error($connessione));
}
//Se la query restituisce almeno una riga allora ha trovato una corrispondenza
if(mysqli_num_rows($result_set) > 0 )
{
//Faccio il fetch dell'array associativo
//$row è un array associativo contente una tupla con id_prodotto
$row = mysqli_fetch_assoc($result_set);
//Prendo l'id_prodotto
$id = $row['id_prodotto'];
//Aggiungo all'id prodotto l'estenzione .jpg così facendo avro' tutte le foto di un prodotto con nome id.jpg es 1.jpg
$id = $id . ".jpg";
//Rinomino il file con il nome dell'id prodotto
rename ($target_file, $target_dir . $id);
//Update del nome del file sul database
$query = "UPDATE Prodotto SET foto='$id' WHERE foto = '$nome_file' AND nome_prodotto = '$nome_prodotto' AND prezzo = $prezzo;";
//Lancio la query e metto il risultato nel result_set
$result_set = mysqli_query($connessione, $query);
//Controllo se non ci sono errori nella query
if($result_set == false)
{
die(mysqli_error($connessione));
}
}
else
{
errore("Errore generale.");
}
//Chiudo la connessione al database
mysqli_close($connessione);
//Reindirizzo l'admin alla pagina dei prodotti.
reindirizza("prodotti.php");
?>