cal.php

mail@pastecode.io avatar
unknown
php
a year ago
16 kB
6
Indexable
Never
<?php
// Conectați-vă la baza de date pentru utilizator
$servername_cal = "localhost"; // De obicei, serverul este "localhost", dar verificați cu furnizorul dvs. de hosting.
$username_cal = "horiamcc_user";
$password_cal = "Pysquaifk!1@@";
$dbname_cal = "horiamcc_cal";

// Crearea conexiunii
$connss = new mysqli($servername_cal, $username_cal, $password_cal, $dbname_cal);
global $connss;

// Verificarea conexiunii
if ($connss->connect_error) {
    die("Conexiune eșuată: " . $connss->connect_error);
}
session_start();

// Verificăm dacă utilizatorul este autentificat
if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] !== true) {
    header('Location: login.php');
    exit;
}

// Mesajul afișat după crearea evenimentului
$message = '';

// Verificăm dacă s-a trimis formularul și adăugăm evenimentul în calendar
if (isset($_POST['submit'])) {
    // Obținem informațiile din formular
    $event_date = $_POST['date'];
    $event_label = $_POST['label'];
    $event_artists = $_POST['artists'];
    $event_details = $_POST['details'];
    $created_by = $_SESSION['username']; // adăugăm numele de utilizator al persoanei care a creat evenimentul

    // Inserarea evenimentului în baza de date
    $sql = "INSERT INTO events (event_date, event_label, event_artists, event_details, created_by) VALUES (?, ?, ?, ?, ?)";
    $stmt = $connss->prepare($sql);
    $stmt->bind_param("sssss", $event_date, $event_label, $event_artists, $event_details, $created_by);
    
    if ($stmt->execute()) {
        // Setăm mesajul de succes
        $message = 'Evenimentul a fost adăugat cu succes în calendar.';
    } else {
        echo "Eroare: " . $sql . "<br>" . $connss->error;
    }

    // Redirecționăm către cal.php cu parametrii transmiși prin URL
    header("Location: cal.php?date=" . urlencode($event_date) . "&role=" . urlencode($event_label) . "&session_with=" . urlencode($event_artists) . "&message=" . urlencode($message));
    exit;
}

// Funcția pentru a lista evenimentele dintr-o anumită zi
function list_events($date, $connss) {
    $output = '';
    $username = $_SESSION['username']; // obținem numele de utilizator al persoanei care a creat evenimentul
    $sql = "SELECT id, event_label, event_artists, event_details, event_date FROM events WHERE event_date = ? AND created_by = ?";
    $stmt = $connss->prepare($sql);
    $stmt->bind_param("ss", $date, $username);
    $stmt->execute();
    $result = $stmt->get_result();

    if ($result->num_rows > 0) {
        setlocale(LC_TIME, 'ro_RO.utf8');
        while ($event = $result->fetch_assoc()) {
            $output .= '<li style="list-style: auto; text-shadow: 0px 0px 4px #7f5af0;"><strong>' . $event['event_label'] . ':</strong><br>' . ' - ' .$event['event_artists'] . ' - ' . $event['event_details'] . ' - ORA ' . strftime('%H:%M', strtotime($event['event_date'])) . '<form method="post" style="display:inline; background: transparent;"><input type="hidden" name="delete_date" value="' . $date . '"><button class="delete-event" type="submit" name="delete"><i class="fas fa-times"></i></button></form> <a href="#" class="edit-event" data-id="' . $event['id'] . '"><i class="fas fa-edit"></i></a></li>';

        }
    }
    return $output;
}

// Verificăm dacă s-a trimis formularul de ștergere și ștergem evenimentul din baza de date
if (isset($_POST['delete'])) {
    $delete_date = $_POST['delete_date'];
    $username = $_SESSION['username']; // obținem numele de utilizator al persoanei care a creat evenimentul

    $sql = "DELETE FROM events WHERE event_date = ? AND created_by = ?";
    $stmt = $connss->prepare($sql);
    $stmt->bind_param("ss", $delete_date, $username);

    if ($stmt->execute()) {
        $message = 'Evenimentul a fost șters cu succes.';
    } else {
        echo "Eroare: " . $sql . "<br>" . $connss->error;
    }


}

?>






<!DOCTYPE html>
<html lang="ro">
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"/>

<script>
        
window.addEventListener('load', function() {
  var loadingScreen = document.getElementById('loading-screen');
  loadingScreen.style.opacity = 1;
  setTimeout(function() {
    loadingScreen.style.opacity = 0;
    setTimeout(function() {
      loadingScreen.style.display = 'none';
    }, 1000);
  }, 1000); // timpul în milisecunde pentru care se afișează ecranul de încărcare
});

window.onload = function() {
    // Selectăm toate elementele cu clasa "edit-event"
    var editButtons = document.querySelectorAll('.edit-event');

    // Adăugăm un event listener pentru fiecare buton
    for (var i = 0; i < editButtons.length; i++) {
        editButtons[i].addEventListener('click', function(e) {
            // Prevenim comportamentul default al link-ului
            e.preventDefault();

            // Obținem id-ul evenimentului din atributul "data-id"
            var eventId = this.getAttribute('data-id');

            // Căutăm evenimentul în baza de date folosind AJAX
            var xhr = new XMLHttpRequest();
            xhr.open('POST', 'get_event.php', true);
            xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            xhr.onload = function() {
                if (this.status == 200) {
                    // Obținem evenimentul din răspunsul AJAX
                    var event = JSON.parse(this.responseText);

                    // Populăm formularul cu detaliile evenimentului
                    document.getElementById('date').value = event.event_date;
                    document.getElementById('label').value = event.event_label;
                    document.getElementById('artists').value = event.event_artists;
                    document.getElementById('details').value = event.event_details;

                    // Afișăm formularul
                    document.getElementById('edit-form').style.display = 'block';
                }
            }
            xhr.send('id=' + eventId);
        });
    }

    // Adăugăm un event listener pentru butonul de închidere al formularului
    document.getElementById('close-form').addEventListener('click', function(e) {
        // Prevenim comportamentul default al link-ului
        e.preventDefault();

        // Ascundem formularul
        document.getElementById('edit-form').style.display = 'none';
    });
}



    </script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"/>
    <meta charset="UTF-8">
    <title>Calendar</title>

    <!-- Folosim fontul "Open Sans" de pe Google Fonts -->
    <link href="https://fonts.googleapis.com/css?family=Open+Sans&display=swap" rel="stylesheet">

<style>
  /* Setăm fontul pentru întreg documentul */
  body {
    font-family: 'Open Sans', sans-serif;
  }

  /* Setăm culorile pentru background, text și link-uri */
  body {
    background-color: #1e1f2b;
    color: #fff;
  }

  a {
    color: #7f5af0;
  }

  a:hover {
    color: #5c3ab8;
  }

  /* Setăm stilul pentru titlu și buton */
  h1, button {
    font-weight: normal;
    margin-top: 0;
  }

  /* Setăm stilul pentru formular */
  form {
    background-color: #2d2f3e;
    padding: 20px;
    margin-top: 20px;
    border-radius: 5px;
  }

  label {
    display: block;
    margin-bottom: 5px;
    font-weight: bold;
  }

  input[type="date"], select, textarea {
    width: 100%;
    padding: 10px;
    margin-bottom: 20px;
    border: none;
    border-radius: 5px;
    font-size: 16px;
    background-color: #1e1f2b;
    color: #fff;
    border: 1px solid #7f5af0;
  }

  input[type="date"]::-webkit-calendar-picker-indicator {
    filter: invert(1);
  }

  input[type="text"] {
    width: 100%;
    padding: 12px 20px;
    margin: 8px 0;
    box-sizing: border-box;
    border: 2px solid #ccc;
    border-radius: 4px;
    background-color: #f8f8f8;
    font-size: 16px;
  }

  input[type="time"]::-webkit-calendar-picker-indicator {
    filter: invert(1);
  }

  input[type="submit"] {
    background-color: #7f5af0;
    color: white;
    padding: 12px 20px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    transition: background-color 0.2s ease-in-out;
  }

  input[type="submit"]:hover {
    background-color: #5c3ab8;
  }

  .container {
    border-radius: 5px;
    background-color: #2d2f3e;
    padding: 20px;
    margin-top: 20px;
  }

  /* Stiluri pentru calendar */
  table {
    border-collapse: collapse;
    margin: 20px 0;
    width: 100%;
  }

  td {
    border: 1px solid #ccc;
    padding: 5px;
    text-align: center;
    vertical-align: middle;
    background-color: #1e1f2b;
    color: #fff;
  }

  th {
    border: 1px solid #ccc;
    padding: 5px;
    text-align: center;
    vertical-align: middle;
    background-color: #7f5af0;
    color: #fff;
  }

.today {
    background-color: #7f5af0;
    color: white;
}

.event {
    font-weight: bold;
}

.event-details {
    margin-left: 10px;
    font-size: 14px;
}

/* Stiluri pentru dispozitive mobile */
@media only screen and (max-width: 600px) {
    /* Stiluri pentru formular */
    form {
        margin-top: 10px;
    }

    input[type="text"], select, textarea {
        font-size: 16px;
    }

    input[type="submit"] {
        padding: 10px;
        font-size: 14px;
    }

    /* Stiluri pentru calendar */
    td, th {
        font-size: 14px;
        padding: 2px;
    }

    .today {
        font-weight: bold;
        font-size: 14px;
    }

    .event {
        font-size: 14px;
    }

    .event-details {
        font-size: 12px;
    }
}
    .wrapper {
        max-width: 800px;
        margin: 0 auto;
        padding: 20px;
    }

    input[type="datetime-local"] {
  width: 100%;
  padding: 10px;
  margin-bottom: 20px;
  border: none;
  border-radius: 5px;
  font-size: 16px;
  background-color: #1e1f2b;
  color: #fff;
  border: 1px solid #7f5af0;
}

input[type="datetime-local"]::-webkit-calendar-picker-indicator {
  filter: invert(1);
}
.delete-event {
    display: inline-block;
    width: 20px;
    height: 20px;
    line-height: 20px;
    text-align: center;
    background-color: #1e1f2b;
    color: #fff;
    font-weight: bold;
    border: none;
    border-radius: 50%;
    text-decoration: none;
    padding: 0;
    margin: 0;
    cursor: pointer;
}

.delete-event:hover {
  background-color: #1e1f2b75;
}

.delete-event i {
text-align: center;
    margin: 0;
    padding: 0;
    font-size: 14px;
}

a.logout {
  color: #7f5af0;
  text-decoration: none;
  font-size: 16px;
  margin-left: 20px;
}

a.logout:hover {
  color: #5c3ab8;
}
        nav {
  background-color: #1e1f2b;
  padding: 15px;
  text-align: end;
}

nav a {
  color: #fff;
  text-decoration: none;
  font-size: 18px;
  margin-right: 15px;
}

nav a:hover {
  color: #7f5af0;
}
#loading-screen {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0,0,0,0.5);
  z-index: 9999;
  display: flex;
  justify-content: center;
  align-items: center;
  backdrop-filter: blur(10px);
}


.spinner {
  width: 50px;
  height: 50px;
  border: 5px solid rgba(0, 0, 0, 0.1);
  border-top-color: #1e88e5;
  border-radius: 50%;
  animation: spinner 1s linear infinite;
}

@keyframes spinner {
  to {
    transform: rotate(360deg);
  }
}

/* Adăugat pentru a face containerul responsiv */
.container {
    max-width: 100%;
    margin: auto;

}

/* Adăugat pentru a face h1 și h2 responsiv */
h1, h2 {
    font-size: 1.5rem;
}

/* Adăugat pentru a face textarea responsiv */
textarea {
    resize: vertical;
}

/* Media queries adăugate pentru a ajusta stilurile în funcție de dimensiunea ecranului */
@media (min-width: 768px) {
    h1, h2 {
        font-size: 2rem;
    }
}

h2 {

    font-size: medium;
}
</style>

</head>
<body>
        <div id="loading-screen">
  <div class="spinner"></div>
</div>
<div id="edit-event-dialog" title="Editare programare sesiune" style="display: none;">
    <form id="edit-event-form">
        <label for="edit-date">Data și ora:</label>
        <input type="datetime-local" id="edit-date" name="date" required>

        <label for="edit-label">Label:</label>
        <select name="label" id="edit-label">
            <option value="Xtra Music Media">Xtra Music Media</option>
            <option value="Xtra Music Records">Xtra Music Records</option>
            <!-- Adăugați aici alte opțiuni dacă este necesar -->
        </select>

        <label for="edit-artists">Cu cine:</label>
        <input type="text" id="edit-artists" name="artists" required>

        <label for="edit-details">Detalii:</label>
        <textarea id="edit-details" name="details" required></textarea>

        <input type="hidden" id="edit-id" name="id">

        <input type="submit" value="Actualizează">
    </form>
</div>

    <nav>
  <a href="dashboard.php">Înapoi la Dashboard</a>
</nav>
    <div class="wrapper">
    <div class="container">
        <h1>Programează o sesiune</h1>
        <div class="message <?php echo $message ? (strpos($message, 'Eroare') !== false ? 'error' : 'success') : ''; ?>">
            <?php echo $message; ?>
        </div>
<form action="cal.php" method="post">
    <label for="date">Data și ora:</label>
    <input type="datetime-local" id="date" name="date" required value="<?php echo isset($_GET['date']) ? $_GET['date'] : ''; ?>">

    <br><br>

<label for="label">Label:</label>
<select name="label" id="label">
    <option value="Xtra Music Media" <?php echo isset($_GET['role']) && $_GET['role'] == 'Xtra Music Media' ? 'selected' : ''; ?>>Xtra Music Media</option>
    <option value="The One Records" <?php echo isset($_GET['role']) && $_GET['role'] == 'The One Records' ? 'selected' : ''; ?>>The One Records</option>
    <option value="HoriaMC [Acasa]" <?php echo isset($_GET['role']) && $_GET['role'] == 'HoriaMC [Acasa]' ? 'selected' : ''; ?>>HoriaMC [Acasa]</option>
</select>

    <br><br>

<label for="artists">Artiști / Clienți:</label>
<textarea id="artists" name="artists" required><?php echo isset($_GET['session_with']) ? $_GET['session_with'] : ''; ?></textarea>

    <br><br>

<label for="details">Detalii:</label>
<textarea id="details" name="details"><?php echo isset($_GET['message']) ? $_GET['message'] : ''; ?></textarea>

    <br><br>

    <input type="submit" name="submit" value="Programează">
</form>

</div>
<div class="container">
    <h1>Sesiuni programate</h1>
    <?php
        // Obținem datele unice din baza de date pentru utilizatorul curent
        $username = $_SESSION['username']; // obținem numele de utilizator al persoanei care a creat evenimentul
        $sql = "SELECT DISTINCT event_date FROM events WHERE created_by = ? ORDER BY event_date";
        $stmt = $connss->prepare($sql);
        $stmt->bind_param("s", $username);
        $stmt->execute();
        $result = $stmt->get_result();

        // Verificăm dacă există evenimente în baza de date
        if ($result->num_rows > 0) {
            // Parcurgem fiecare dată și afișăm evenimentele din acea zi
            while ($row = $result->fetch_assoc()) {
                $date = $row['event_date'];
                setlocale(LC_TIME, 'ro_RO.utf8');
                echo '<h2>' . strftime('%A, %d %B %Y', strtotime($date)) . '</h2>';
                echo '<ul>';
                echo list_events($date, $connss);
                echo '</ul>';
            }
        } else {
            echo '<p>Nu există sesiuni programate.</p>';
        }
    ?>
</div>





</div>
</body>
</html>