shop + cart + user login with school
This commit is contained in:
@@ -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>
|
||||
Reference in New Issue
Block a user