diff --git a/panel_admin_sae/logo.png b/panel_admin_sae/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..d631bc9f3c33c9b3e3cc4b8832a5fbb98904a956
Binary files /dev/null and b/panel_admin_sae/logo.png differ
diff --git a/panel_admin_sae/src/logo.png b/panel_admin_sae/src/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..d631bc9f3c33c9b3e3cc4b8832a5fbb98904a956
Binary files /dev/null and b/panel_admin_sae/src/logo.png differ
diff --git a/panel_admin_sae/src/src/Panel.java b/panel_admin_sae/src/src/Panel.java
index 21e2e75f1a421d9ece1ff1fe6a3c2bdf2ac9fcf7..079f9e0be7fa3eefa2d8dc4b48c716aee72172a6 100644
--- a/panel_admin_sae/src/src/Panel.java
+++ b/panel_admin_sae/src/src/Panel.java
@@ -1,11 +1,17 @@
package src;
+import javax.imageio.ImageIO;
import javax.swing.*;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
import java.sql.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@@ -13,11 +19,10 @@ import java.util.Comparator;
import java.util.Date;
public class Panel implements ActionListener {
-
private Connection dbConnection;
private JFrame frame;
private JTabbedPane tabbedPane;
- private JPanel competitionsPanel;
+ private JPanel competitionsPanel, resultsPanel; // Ajout de resultsPanel ici
private JTextField lieuField, horaireField, placesField;
private JButton addButton, deleteButton, updateButton, loginButton;
private JTable competitionsTable;
@@ -26,11 +31,13 @@ public class Panel implements ActionListener {
private JPasswordField passwordField;
private boolean isLoggedIn = false;
+
+
public Panel(Connection connection) {
this.dbConnection = connection;
frame = new JFrame("Panel");
- frame.setSize(800, 600);
+ frame.setSize(1280, 720); // Résolution HD
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try {
@@ -39,17 +46,20 @@ public class Panel implements ActionListener {
e.printStackTrace();
}
+
+
tabbedPane = new JTabbedPane();
- // Add the login panel
JPanel loginPanel = createLoginPanel();
tabbedPane.addTab("Login", loginPanel);
- // Add the competitions panel but set it as disabled initially
competitionsPanel = createCompetitionsPanel();
tabbedPane.addTab("Gérer Compétitions", competitionsPanel);
tabbedPane.setEnabledAt(1, false);
+ resultsPanel = createResultsPanel();
+ tabbedPane.addTab("Gérer Scores", resultsPanel);
+
frame.add(tabbedPane);
frame.setVisible(true);
}
@@ -62,16 +72,37 @@ public class Panel implements ActionListener {
gbc.insets = new Insets(15, 15, 15, 15);
gbc.fill = GridBagConstraints.HORIZONTAL;
+ // Chargement et ajout du logo redimensionné
+ try {
+ BufferedImage logoImage = ImageIO.read(new File("logo.png"));
+
+ // Redimensionner le logo
+ int newWidth = 100; // Largeur souhaitée
+ int newHeight = 100; // Hauteur souhaitée
+ Image resizedImage = logoImage.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH);
+ ImageIcon logoIcon = new ImageIcon(resizedImage);
+
+ JLabel logoLabel = new JLabel(logoIcon);
+ gbc.gridx = 0;
+ gbc.gridy = 0;
+ gbc.gridwidth = 2;
+ panel.add(logoLabel, gbc);
+ gbc.gridy = 1; // Incrémentation de la position Y pour le titre
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ // Ajout du titre
JLabel titleLabel = new JLabel("Connexion");
titleLabel.setFont(new Font("Arial", Font.BOLD, 36));
gbc.gridx = 0;
- gbc.gridy = 0;
gbc.gridwidth = 2;
panel.add(titleLabel, gbc);
+ // Ajout du label et champ pour le nom d'utilisateur
JLabel usernameLabel = new JLabel("Nom d'utilisateur:");
usernameLabel.setFont(new Font("Arial", Font.PLAIN, 20));
- gbc.gridy = 1;
+ gbc.gridy = 2;
gbc.gridwidth = 1;
panel.add(usernameLabel, gbc);
@@ -80,10 +111,11 @@ public class Panel implements ActionListener {
gbc.gridx = 1;
panel.add(loginField, gbc);
+ // Ajout du label et champ pour le mot de passe
JLabel passwordLabel = new JLabel("Mot de passe:");
passwordLabel.setFont(new Font("Arial", Font.PLAIN, 20));
gbc.gridx = 0;
- gbc.gridy = 2;
+ gbc.gridy = 3;
panel.add(passwordLabel, gbc);
passwordField = new JPasswordField(25);
@@ -91,14 +123,16 @@ public class Panel implements ActionListener {
gbc.gridx = 1;
panel.add(passwordField, gbc);
+ // Ajout du bouton de connexion
loginButton = new JButton("Connexion");
loginButton.setFont(new Font("Arial", Font.BOLD, 20));
loginButton.addActionListener(this);
gbc.gridx = 0;
- gbc.gridy = 3;
+ gbc.gridy = 4;
gbc.gridwidth = 2;
panel.add(loginButton, gbc);
+ // Action lors de l'appui sur 'Entrée' dans le champ du mot de passe
passwordField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
@@ -109,49 +143,80 @@ public class Panel implements ActionListener {
return panel;
}
+
+
private JPanel createCompetitionsPanel() {
JPanel panel = new JPanel(new BorderLayout());
- competitionsTableModel = new DefaultTableModel();
+ // Créer un modèle de tableau avec une surcharge de isCellEditable
+ competitionsTableModel = new DefaultTableModel() {
+ @Override
+ public boolean isCellEditable(int row, int column) {
+ // Rendre toutes les cellules non éditables
+ return false;
+ }
+ };
+
competitionsTableModel.addColumn("ID");
competitionsTableModel.addColumn("Lieu");
competitionsTableModel.addColumn("Horaire");
competitionsTableModel.addColumn("Places Disponibles");
+
competitionsTable = new JTable(competitionsTableModel);
TableRowSorter<DefaultTableModel> sorter = new TableRowSorter<>(competitionsTableModel);
competitionsTable.setRowSorter(sorter);
- sorter.setComparator(0, Comparator.<Object, Integer>comparing(o -> (Integer) o));
- sorter.setComparator(3, Comparator.<Object, Integer>comparing(o -> (Integer) o));
+ sorter.setComparator(0, Comparator.comparingInt(o -> (Integer) o));
+ sorter.setComparator(3, Comparator.comparingInt(o -> (Integer) o));
JScrollPane scrollPane = new JScrollPane(competitionsTable);
panel.add(scrollPane, BorderLayout.CENTER);
- JPanel inputPanel = new JPanel(new GridLayout(4, 2, 10, 10)); // Ajout de l'espacement entre les composants
- inputPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); // Ajout de marges
+ competitionsTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
+ public void valueChanged(ListSelectionEvent event) {
+ if (!event.getValueIsAdjusting() && competitionsTable.getSelectedRow() != -1) {
+ int selectedRow = competitionsTable.getSelectedRow();
+
+ if (selectedRow >= 0 && selectedRow < competitionsTableModel.getRowCount()) {
+ String lieu = (String) competitionsTableModel.getValueAt(selectedRow, 1);
+ String horaire = (String) competitionsTableModel.getValueAt(selectedRow, 2);
+ String places = String.valueOf(competitionsTableModel.getValueAt(selectedRow, 3));
+
+ lieuField.setText(lieu);
+ horaireField.setText(horaire);
+ placesField.setText(places);
+ }
+ }
+ }
+ });
+
+ JPanel inputPanel = new JPanel(new GridLayout(4, 2, 10, 10));
+ inputPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
inputPanel.add(new JLabel("Lieu:"));
lieuField = new JTextField();
+ lieuField.setToolTipText("Entrez le lieu de la compétition");
inputPanel.add(lieuField);
inputPanel.add(new JLabel("Horaire (yyyy-MM-dd HH:mm:ss):"));
horaireField = new JTextField();
+ horaireField.setToolTipText("Entrez l'horaire au format yyyy-MM-dd HH:mm:ss");
inputPanel.add(horaireField);
inputPanel.add(new JLabel("Places Disponibles:"));
placesField = new JTextField();
+ placesField.setToolTipText("Entrez le nombre de places disponibles");
inputPanel.add(placesField);
addButton = new JButton("Ajouter");
- deleteButton = new JButton("Supprimer");
- updateButton = new JButton("Modifier");
-
addButton.addActionListener(this);
+ deleteButton = new JButton("Supprimer");
deleteButton.addActionListener(this);
+ updateButton = new JButton("Modifier");
updateButton.addActionListener(this);
- JPanel buttonPanel = new JPanel(new GridLayout(1, 3, 10, 0)); // Ajout de l'espacement entre les boutons
+ JPanel buttonPanel = new JPanel(new GridLayout(1, 3, 10, 0));
buttonPanel.add(addButton);
buttonPanel.add(deleteButton);
buttonPanel.add(updateButton);
@@ -167,6 +232,8 @@ public class Panel implements ActionListener {
return panel;
}
+
+
private void loadCompetitionsData() {
competitionsTableModel.setRowCount(0);
try {
@@ -185,22 +252,35 @@ public class Panel implements ActionListener {
}
} catch (SQLException e) {
e.printStackTrace();
+ JOptionPane.showMessageDialog(frame, "Erreur lors du chargement des données.", "Erreur", JOptionPane.ERROR_MESSAGE);
}
}
+
@Override
public void actionPerformed(ActionEvent e) {
+ // Gestion de l'événement de clic sur le bouton de connexion
if (e.getSource() == loginButton) {
authenticateUser();
- } else if (e.getSource() == addButton && isLoggedIn) {
- addCompetition();
- } else if (e.getSource() == deleteButton && isLoggedIn) {
- deleteCompetition();
- } else if (e.getSource() == updateButton && isLoggedIn) {
- updateCompetition();
+ }
+
+ // Gestion de l'événement de clic sur le bouton "Ajouter"
+ else if (e.getSource() == addButton && isLoggedIn) {
+ showAddCompetitionDialog(); // Ouvre la boîte de dialogue pour ajouter une compétition
+ }
+
+ // Gestion de l'événement de clic sur le bouton "Supprimer"
+ else if (e.getSource() == deleteButton && isLoggedIn) {
+ deleteCompetition(); // Supprime la compétition sélectionnée
+ }
+
+ // Gestion de l'événement de clic sur le bouton "Modifier"
+ else if (e.getSource() == updateButton && isLoggedIn) {
+ updateCompetition(); // Met à jour la compétition sélectionnée
}
}
+
private void authenticateUser() {
String enteredLogin = loginField.getText();
char[] enteredPasswordChars = passwordField.getPassword();
@@ -227,47 +307,81 @@ public class Panel implements ActionListener {
}
}
- private void addCompetition() {
- try {
- String lieu = lieuField.getText();
- String horaireStr = horaireField.getText();
- String placesStr = placesField.getText();
+ private void showAddCompetitionDialog() {
+ JDialog addDialog = new JDialog(frame, "Ajouter une Compétition", true);
+ addDialog.setLayout(new GridLayout(0, 2));
+ addDialog.setSize(400, 200);
+
+ JTextField addLieuField = new JTextField();
+ JTextField addDateField = new JTextField(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
+ SpinnerDateModel timeModel = new SpinnerDateModel();
+ JSpinner addTimeSpinner = new JSpinner(timeModel);
+ JSpinner.DateEditor timeEditor = new JSpinner.DateEditor(addTimeSpinner, "HH:mm:ss");
+ addTimeSpinner.setEditor(timeEditor);
+ JTextField addPlacesField = new JTextField();
+
+ addDialog.add(new JLabel("Lieu:"));
+ addDialog.add(addLieuField);
+ addDialog.add(new JLabel("Date (yyyy-MM-dd):"));
+ addDialog.add(addDateField);
+ addDialog.add(new JLabel("Heure (HH:mm:ss):"));
+ addDialog.add(addTimeSpinner);
+ addDialog.add(new JLabel("Places Disponibles:"));
+ addDialog.add(addPlacesField);
+
+ JButton submitButton = new JButton("Ajouter");
+ submitButton.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ String lieu = addLieuField.getText().trim();
+ String date = addDateField.getText().trim();
+ String time = timeEditor.getFormat().format(addTimeSpinner.getValue());
+ String places = addPlacesField.getText().trim();
+
+ if (lieu.isEmpty() || places.isEmpty()) {
+ JOptionPane.showMessageDialog(addDialog, "Le lieu et le nombre de places disponibles ne peuvent pas être vides.", "Erreur", JOptionPane.ERROR_MESSAGE);
+ return;
+ }
- if (!placesStr.isEmpty()) {
try {
- int placesDisponibles = Integer.parseInt(placesStr);
-
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Date parsedDate = sdf.parse(horaireStr);
+ String dateTime = date + " " + time;
+ Date parsedDate = sdf.parse(dateTime);
Timestamp horaire = new Timestamp(parsedDate.getTime());
+ int placesDisponibles = Integer.parseInt(places);
- PreparedStatement stmt = dbConnection.prepareStatement("INSERT INTO competitions (Lieu, Horaire, PlacesDisponibles) VALUES (?, ?, ?)");
+ // Insertion des données dans la base de données
+ PreparedStatement stmt = dbConnection.prepareStatement(
+ "INSERT INTO competitions (Lieu, Horaire, PlacesDisponibles) VALUES (?, ?, ?)");
stmt.setString(1, lieu);
stmt.setTimestamp(2, horaire);
stmt.setInt(3, placesDisponibles);
int rowsAffected = stmt.executeUpdate();
-
if (rowsAffected > 0) {
- JOptionPane.showMessageDialog(frame, "Compétition ajoutée avec succès.", "Succès", JOptionPane.INFORMATION_MESSAGE);
- loadCompetitionsData();
+ JOptionPane.showMessageDialog(addDialog, "Compétition ajoutée avec succès.", "Succès", JOptionPane.INFORMATION_MESSAGE);
+ loadCompetitionsData(); // Mettre à jour la liste des compétitions
} else {
- JOptionPane.showMessageDialog(frame, "Erreur lors de l'ajout de la compétition.", "Erreur", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(addDialog, "Erreur lors de l'ajout de la compétition.", "Erreur", JOptionPane.ERROR_MESSAGE);
}
+ addDialog.dispose();
} catch (NumberFormatException ex) {
- JOptionPane.showMessageDialog(frame, "Veuillez entrer un nombre valide pour les places disponibles.", "Erreur", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(addDialog, "Le nombre de places doit être un nombre valide.", "Erreur", JOptionPane.ERROR_MESSAGE);
} catch (ParseException ex) {
- JOptionPane.showMessageDialog(frame, "Format de date invalide.", "Erreur", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(addDialog, "Format de date ou d'heure invalide.", "Erreur", JOptionPane.ERROR_MESSAGE);
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ JOptionPane.showMessageDialog(addDialog, "Erreur lors de l'accès à la base de données.", "Erreur", JOptionPane.ERROR_MESSAGE);
}
- } else {
- JOptionPane.showMessageDialog(frame, "Veuillez entrer un nombre pour les places disponibles.", "Erreur", JOptionPane.ERROR_MESSAGE);
}
- } catch (SQLException ex) {
- ex.printStackTrace();
- }
+ });
+
+ addDialog.add(submitButton);
+ addDialog.setVisible(true);
}
+
private void deleteCompetition() {
int selectedRow = competitionsTable.getSelectedRow();
if (selectedRow != -1) {
@@ -296,49 +410,215 @@ public class Panel implements ActionListener {
private void updateCompetition() {
int selectedRow = competitionsTable.getSelectedRow();
if (selectedRow != -1) {
- try {
- int competitionID = (int) competitionsTableModel.getValueAt(selectedRow, 0);
- String lieu = lieuField.getText();
- String horaireStr = horaireField.getText();
- String placesStr = placesField.getText();
+ int competitionID = (int) competitionsTableModel.getValueAt(selectedRow, 0);
+ String lieu = lieuField.getText();
+ String horaireStr = horaireField.getText();
+ String placesStr = placesField.getText();
- if (!horaireStr.isEmpty()) { // Ajout de la vérification de non-nullité et non-vacuité
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Date parsedDate = sdf.parse(horaireStr);
- Timestamp horaire = new Timestamp(parsedDate.getTime());
+ if (lieu.isEmpty() || horaireStr.isEmpty() || placesStr.isEmpty()) {
+ JOptionPane.showMessageDialog(frame, "Tous les champs doivent être remplis.", "Erreur", JOptionPane.ERROR_MESSAGE);
+ return;
+ }
- int placesDisponibles = Integer.parseInt(placesStr);
+ try {
+ int placesDisponibles = Integer.parseInt(placesStr);
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ Date parsedDate = sdf.parse(horaireStr);
+ Timestamp horaire = new Timestamp(parsedDate.getTime());
- PreparedStatement stmt = dbConnection.prepareStatement("UPDATE competitions SET Lieu = ?, Horaire = ?, PlacesDisponibles = ? WHERE CompetitionID = ?");
- stmt.setString(1, lieu);
- stmt.setTimestamp(2, horaire);
- stmt.setInt(3, placesDisponibles);
- stmt.setInt(4, competitionID);
+ PreparedStatement stmt = dbConnection.prepareStatement("UPDATE competitions SET Lieu = ?, Horaire = ?, PlacesDisponibles = ? WHERE CompetitionID = ?");
+ stmt.setString(1, lieu);
+ stmt.setTimestamp(2, horaire);
+ stmt.setInt(3, placesDisponibles);
+ stmt.setInt(4, competitionID);
- int rowsAffected = stmt.executeUpdate();
+ int rowsAffected = stmt.executeUpdate();
- if (rowsAffected > 0) {
- JOptionPane.showMessageDialog(frame, "Compétition mise à jour avec succès.", "Succès", JOptionPane.INFORMATION_MESSAGE);
- loadCompetitionsData();
- } else {
- JOptionPane.showMessageDialog(frame, "Erreur lors de la mise à jour de la compétition.", "Erreur", JOptionPane.ERROR_MESSAGE);
- }
+ if (rowsAffected > 0) {
+ JOptionPane.showMessageDialog(frame, "Compétition mise à jour avec succès.", "Succès", JOptionPane.INFORMATION_MESSAGE);
+ loadCompetitionsData();
} else {
- JOptionPane.showMessageDialog(frame, "Veuillez entrer une date valide.", "Erreur", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(frame, "Erreur lors de la mise à jour de la compétition.", "Erreur", JOptionPane.ERROR_MESSAGE);
}
- } catch (SQLException | ParseException | NumberFormatException ex) {
+ } catch (NumberFormatException | ParseException ex) {
+ JOptionPane.showMessageDialog(frame, "Format de date ou nombre de places invalide.", "Erreur", JOptionPane.ERROR_MESSAGE);
+ } catch (SQLException ex) {
ex.printStackTrace();
- JOptionPane.showMessageDialog(frame, "Erreur lors de la mise à jour de la compétition.", "Erreur", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(frame, "Erreur lors de l'accès à la base de données.", "Erreur", JOptionPane.ERROR_MESSAGE);
}
} else {
JOptionPane.showMessageDialog(frame, "Veuillez sélectionner une compétition à mettre à jour.", "Sélection requise", JOptionPane.WARNING_MESSAGE);
}
}
+ private JPanel createResultsPanel() {
+ JPanel panel = new JPanel();
+ panel.setLayout(new BorderLayout());
+
+ // Création du modèle de tableau
+ DefaultTableModel resultsTableModel = new DefaultTableModel();
+ resultsTableModel.addColumn("ResultatID");
+ resultsTableModel.addColumn("CompetitionID");
+ resultsTableModel.addColumn("Gagnant");
+ resultsTableModel.addColumn("Score");
+
+ // Création du JTable pour afficher les résultats
+ JTable resultsTable = new JTable(resultsTableModel);
+
+ // Chargement des données dans le tableau
+ loadResultsData(resultsTableModel);
+
+ // Ajout du tableau à un JScrollPane et ensuite au panel
+ JScrollPane scrollPane = new JScrollPane(resultsTable);
+ panel.add(scrollPane, BorderLayout.CENTER);
+
+ // Création du panneau pour les entrées utilisateur
+ JPanel inputPanel = new JPanel();
+ inputPanel.setLayout(new GridLayout(0, 2, 10, 10)); // Mise en page en grille
+ inputPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
+
+ // Ajout des champs de saisie et des étiquettes
+ inputPanel.add(new JLabel("ResultatID:"));
+ JTextField resultatIDField = new JTextField();
+ inputPanel.add(resultatIDField);
+
+ inputPanel.add(new JLabel("CompetitionID:"));
+ JTextField competitionIDField = new JTextField();
+ inputPanel.add(competitionIDField);
+
+ inputPanel.add(new JLabel("Gagnant:"));
+ JTextField gagnantField = new JTextField();
+ inputPanel.add(gagnantField);
+
+ inputPanel.add(new JLabel("Score:"));
+ JTextField scoreField = new JTextField();
+ inputPanel.add(scoreField);
+
+ // Ajout des boutons pour ajouter, supprimer, et mettre à jour
+ JPanel buttonPanel = new JPanel(new GridLayout(1, 3, 10, 0));
+ JButton addButton = new JButton("Ajouter");
+ JButton deleteButton = new JButton("Supprimer");
+ JButton updateButton = new JButton("Mettre à jour");
+
+ // Ajout des écouteurs d'événements pour les boutons
+ addButton.addActionListener(e -> addMatchScore(resultatIDField, competitionIDField, gagnantField, scoreField, resultsTableModel));
+ deleteButton.addActionListener(e -> deleteMatchScore(resultatIDField, resultsTableModel));
+ updateButton.addActionListener(e -> updateMatchScore(resultatIDField, competitionIDField, gagnantField, scoreField, resultsTableModel));
+
+ buttonPanel.add(addButton);
+ buttonPanel.add(deleteButton);
+ buttonPanel.add(updateButton);
+
+ // Ajout des panneaux d'entrée et des boutons au panneau principal
+ JPanel southPanel = new JPanel(new BorderLayout());
+ southPanel.add(inputPanel, BorderLayout.NORTH);
+ southPanel.add(buttonPanel, BorderLayout.SOUTH);
+
+ panel.add(southPanel, BorderLayout.SOUTH);
+
+ return panel;
+ }
+
+
+ private void loadResultsData(DefaultTableModel resultsTableModel) {
+ resultsTableModel.setRowCount(0); // Effacer les données existantes
+ try {
+ Statement stmt = dbConnection.createStatement();
+ ResultSet rs = stmt.executeQuery("SELECT * FROM resultats");
+ while (rs.next()) {
+ int resultatID = rs.getInt("ResultatID");
+ int competitionID = rs.getInt("CompetitionID");
+ String gagnant = rs.getString("Gagnant");
+ String score = rs.getString("Score");
+
+ resultsTableModel.addRow(new Object[]{resultatID, competitionID, gagnant, score});
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ JOptionPane.showMessageDialog(frame, "Erreur lors du chargement des données des résultats.", "Erreur", JOptionPane.ERROR_MESSAGE);
+ }
+ }
+
+
+ private void addMatchScore(JTextField resultatIDField, JTextField competitionIDField, JTextField gagnantField, JTextField scoreField, DefaultTableModel resultsTableModel) {
+ try {
+ int resultatID = Integer.parseInt(resultatIDField.getText());
+ int competitionID = Integer.parseInt(competitionIDField.getText());
+ String gagnant = gagnantField.getText();
+ String score = scoreField.getText();
+
+ PreparedStatement stmt = dbConnection.prepareStatement("INSERT INTO resultats (ResultatID, CompetitionID, Gagnant, Score) VALUES (?, ?, ?, ?)");
+ stmt.setInt(1, resultatID);
+ stmt.setInt(2, competitionID);
+ stmt.setString(3, gagnant);
+ stmt.setString(4, score);
+
+ int rowsAffected = stmt.executeUpdate();
+ if (rowsAffected > 0) {
+ JOptionPane.showMessageDialog(frame, "Score ajouté avec succès.", "Succès", JOptionPane.INFORMATION_MESSAGE);
+ loadResultsData(resultsTableModel); // Recharger les données
+ } else {
+ JOptionPane.showMessageDialog(frame, "Erreur lors de l'ajout du score.", "Erreur", JOptionPane.ERROR_MESSAGE);
+ }
+ } catch (NumberFormatException | SQLException e) {
+ e.printStackTrace();
+ JOptionPane.showMessageDialog(frame, "Erreur lors de l'ajout du score.", "Erreur", JOptionPane.ERROR_MESSAGE);
+ }
+ }
+
+
+ private void deleteMatchScore(JTextField resultatIDField, DefaultTableModel resultsTableModel) {
+ try {
+ int resultatID = Integer.parseInt(resultatIDField.getText());
+
+ PreparedStatement stmt = dbConnection.prepareStatement("DELETE FROM resultats WHERE ResultatID = ?");
+ stmt.setInt(1, resultatID);
+
+ int rowsAffected = stmt.executeUpdate();
+ if (rowsAffected > 0) {
+ JOptionPane.showMessageDialog(frame, "Score supprimé avec succès.", "Succès", JOptionPane.INFORMATION_MESSAGE);
+ loadResultsData(resultsTableModel); // Recharger les données
+ } else {
+ JOptionPane.showMessageDialog(frame, "Erreur lors de la suppression du score.", "Erreur", JOptionPane.ERROR_MESSAGE);
+ }
+ } catch (NumberFormatException | SQLException e) {
+ e.printStackTrace();
+ JOptionPane.showMessageDialog(frame, "Erreur lors de la suppression du score.", "Erreur", JOptionPane.ERROR_MESSAGE);
+ }
+ }
+
+
+ private void updateMatchScore(JTextField resultatIDField, JTextField competitionIDField, JTextField gagnantField, JTextField scoreField, DefaultTableModel resultsTableModel) {
+ try {
+ int resultatID = Integer.parseInt(resultatIDField.getText());
+ int competitionID = Integer.parseInt(competitionIDField.getText());
+ String gagnant = gagnantField.getText();
+ String score = scoreField.getText();
+
+ PreparedStatement stmt = dbConnection.prepareStatement("UPDATE resultats SET CompetitionID = ?, Gagnant = ?, Score = ? WHERE ResultatID = ?");
+ stmt.setInt(1, competitionID);
+ stmt.setString(2, gagnant);
+ stmt.setString(3, score);
+ stmt.setInt(4, resultatID);
+
+ int rowsAffected = stmt.executeUpdate();
+ if (rowsAffected > 0) {
+ JOptionPane.showMessageDialog(frame, "Score mis à jour avec succès.", "Succès", JOptionPane.INFORMATION_MESSAGE);
+ loadResultsData(resultsTableModel); // Recharger les données
+ } else {
+ JOptionPane.showMessageDialog(frame, "Erreur lors de la mise à jour du score.", "Erreur", JOptionPane.ERROR_MESSAGE);
+ }
+ } catch (NumberFormatException | SQLException e) {
+ e.printStackTrace();
+ JOptionPane.showMessageDialog(frame, "Erreur lors de la mise à jour du score.", "Erreur", JOptionPane.ERROR_MESSAGE);
+ }
+ }
+
+
public static void main(String[] args) {
try {
- Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root");
+ Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "");
new Panel(connection);
} catch (SQLException e) {
e.printStackTrace();
diff --git a/panel_admin_sae/src/src/logo.png b/panel_admin_sae/src/src/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..d631bc9f3c33c9b3e3cc4b8832a5fbb98904a956
Binary files /dev/null and b/panel_admin_sae/src/src/logo.png differ