shop + cart + user login with school

This commit is contained in:
2025-04-13 21:33:59 +02:00
parent 296d7dbb2a
commit 16ff34419e
22 changed files with 1931 additions and 590 deletions
+153 -78
View File
@@ -53,12 +53,23 @@ if ($is_new) {
'status' => 'active',
'created_at' => '',
'updated_at' => '',
'slug' => '',
'first_name' => $school['first_name'],
'last_name' => $school['last_name'],
'email' => $school['email']
];
}
// Funzione per generare uno slug valido
function generateSlug($string)
{
$slug = strtolower($string); // Converti in minuscolo
$slug = preg_replace('/[^a-z0-9-]+/', '-', $slug); // Sostituisci caratteri non validi con trattini
$slug = preg_replace('/-+/', '-', $slug); // Rimuovi trattini multipli
$slug = trim($slug, '-'); // Rimuovi trattini all'inizio e alla fine
return $slug;
}
// Gestione del form
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = $_POST['name'] ?? '';
@@ -76,6 +87,21 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$owner_name = $_POST['owner_name'] ?? '';
$vat_number = $_POST['vat_number'] ?? '';
$status = in_array($_POST['status'], ['active', 'inactive', 'suspended']) ? $_POST['status'] : 'active';
$slug = isset($_POST['slug']) ? generateSlug($_POST['slug']) : '';
// Validazione dello slug
if (empty($slug)) {
$error = "Errore: Lo slug non può essere vuoto.";
} else {
// Controlla se lo slug è univoco
$stmt = $pdo->prepare("SELECT COUNT(*) FROM schools WHERE slug = ? AND id != ?");
$stmt->execute([$slug, $school['id'] ?? 0]);
$slug_exists = $stmt->fetchColumn();
if ($slug_exists) {
$error = "Errore: Lo slug '$slug' è già in uso. Scegli un altro slug.";
}
}
// Gestione del caricamento del logo
$logo = $school['logo'];
@@ -101,89 +127,94 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
}
}
// Aggiorna auth_users (opzionale, se vuoi aggiornare first_name e last_name)
$stmt = $pdo->prepare("UPDATE auth_users SET first_name = ?, last_name = ? WHERE id = ?");
$stmt->execute([$school['first_name'], $school['last_name'], $iduserlogin]);
// Se non ci sono errori, procedi con il salvataggio
if (!isset($error)) {
// Aggiorna auth_users (opzionale, se vuoi aggiornare first_name e last_name)
$stmt = $pdo->prepare("UPDATE auth_users SET first_name = ?, last_name = ? WHERE id = ?");
$stmt->execute([$school['first_name'], $school['last_name'], $iduserlogin]);
if ($is_new) {
$stmt = $pdo->prepare("
INSERT INTO schools (owner_id, name, website, email, phone, description, address_street, address_city, address_postal_code, address_province, address_country, latitude, longitude, owner_name, vat_number, logo, status)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
");
$success = $stmt->execute([
$iduserlogin,
$name,
$website,
$email,
$phone,
$description,
$address_street,
$address_city,
$address_postal_code,
$address_province,
$address_country,
$latitude,
$longitude,
$owner_name,
$vat_number,
$logo,
$status
]);
if ($success) {
$success_message = "Scuola creata con successo!";
if ($is_new) {
$stmt = $pdo->prepare("
SELECT s.*, u.first_name, u.last_name, u.email
FROM auth_users u
LEFT JOIN schools s ON s.owner_id = u.id
WHERE u.id = ?
INSERT INTO schools (owner_id, name, website, email, phone, description, address_street, address_city, address_postal_code, address_province, address_country, latitude, longitude, owner_name, vat_number, logo, status, slug)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
");
$stmt->execute([$iduserlogin]);
$school = $stmt->fetch();
$is_new = false;
} else {
$error = "Errore durante la creazione della scuola.";
}
} else {
$stmt = $pdo->prepare("
UPDATE schools
SET name = ?, website = ?, email = ?, phone = ?, description = ?, address_street = ?, address_city = ?,
address_postal_code = ?, address_province = ?, address_country = ?, latitude = ?, longitude = ?,
owner_name = ?, vat_number = ?, logo = ?, status = ?
WHERE owner_id = ?
");
$success = $stmt->execute([
$name,
$website,
$email,
$phone,
$description,
$address_street,
$address_city,
$address_postal_code,
$address_province,
$address_country,
$latitude,
$longitude,
$owner_name,
$vat_number,
$logo,
$status,
$iduserlogin
]);
$success = $stmt->execute([
$iduserlogin,
$name,
$website,
$email,
$phone,
$description,
$address_street,
$address_city,
$address_postal_code,
$address_province,
$address_country,
$latitude,
$longitude,
$owner_name,
$vat_number,
$logo,
$status,
$slug
]);
if ($success) {
$success_message = "Dati aggiornati con successo!";
$stmt = $pdo->prepare("
SELECT s.*, u.first_name, u.last_name, u.email
FROM auth_users u
LEFT JOIN schools s ON s.owner_id = u.id
WHERE u.id = ?
");
$stmt->execute([$iduserlogin]);
$school = $stmt->fetch();
if ($success) {
$success_message = "Scuola creata con successo!";
$stmt = $pdo->prepare("
SELECT s.*, u.first_name, u.last_name, u.email
FROM auth_users u
LEFT JOIN schools s ON s.owner_id = u.id
WHERE u.id = ?
");
$stmt->execute([$iduserlogin]);
$school = $stmt->fetch();
$is_new = false;
} else {
$error = "Errore durante la creazione della scuola.";
}
} else {
$error = "Errore durante l'aggiornamento dei dati.";
$stmt = $pdo->prepare("
UPDATE schools
SET name = ?, website = ?, email = ?, phone = ?, description = ?, address_street = ?, address_city = ?,
address_postal_code = ?, address_province = ?, address_country = ?, latitude = ?, longitude = ?,
owner_name = ?, vat_number = ?, logo = ?, status = ?, slug = ?
WHERE owner_id = ?
");
$success = $stmt->execute([
$name,
$website,
$email,
$phone,
$description,
$address_street,
$address_city,
$address_postal_code,
$address_province,
$address_country,
$latitude,
$longitude,
$owner_name,
$vat_number,
$logo,
$status,
$slug,
$iduserlogin
]);
if ($success) {
$success_message = "Dati aggiornati con successo!";
$stmt = $pdo->prepare("
SELECT s.*, u.first_name, u.last_name, u.email
FROM auth_users u
LEFT JOIN schools s ON s.owner_id = u.id
WHERE u.id = ?
");
$stmt->execute([$iduserlogin]);
$school = $stmt->fetch();
} else {
$error = "Errore durante l'aggiornamento dei dati.";
}
}
}
}
@@ -238,6 +269,11 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
<label for="name" class="form-label">Nome Scuola</label>
<input type="text" class="form-control" id="name" name="name" value="<?php echo htmlspecialchars($school['name'] ?? ''); ?>" required>
</div>
<div class="mb-3">
<label for="slug" class="form-label">Slug (URL personalizzato, es. yogiboook.com/slug)</label>
<input type="text" class="form-control" id="slug" name="slug" value="<?php echo htmlspecialchars($school['slug'] ?? ''); ?>" required>
<small class="form-text text-muted">Usa solo lettere minuscole, numeri e trattini (es. yoga-milano).</small>
</div>
<div class="mb-3">
<label for="website" class="form-label">Sito Web</label>
<input type="url" class="form-control" id="website" name="website" value="<?php echo htmlspecialchars($school['website'] ?? ''); ?>">
@@ -327,6 +363,45 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
<?php include('include/footer.php'); ?>
</div>
<?php include('jsinclude.php'); ?>
<!-- Script per validazione e suggerimento dello slug -->
<script>
// Funzione per generare uno slug valido
function generateSlug(string) {
return string
.toLowerCase() // Converti in minuscolo
.replace(/[^a-z0-9-]+/g, '-') // Sostituisci caratteri non validi con trattini
.replace(/-+/g, '-') // Rimuovi trattini multipli
.replace(/^-|-$/g, ''); // Rimuovi trattini all'inizio e alla fine
}
// Riferimenti ai campi
const nameInput = document.getElementById('name');
const slugInput = document.getElementById('slug');
let isUserTypingSlug = false; // Flag per tracciare se l'utente sta modificando lo slug manualmente
// Suggerimento dello slug basato sul nome
nameInput.addEventListener('input', function(e) {
if (!isUserTypingSlug) { // Aggiorna lo slug solo se l'utente non lo sta modificando manualmente
const name = e.target.value;
const generatedSlug = generateSlug(name);
slugInput.value = generatedSlug;
}
});
// Validazione dello slug in tempo reale
slugInput.addEventListener('input', function(e) {
isUserTypingSlug = true; // L'utente sta modificando lo slug manualmente
let value = e.target.value;
value = generateSlug(value); // Applica le regole di validazione
e.target.value = value; // Aggiorna il campo con il valore validato
});
// Ripristina il flag quando l'utente smette di modificare lo slug
slugInput.addEventListener('blur', function() {
isUserTypingSlug = false; // L'utente ha finito di modificare lo slug
});
</script>
</body>
</html>