From 606d104f4764e66a50285405edad0503f7157035 Mon Sep 17 00:00:00 2001
From: filippo.bertilotti <filippobertilotti@gmail.com>
Date: Fri, 24 May 2024 10:30:29 +0200
Subject: [PATCH] finendo la funzione update che permette di modificare i dati messi nel form edit e updatarli nel database (parte 137)

---
 src/Framework/Model.php |   34 ++++++++++++++++++++++++++++++++--
 1 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/src/Framework/Model.php b/src/Framework/Model.php
index 06d66bb..8f04768 100644
--- a/src/Framework/Model.php
+++ b/src/Framework/Model.php
@@ -20,7 +20,37 @@
                 return false;
             }
 
-            return true;
+            $sql = "UPDATE {$this->getTable()}";
+
+            unset($data["id"]);
+
+            $assignments = array_keys($data);
+
+            array_walk($assignments, function (&$value) {
+                $value = "$value = ?";
+            });
+
+            $sql .= " SET " . implode(", ", $assignments);
+            $sql .= " WHERE id = ?";
+
+            $conn = $this->database->getConnection();
+            $stmt = $conn->prepare($sql);
+
+            $i = 1;
+            foreach ($data as $value) {
+                $type = match(gettype($value)) {
+                    "boolean" => PDO::PARAM_BOOL,
+                    "integer"=> PDO::PARAM_INT,
+                    "NULL"=> PDO::PARAM_NULL,
+                    default => PDO::PARAM_STR
+                };
+
+                
+                $stmt->bindValue($i++, $value, $type);
+            }
+
+            $stmt->bindValue($i, $id, PDO::PARAM_INT);
+            return $stmt->execute();
 
         }
 
@@ -86,7 +116,7 @@
                 };
 
                 
-                $stmt->bindValue($i++, $value, PDO::PARAM_STR);
+                $stmt->bindValue($i++, $value, $type);
             }
             
 

--
Gitblit v1.8.0