Problema duplicazione pagina al risultato della query

di il
2 risposte

Problema duplicazione pagina al risultato della query

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>

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte