Buonasera,
sto impazzendo perchè appena digito il valore nella input (e ottengo il risultato perchè la query restituisce un risultato) mi duplica la pagina a partire dall'inizio del tag body.
Perchè?
il problema dovrebbe essere nella chiamata giù dello script e più precisamente qui xhttp.open("GET", "teg_contratti.php?azienda=" + aziendaValue, true);
xhttp.send()
perché richiamo tutta la pagina.
Come faccio ad evitarlo?
<?php
// Includi il file di connessione al database
include 'db_connect2.php';
// Avvio della sessione
session_start();
// Controllo se l'utente è autenticato
if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] !== true) {
// Reindirizzamento alla pagina di login se l'utente non è autenticato
header("Location: login.php");
exit;
}
// Recupero il nomeutente e il nome dell'utente dalla sessione
$id_utente = $_SESSION['id'];
$nomeUtente = $_SESSION['username'];
$nomeuser = $_SESSION['nome'];
$cognome = $_SESSION['cognome'];
$filiale = $_SESSION['filiale'];
// Inizializzazione della variabile permessi
$permessi = 0;
// Recupero il ruolo dell'utente dalla tabella users
$query = "SELECT permessi, id, filiale FROM users WHERE username = '$nomeUtente'";
$result = mysqli_query($conn, $query);
// Controllo se la query ha restituito risultati
if ($result && mysqli_num_rows($result) == 1) {
$row = mysqli_fetch_assoc($result);
$permessi = $row['permessi'];
$id_user = $row['id'];
$filiale = $row['filiale'];
}
// Verifica il ruolo dell'utente
$ruolo = ($permessi == 9) ? "AMMINISTRATORE" : "DIPENDENTE";
$filialeuser = ($filiale == 1) ? 'Palermo' : 'Catania';
// Controlla se è stato inviato un nome di azienda tramite il campo di input
if (isset($_GET['azienda'])) {
$azienda = $_GET['azienda'];
// Recupero i dati dalla tabella costi_pratiche_garanzia collegata a lissoc, filtrando per nome azienda
$query_costi_lissoc = "
SELECT c.*, l.*
FROM costi_pratiche_garanzia c
INNER JOIN lissoc l ON c.nr_pratica = l.`NR. PRATICA`
WHERE l.`INTEST.` LIKE '%$azienda%'
";
$result_costi_lissoc = mysqli_query($conn, $query_costi_lissoc);
}
?>
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TEG e Contratti</title>
<!-- Collegamento ai fogli di stile CSS di Bootstrap -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<!-- Collegamento agli script di Bootstrap e jQuery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="css/custom.css" type="text/css" />
<style>
.custom-card {
position: relative;
display: flex;
align-items: center;
padding: 15px;
border: 1px solid #ccc;
margin-bottom: 20px;
}
.custom-card .title-container {
position: absolute;
top: -15px;
left: 15px;
background-color: #fff;
padding: 0 5px;
}
.custom-card img {
max-width: 100px;
margin-right: 10px;
}
@media (max-width: 767px) { /* Aggiungi stili specifici per schermi con larghezza massima di 767px (dispositivi mobili) */
.custom-card {
flex-direction: column; /* Imposta l'allineamento verticale per i componenti della card */
padding: 10px; /* Riduci il padding per adattarsi a schermi più piccoli */
}
.custom-card img {
max-width: 50%; /* Riduci la larghezza dell'immagine per adattarsi a schermi più piccoli */
margin: 0 auto 10px; /* Centra l'immagine orizzontalmente e aggiungi spazio sotto di essa */
}
.custom-card .title-container {
position: static; /* Ripristina la posizione statica per far sì che il titolo si allinei correttamente */
margin-bottom: 5px; /* Aggiungi uno spazio inferiore più piccolo tra il titolo e il resto del contenuto */
}
}
</style>
</head>
<body>
<nav class="navbar navbar-light">
<div class="container d-flex flex-column align-items-start">
<div class="d-flex align-items-center">
<a class="navbar-brand" href="home.php">
<img src="img/credimpresalogo.jpg" alt="CREDIMPRESA Logo" class="logo-img">
</a>
<h6 class="mr-3">User <?php echo $nomeuser . ' ' . $cognome; ?> loggato con profilo <?php echo $ruolo; ?> per la filiale di <?php echo $filialeuser; ?></h6>
<div>
<a class="btn btn-danger" href="logout.php">Logout</a>
</div>
</div>
</div>
</nav>
<div class="container mt-5">
<nav aria-label="breadcrumb">
<ol class="breadcrumb" style="display: inline-flex; width: fit-content;">
<li class="breadcrumb-item"><a href="home.php">Home</a></li>
<li class="breadcrumb-item"><a href="fido.php">Fido</a></li>
<li class="breadcrumb-item active" aria-current="page">Teg & Contratti</li>
</ol>
</nav>
<h4 class="mb-3">Benvenuto, <?php echo $nomeuser; ?></h4>
<!-- Aggiungiamo un form con un campo di input -->
<form method="get" action="teg_contratti.php">
<div class="form-group">
<label for="aziendaInput">Cerca azienda:</label>
<input type="text" class="form-control" id="aziendaInput" name="azienda" placeholder="Inserisci il nome dell'azienda" value="<?php echo isset($_GET['azienda']) ? htmlspecialchars($_GET['azienda']) : ''; ?>" onkeyup="eseguiQuery()">
</div>
<button type="submit" class="btn btn-primary">Cerca</button>
</form>
<div id="risultatiQuery"></div>
<?php
// Mostra i risultati solo se è stato inviato un nome di azienda e ci sono risultati dalla query
if (isset($azienda) && isset($result_costi_lissoc) && mysqli_num_rows($result_costi_lissoc) > 0) {
echo '<h5>Costi delle pratiche di garanzia collegati a lissoc per l\'azienda "' . htmlspecialchars($azienda) . '":</h5>';
echo '<table class="table table-bordered">';
echo '<thead>';
echo '<tr>';
// Inserire qui gli header per tutte le colonne dei dati
echo '<th>ID</th>';
echo '<th>Descrizione</th>';
echo '<th>Costo</th>';
// Esempio per le colonne di lissoc
echo '<th>Altro Campo Lissoc 1</th>';
echo '<th>Altro Campo Lissoc 2</th>';
// ... Aggiungere altre colonne di lissoc se necessario ...
echo '</tr>';
echo '</thead>';
echo '<tbody>';
// Mostra i dati dalla tabella costi_pratiche_garanzia collegata a lissoc
while ($row_costi_lissoc = mysqli_fetch_assoc($result_costi_lissoc)) {
echo '<tr>';
// Inserire qui le celle per tutte le colonne dei dati
echo '<td>' . $row_costi_lissoc['id'] . '</td>';
// Esempio per le colonne di lissoc
//echo '<td>' . $row_costi_lissoc['Altro Campo Lissoc 1'] . '</td>';
// ... Aggiungere altre celle per altre colonne di lissoc se necessario ...
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
} elseif (isset($azienda)) {
// Messaggio di avviso se non ci sono risultati
echo '<p>Nessun risultato trovato per l\'azienda "' . htmlspecialchars($azienda) . '".</p>';
}
?>
</div>
<br>
</body>
<script>
function eseguiQuery() {
var aziendaValue = document.getElementById("aziendaInput").value;
var risultatiDiv = document.getElementById("risultatiQuery");
// Rimuovi il contenuto precedente della div
risultatiDiv.innerHTML = "";
// Esegui la chiamata AJAX solo se è presente un valore nell'input
if (aziendaValue.trim() !== "") {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
risultatiDiv.innerHTML = this.responseText;
}
};
xhttp.open("GET", "teg_contratti.php?azienda=" + aziendaValue, true);
xhttp.send();
}
}
</script>
</html>