AJAX – JSON

ajax.js

$(document).ready(function () {
   // Obtenir el valor inicial del diccionari
   var diccionariAValor = $("#dicionari_A").data("diccionari"); // Canviem el nom de la variable
   console.log("Valor inicial del diccionari:", diccionariAValor);
//-------------------------
    // Actualitzar la base de dades quan es modifica el camp #bd_A
    $("#bd_A").on("keyup", function () {
        // No permetem que el valor de la bd canviï
        console.log("El valor de la base dades roman constant:", bdValor);
    });
    //-----------------------------------------
   // Actualitzar el diccionari cada cop que es prem una tecla a l'entrada #dicionari_A
   $("#dicionari_A").on("keyup", function () {
       // No permetem que el valor del diccionari canviï
       console.log("El valor del diccionari roman constant:", diccionariAValor);
   });
   // Obtenir el valor inicial de la base de dades
   var bdValor = $("#bd_A").data("bd");
   console.log("Valor inicial de la base de dades:", bdValor);
//----------------------------------------------------------------



   //alert('linia 24');
   //-----------------------------------------
   $("#cercar").on("keyup", function () {
       console.log("Valor inicial del diccionari mut:", diccionariAValor); // Actualitzem aquí també
       var paraula = $(this).val();
       console.log("Tecla premuda: " + paraula);

       if (paraula.length > 0) {
           //--- comprova dades abans de sortir
           console.log("📤 Dades enviades a cercar_AJ.php:", {
            cercar: paraula,
            diccionari: diccionariAValor,
            bd: bdValor // 🆕 Afegit per veure si la BD s'envia
        });
           //-----------------------------------------
           $.ajax({
               url: "cercar_AJ.php",
               type: "POST",
               data: { 
                   cercar: paraula, 
                   diccionari: diccionariAValor // Enviar també el diccionari amb el nou nom
               },
               success: function (resposta) {
                   console.log("Resposta AJAX rebuda");
                   var resultats = JSON.parse(resposta);
                   var htmlResultats = resultats.map(function (item) {
                       return "<li class='resultat'>" + item + "</li>";
                   }).join("");
                   $("#resultats_autocompletar").html(htmlResultats);
               },
               error: function () {
                   console.error("Error en la crida AJAX.");
               }
           });
       } else {
           $("#resultats_autocompletar").html(""); // Esborra els resultats si no hi ha text
       }
   });

   // Afegir esdeveniment de clic per als elements de resultat
   $(document).on("click", ".resultat", function () {
       var paraulaSeleccionada = $(this).text();
       console.log("Paraula seleccionada: " + paraulaSeleccionada);
       $("#cercar").val(paraulaSeleccionada);
   });
});

exemple simulat de com podries posar un retorn en format JSON (no “JONSON”) en el teu codi PHP

<?php
// cercar.php
session_start(); // Inicia la sessió per utilitzar $_SESSION
$host = "localhost";
$user = "root";       // Actualitza aquest valor segons sigui necessari
$pass = "******8!"; // Assegura't de protegir aquest valor
$bd = $_SESSION['bd']; // Nom de la base de dades obtingut de la sessió

// Només assigna a $dbname després d'assignar $bd
$dbname = $bd;

// Crear connexió
$conn = new mysqli($host, $user, $pass, $dbname);

// Comprovar la connexió
if ($conn->connect_error) {
    // Retorna un JSON en cas d'error
    $response = array("status" => "error", "message" => "Error de connexió: " . $conn->connect_error);
    echo json_encode($response);
    die();
}

// Si la connexió és reeixida, envia una resposta JSON
$response = array("status" => "success", "message" => "Connexió reeixida!");
echo json_encode($response);
?>

Script AJAX

AJAX utilitzat a /0capsa_dic/index.php

$(document).ready(function () {
    // Quan el DOM estigui completament carregat, s'executa aquesta funció.
    $("#cercar").on("keyup", function () {
        // Associem un esdeveniment 'keyup' al camp de text amb ID 'cercar'.
        var paraula = $(this).val(); // Obtenim el valor actual del camp de text.
        console.log("Tecla premuda: " + paraula); // Mostrem el valor a la consola per depuració.

        if (paraula.length > 0) {
            // Si hi ha text al camp de cerca (longitud major que 0), fem una crida AJAX.
            $.ajax({
                url: "cercar.php", // URL del script del servidor que processarà la sol·licitud.
                type: "POST", // Mètode HTTP utilitzat per enviar les dades.
                data: { cercar: paraula }, // Dades enviades al servidor (la paraula buscada).
                success: function (resposta) {
                    // Funció que s'executa si la crida AJAX té èxit.
                    console.log("Resposta AJAX rebuda"); // Missatge de depuració.
                    var resultats = JSON.parse(resposta); // Convertim la resposta JSON a un array JavaScript.
                    var htmlResultats = resultats.map(function (item) {
                        // Creem elements HTML (<li>) per a cada resultat.
                        return "<li class='resultat'>" + item + "</li>";
                    }).join(""); // Unim els elements en una cadena HTML.
                    $("#resultats_autocompletar").html(htmlResultats); // Inserim els resultats al contenidor.
                },
                error: function () {
                    // Funció que s'executa si hi ha un error en la crida AJAX.
                    console.error("Error en la crida AJAX."); // Missatge d'error a la consola.
                }
            });
        } else {
            // Si el camp de cerca està buit, esborrem els resultats previs.
            $("#resultats_autocompletar").html("");
        }
    });

    // Afegim un esdeveniment de clic per als elements de la llista de resultats.
    $(document).on("click", ".resultat", function () {
        var paraulaSeleccionada = $(this).text(); // Obtenim el text de l'element clicat.
        console.log("Paraula seleccionada: " + paraulaSeleccionada); // Mostrem el text a la consola.
        $("#cercar").val(paraulaSeleccionada); // Col·loquem el text seleccionat al camp de cerca.
    });
});

AJAX pot acceptar més d’una entrada

Modificació de l’AJAX per passar més paràmetres Afegirem bd i taula als dades enviades a PHP.

$(document).ready(function () {
    // Quan el DOM estigui completament carregat, s'executa aquesta funció.
    $("#cercar").on("keyup", function () {
        // Associem un esdeveniment 'keyup' al camp de text amb ID 'cercar'.
        var paraula = $(this).val(); // Obtenim el valor actual del camp de text.
        var bd = "nom_de_la_base_de_dades";  // Nom de la base de dades (pot ser dinàmic).
        var taula = "nom_de_la_taula";      // Nom de la taula (pot ser dinàmic).

        console.log("Tecla premuda: " + paraula); // Mostrem el valor a la consola per depuració.

        if (paraula.length > 0) {
            // Si hi ha text al camp de cerca (longitud major que 0), fem una crida AJAX.
            $.ajax({
                url: "cercar.php", // URL del script del servidor que processarà la sol·licitud.
                type: "POST", // Mètode HTTP utilitzat per enviar les dades.
                data: { 
                    cercar: paraula, // Paraula buscada.
                    bd: bd,          // Nom de la base de dades.
                    taula: taula     // Nom de la taula.
                },
                success: function (resposta) {
                    // Funció que s'executa si la crida AJAX té èxit.
                    console.log("Resposta AJAX rebuda"); // Missatge de depuració.
                    var resultats = JSON.parse(resposta); // Convertim la resposta JSON a un array JavaScript.
                    var htmlResultats = resultats.map(function (item) {
                        // Creem elements HTML (<li>) per a cada resultat.
                        return "<li class='resultat'>" + item + "</li>";
                    }).join(""); // Unim els elements en una cadena HTML.
                    $("#resultats_autocompletar").html(htmlResultats); // Inserim els resultats al contenidor.
                },
                error: function () {
                    // Funció que s'executa si hi ha un error en la crida AJAX.
                    console.error("Error en la crida AJAX."); // Missatge d'error a la consola.
                }
            });
        } else {
            // Si el camp de cerca està buit, esborrem els resultats previs.
            $("#resultats_autocompletar").html("");
        }
    });

    // Afegim un esdeveniment de clic per als elements de la llista de resultats.
    $(document).on("click", ".resultat", function () {
        var paraulaSeleccionada = $(this).text(); // Obtenim el text de l'element clicat.
        console.log("Paraula seleccionada: " + paraulaSeleccionada); // Mostrem el text a la consola.
        $("#cercar").val(paraulaSeleccionada); // Col·loquem el text seleccionat al camp de cerca.
    });
});

cercar.php

<?php
header('Content-Type: application/json'); // Indiquem que la resposta serà en format JSON.
session_start(); // Iniciem la sessió (si és necessari per altres funcions).

if (isset($_POST['cercar'], $_POST['bd'], $_POST['taula'])) {
    // Comprovem que s'hagin rebut tots els paràmetres necessaris.
    $cercar = $_POST['cercar']; // Text introduït per l'usuari.
    $bd = $_POST['bd'];         // Nom de la base de dades.
    $taula = $_POST['taula'];   // Nom de la taula.

    // Conexió a la base de dades (ajusta les credencials segons el teu entorn).
    $conn = new mysqli("localhost", "usuari", "contrasenya", $bd);

    if ($conn->connect_error) {
        // Si hi ha un error de connexió, retornem un missatge d'error en format JSON.
        die(json_encode(["error" => "Error de connexió: " . $conn->connect_error]));
    }

    // Evitem injeccions SQL utilitzant prepared statements.
    $stmt = $conn->prepare("SELECT camp FROM $taula WHERE camp LIKE ?"); // Consulta SQL.
    $cercar = "%$cercar%";  // Cerca parcial (exemple: '%text%').
    $stmt->bind_param("s", $cercar); // Lliguem el paràmetre de cerca.
    $stmt->execute(); // Executem la consulta.
    $result = $stmt->get_result(); // Obtenim el resultat.

    $resultats = []; // Array per emmagatzemar els resultats.
    while ($row = $result->fetch_assoc()) {
        // Recorrem els resultats i afegim cada valor al array.
        $resultats[] = $row['camp'];
    }

    echo json_encode($resultats); // Retornem els resultats en format JSON.

    $stmt->close(); // Tanquem la sentència preparada.
    $conn->close(); // Tanquem la connexió a la base de dades.
} else {
    // Si falten paràmetres, retornem un missatge d'error en format JSON.
    echo json_encode(["error" => "Falten paràmetres"]);
}
?>

Què hem fet?

  1. Passar $cercar, $bd i $taula des d’AJAX a cercar.php.
  2. Utilitzar $bd i $taula a la consulta SQL perquè la cerca sigui més flexible.
  3. Afegir seguretat amb mysqli_prepare per evitar SQL Injection.
  4. Enviar la resposta com JSON, que AJAX pot interpretar fàcilment.

Autocompletar 3

Estructura

/autocompletar3 amb BD
│── style.css
│   
│── /js
│   ├── javascripts.js
│── index.html
│── cercar.php
│── Bd_conexions 
    ├── conexio_diccionari_bd.php

index.php

<?php
// Simulació de sessió i configuracions bàsiques
session_start();
?>

<!DOCTYPE html>
<html lang="ca">
<head>
    <meta charset="UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
    <title>Eines Lingüístiques</title>
    <link rel="stylesheet" href="styles.css">
    <script src="js/jquery.min.js"></script>
</head>
<body>

    <h1>Cercador amb autocompletat</h1>

    <!-- Formulari de cerca -->
    <form id="cercaForm" method="POST" action="#">
        <div class="search-container">
            <input 
                type="text" 
                id="cercar"
                name="cercar" 
                onkeyup="mostrarAutocompletar()" 
                placeholder="Cerca..." 
                autofocus
            >
            <button type="submit">Cercar</button>
        </div>
    </form>

    <!-- Contenidor de l'autocompletat -->
    <div id="resultats_autocompletar_container">
        <ul id="resultats_autocompletar">
            <!-- Resultats dinàmics via JavaScript -->
        </ul>
    </div>
   
    <script src="js/scripts.js" defer></script>
</body>
</html>

script/javascripts.js 

// Funció per mostrar resultats d'autocompletar

function mostrarAutocompletar() {
    const cercarInput = document.getElementById("cercar");
    const cercarValue = cercarInput.value.trim();
  
    if (cercarValue.length > 0) {
        //alert("linia 8 arriba pero no entra php. Longitud de cercarValue: " + cercarValue.length);
        fetch("BD_conexions/conexio_diccionari_bd.php", {
            method: "POST",
            headers: { "Content-Type": "application/x-www-form-urlencoded" },
            body: "cercar=" + encodeURIComponent(cercarValue)
        })
        .then(response => response.json())
        .then(resultats => {
            const ul = document.getElementById("resultats_autocompletar");
            ul.innerHTML = '';  // Neteja els resultats anteriors

            resultats.forEach(paraula => {
                const li = document.createElement("li");
                li.textContent = paraula;
                li.onclick = function() { seleccionar(paraula); };
                ul.appendChild(li);
            });

            document.getElementById("resultats_autocompletar_container").style.display = resultats.length > 0 ? "block" : "none";
        })
        .catch(error => console.error("Error en l'autocompletat:", error));
    } else {
        document.getElementById("resultats_autocompletar_container").style.display = "none";
    }
}

// Funció per seleccionar una paraula i posar-la al cercador
function seleccionar(paraula) {
    document.getElementById("cercar").value = paraula;
    document.getElementById("resultats_autocompletar_container").style.display = "none";
}

Estils-styles.css

body {
    font-family: Arial, sans-serif;
    text-align: center;
    margin: 50px;
}

input {
    padding: 10px;
    width: 300px;
    font-size: 16px;
    margin-bottom: 10px;
}

#resultats {
    margin-top: 20px;
    border: 1px solid #ddd;
    width: 300px;
    margin-left: auto;
    margin-right: auto;
    text-align: left;
    padding: 10px;
}

conexio_diccionari_db.php

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

header("Content-Type: application/json"); // Assegura que s'envia JSON

// Simulació de resultats per a la prova
echo json_encode(["hola", "adéu", "bon dia", "bon vespre", "gràcies"]);
exit(); // Assegura't que no s'envia més contingut després del JSON
?>

autocompletar 2

estructura

/autocompletar 2 sense BD
│── style.css               (Estils per al formulari i els resultats)
│   
│── /js
│   ├── javascripts.js      (Logica JavaScript per l'autocompletat)
│
│── index.html              (Pàgina principal amb el formulari)
│── cercar.php              (No el necessites en aquest cas ja que és una simulació, 
│── Bd_conexions 
│   ├── conexio_diccionari_bd.php   (Simulació de la connexió amb la base de dades)

/autocompletar 2 sense BD
│── style.css
│   
│── /js
│   ├── javascripts.js
│── index.html
│── cercar.php
│── Bd_conexions 
    ├── conexio_diccionari_bd.php

index.php

<?php
// Simulació de sessió i configuracions bàsiques
session_start();
?>

<!DOCTYPE html>
<html lang="ca">
<head>
    <meta charset="UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
    <title>Eines Lingüístiques</title>
    <link rel="stylesheet" href="styles.css">
    <script src="js/jquery.min.js"></script>
    <script src="js/scripts.js" defer></script>
</head>
<body>

    <h1>Cercador amb autocompletat</h1>

    <!-- Formulari de cerca -->
    <form id="cercaForm" method="POST" action="#">
        <div class="search-container">
            <input 
                type="text" 
                id="cercar"
                name="cercar" 
                onkeyup="mostrarAutocompletar()" 
                placeholder="Cerca..." 
                autofocus
            >
            <button type="submit">Cercar</button>
        </div>
    </form>

    <!-- Contenidor de l'autocompletat -->
    <div id="resultats_autocompletar_container">
        <ul id="resultats_autocompletar">
            <!-- Resultats dinàmics via JavaScript -->
        </ul>
    </div>

</body>
</html>

script/javascripts.js (Logica del JavaScript per l’autocompletat)

// Funció que mostra els resultats d'autocompletar
function mostrarAutocompletar() {
    const cercarInput = document.getElementById("cercar");
    const cercarValue = cercarInput.value.trim();

    if (cercarValue.length > 0) {
        // Simulació de dades d'autocompletar
        const resultats = ['hola', 'adéu', 'bon dia', 'bon vespre', 'gràcies'];

        // Filtrar resultats basat en l'input de cerca
        const resultatsFiltrats = resultats.filter(paraula => 
            paraula.toLowerCase().includes(cercarValue.toLowerCase())
        );

        // Mostrar els resultats
        const ul = document.getElementById("resultats_autocompletar");
        ul.innerHTML = '';  // Neteja els resultats anteriors

        resultatsFiltrats.forEach(paraula => {
            const li = document.createElement("li");
            li.textContent = paraula;
            li.onclick = function() { seleccionar(paraula); };
            ul.appendChild(li);
        });

        // Mostrar l'ul si hi ha resultats
        document.getElementById("resultats_autocompletar_container").style.display = "block";
    } else {
        // Si l'input està buit, amaga els resultats
        document.getElementById("resultats_autocompletar_container").style.display = "none";
    }
}

// Funció que selecciona una paraula i la posa a l'input
function seleccionar(paraula) {
    document.getElementById("cercar").value = paraula; // Posa el valor seleccionat
    document.getElementById("resultats_autocompletar_container").style.display = "none"; // Amaga els resultats
    document.getElementById("cercaForm").submit(); // Envia el formulari
}

Fitxer styles.css (Estils per al formulari i els resultats)

body {
    font-family: Arial, sans-serif;
    margin: 0;
    padding: 20px;
    background-color: #f4f4f4;
}

h1 {
    text-align: center;
}

.search-container {
    display: flex;
    justify-content: center;
    align-items: center;
    margin-bottom: 20px;
}

#cercar {
    width: 60%;
    padding: 10px;
    font-size: 16px;
    margin-right: 10px;
}

button {
    padding: 10px;
    font-size: 16px;
}

#resultats_autocompletar_container {
    position: relative;
    max-width: 60%;
    margin: 0 auto;
}

#resultats_autocompletar {
    background-color: white;
    border: 1px solid #ccc;
    list-style-type: none;
    padding: 0;
    margin: 0;
    position: absolute;
    width: 100%;
    z-index: 1000;
}

#resultats_autocompletar li {
    padding: 10px;
    cursor: pointer;
}

#resultats_autocompletar li:hover {
    background-color: #f0f0f0;
}

Fitxer BD_conexions/conexio_diccionari_bd.php (Simulació de connexió amb la base de dades)

<?php
// Simulació d'una base de dades amb paraules per buscar
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $cercar = isset($_POST['cercar']) ? $_POST['cercar'] : '';
    
    // Dades de prova per simular resultats de cerca
    $resultats = ['hola', 'adéu', 'bon dia', 'bon vespre', 'gràcies'];

    // Filtrar resultats segons la cerca
    $resultats_filtrats = array_filter($resultats, function($paraula) use ($cercar) {
        return stripos($paraula, $cercar) !== false;
    });

    // Retornar els resultats en format HTML
    foreach ($resultats_filtrats as $resultat) {
        echo "<li onclick=\"seleccionar('$resultat')\">$resultat</li>";
    }
}
?>

Explicació dels fitxers:

  1. index.php: Aquest és el fitxer principal que conté el formulari de cerca i els resultats d’autocompletar. S’hi ha afegit una secció on es mostren els resultats filtrats a mesura que l’usuari escriu.
  2. scripts.js: Aquest script maneja la lògica de l’autocompletar. Utilitza la funció mostrarAutocompletar() per filtrar i mostrar els resultats quan l’usuari escriu alguna cosa, i seleccionar() per omplir el camp de cerca amb la paraula seleccionada.
  3. styles.css: Aquest fitxer conté els estils bàsics per al disseny del formulari i els resultats d’autocompletar. Els estils estan dissenyats per tenir una caixa de cerca amb un estil net i mostrar els resultats de cerca de manera interactiva.
  4. conexio_diccionari_bd.php: Simula una base de dades que retorna resultats segons el terme de cerca que s’envia per AJAX. Per ara, només simula una cerca de paraules en un array predefinit.

Com provar-ho:

Prova a seleccionar un resultat i veuràs com es completa l’input i es realitza el submit del formulari (simulant una cerca real).

Coloca aquests fitxers en el teu servidor local (XAMPP, WAMP, etc.).

Obre index.php en el navegador. Quan escriguis a l’input de cerca, es mostraran els resultats d’autocompletar sota el camp de cerca.

Autocompletar

flux

Usuari tecleja → onkeyup= cercar_bd(); → AJAX envia ‘cercar’ → PHP te dades+cercar, processa i retorna #resultats → JavaScript mostra el resultat

Tot el procés de consulta es fa de manera asincrònica a través d’AJAX, la qual cosa permet que la pàgina no es recarregui completament i els resultats es mostrin dinàmicament sense interrupcions. Això fa que l’experiència de l’usuari sigui més fluida.

Estructura

/autocompletar
│── /css
│   ├── style.css
│── /js
│   ├── script.js
│── index.html
│── cercar.php
│── db_config.php

cercar.php


if (isset($_POST['cercar'])) {
    $paraula = $conn->real_escape_string($_POST['cercar']);
    error_log("Paraula rebuda: " . $paraula); // Registra la paraula rebuda per la crida AJAX

    $sql = "SELECT catala FROM catala_iec WHERE catala LIKE '$paraula%' LIMIT 5";
    $result = $conn->query($sql);

    $respostes = array();
    
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $respostes[] = htmlspecialchars($row['catala']);
        }
    } else {
        $respostes[] = "No s'han trobat resultats.";
    }
    
    // Retornem les dades en format JSON
    echo json_encode($respostes);
    error_log("Resposta JSON enviada: " . json_encode($respostes)); // Registra la resposta enviada en format JSON
}

$conn->close();
?>




index.html

<!DOCTYPE html>
<html lang="ca">
<head>
    <meta charset="UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
    <title>Autocompletar</title>
    <link rel="stylesheet" href="styles.css">
    <script src="js/jquery.min.js"></script>
</head>
<body>

    <h1>Cercador & autocompletat</h1>

    <!-- Formulari de cerca -->
    <form id="cercaForm" method="POST" action="cercar.php">
        <div class="search-container">
            <input 
                type="text" 
                id="cercar"
                name="cercar" 
                onkeyup="mostrarAutocompletar()" 
                placeholder="Cerca..." 
                autofocus
            >
            <button type="submit">Cercar</button>
        </div>
    </form>

    <!-- Contenidor de l'autocompletat -->
    <div id="resultats_autocompletar_container">
        <ul id="resultats_autocompletar">
            <!-- Resultats dinàmics via JavaScript -->
        </ul>
    </div>
   
    <script src="js/scripts.js" defer></script>
</body>
</html>



CSS

body {
    font-family: Arial, sans-serif;
    text-align: center;
    margin: 50px;
}

input {
    padding: 10px;
    width: 300px;
    font-size: 16px;
    margin-bottom: 10px;
}

#resultats {
    margin-top: 20px;
    border: 1px solid #ddd;
    width: 300px;
    margin-left: auto;
    margin-right: auto;
    text-align: left;
    padding: 10px;
}

js/script.js (AJAX per a la cerca)

$(document).ready(function () {
    $("#cercar").on("keyup", function () {
        var paraula = $(this).val();
        console.log("Tecla premuda: " + paraula);

        if (paraula.length > 0) {
            $.ajax({
                url: "cercar.php",
                type: "POST",
                data: { cercar: paraula },
                success: function (resposta) {
                    console.log("Resposta AJAX rebuda");
                    var resultats = JSON.parse(resposta);
                    var htmlResultats = resultats.map(function (item) {
                        return "<li class='resultat'>" + item + "</li>";
                    }).join("");
                    $("#resultats_autocompletar").html(htmlResultats);
                },
                error: function () {
                    console.error("Error en la crida AJAX.");
                }
            });
        } else {
            $("#resultats_autocompletar").html(""); // Esborra els resultats si no hi ha text
        }
    });

    // Afegir esdeveniment de clic per als elements de resultat
    $(document).on("click", ".resultat", function () {
        var paraulaSeleccionada = $(this).text();
        console.log("Paraula seleccionada: " + paraulaSeleccionada);
        $("#cercar").val(paraulaSeleccionada);
    });
});


db_config.php

<?php
$host = "localhost";
$user = "root";       // Canvia-ho si cal
$pass = "beseit00";           // Canvia-ho si cal
$dbname = "polidic_cat"; // Nom de la teva BD

$conn = new mysqli($host, $user, $pass, $dbname);

// Comprovar la connexió
if ($conn->connect_error) {
    die("Error de connexió: " . $conn->connect_error);
}
?>

Interacció entre HTML, JavaScript (JS), AJAX i PHP

HTML -> JavaScript (JS) -> AJAX <-> PHP

El flux d’interacció seria així:

  • Es capturen els esdeveniments d’usuari amb onkeyup.
  • Es crida la funció cercar_bd() de JavaScript, que obté el valor de l’entrada de text i realitza una crida AJAX al fitxer PHP (prova.php).
  • El fitxer PHP processa la sol·licitud, pot interactuar amb la base de dades i retorna una resposta.
  • La resposta del servidor és gestionada per la funció success d’AJAX i es pot mostrar o utilitzar segons sigui necessari.

function cercar_bd() {   
    var cercar = $("#cercar").val(); // Obtenir el valor de l'entrada de text
    alert('Valor de cercar: ' + cercar);    
}

Capsa Replicadora

Aquest tipus d’entrada s’han de fer com HTML


<!DOCTYPE html>
<html lang="ca">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Capsa Replicadora</title>
    <link rel="icon" href=".ico" type="image/x-icon">
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
            display: flex;
            justify-content: center;
            align-items: flex-start;
            background-color: #f0f0f0;
            min-height: 100vh;
        }
        .container {
            background-color: rgb(213, 225, 225);
            padding: 20px;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
            width: 80%;
            max-width: 800px;
            margin-top: 50px;
            box-sizing: border-box;
        }
        h1 {
            text-align: center;
            color: #333;
        }
        p {
            margin: 5px 0;
            color: #444;
        }
        .input-wrapper {
            width: 50%;
            margin: 0 auto 10px auto; /* Centra les entrades */
        }

        /* Responsivitat per a dispositius petits */
        @media (max-width: 600px) {
            .container {
                width: 90%;
                margin-top: 30px;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>Capsa Replicadora</h1>
        
        <div class="input-wrapper">
            <label for="cercar">Cercar:</label>
            <input type="text" id="cercar" name="cercar" autofocus onkeyup="replicarText()">
        </div>
        <div class="input-wrapper">
            <label for="replicar">Replicar:</label>
            <input type="text" id="replicar" name="replicar">
        </div>
    </div>
    <script>
        function replicarText() {
            //alert('entra a replicar');
            var cercarInput = document.getElementById('cercar');
            var replicarInput = document.getElementById('replicar');
            replicarInput.value = cercarInput.value;
        }
    </script>
</body>
</html>

$_GET[‘dic’] i $_GET[‘lang] per passar informació a un formulari

Per recollir les variables $_GET['dic'] i $_GET['lang] de la informació passada a través del navegador, podeu utilitzar el següent codi PHP:

<?php
// Recollir les variables del GET
$diccionari = isset($_GET['dic']) ? $_GET['dic'] : 'No definit';
$llenguatge = isset($_GET['lang']) ? $_GET['lang'] : 'No definit';

// Mostrar les variables
echo "El diccionari és: " . htmlspecialchars($diccionari) . "<br>";
echo "El llenguatge és: " . htmlspecialchars($llenguatge);
?>

per example si al navegador veiem: 192.168.1.41/poli/BD_conexions/conexio_diccionari_bd.php?dic=catala_castella&lang=cat

Al formulari que mostra les variables podem llegir:

El diccionari és: catala_castella
El llenguatge és: cat

$idioma = isset($_GET[‘lang’]) ? $_GET[‘lang’] : ‘cat’;

Aquesta instrucció és una forma concisa de definir una variable $idioma en funció de si el paràmetre lang existeix a l'URL. Això es fa utilitzant l'operador ternari, que és una alternativa compacta al condicional if-else. Aquí tens com funciona pas a pas:

isset($_GET['lang']):

Verifica si existeix el paràmetre lang a l'URL. Si l'usuari accedeix a la pàgina amb un enllaç del tipus index.php?lang=eus, llavors isset($_GET['lang']) tornarà true.

$_GET['lang']:

Si el paràmetre lang existeix (és a dir, isset($_GET['lang']) és true), el valor d'aquest paràmetre s'assignarà a $idioma. Per exemple, si l'URL és index.php?lang=eng, el valor de $idioma serà 'eng'.

: 'cat':

Si el paràmetre lang no existeix (és a dir, isset($_GET['lang']) és false), el valor per defecte 'cat' (català) s'assignarà a $idioma.






























Envieu un missatge al Copilot