1. Creazione del database e della tabella
Prima di tutto, devi avere un database MySQL con una tabella su cui eseguire la ricerca. Ecco un esempio di creazione di una tabella:
Prima di tutto, devi avere un database MySQL con una tabella su cui eseguire la ricerca. Ecco un esempio di creazione di una tabella:
CREATE DATABASE mio_database; USE mio_database; CREATE TABLE articoli ( id INT AUTO_INCREMENT PRIMARY KEY, titolo VARCHAR(255) NOT NULL, contenuto TEXT NOT NULL );
Puoi aggiungere dei dati di esempio nella tabella:
INSERT INTO articoli (titolo, contenuto) VALUES ('Primo articolo', 'Contenuto del primo articolo'), ('Secondo articolo', 'Contenuto del secondo articolo'), ('Terzo articolo', 'Contenuto del terzo articolo');
Creiamo un file connessione.php
per gestire la connessione al database:
<?php $host = 'localhost'; // oppure il tuo host MySQL $user = 'root'; // il tuo nome utente MySQL $password = ''; // la tua password MySQL $dbname = 'mio_database'; // il nome del tuo database $conn = new mysqli($host, $user, $password, $dbname); if ($conn->connect_error) { die("Connessione fallita: " . $conn-&gt;connect_error); } ?>
Nel file index.php
, creiamo un modulo di ricerca:
<form method="GET" action="">; <input type="text" name="query" placeholder="Cerca..."> <button type="submit">Cerca</button> </form>
Ora, aggiungiamo la logica per cercare i dati nel database. Puoi fare una ricerca usando l’operatore LIKE
di MySQL:
<?php include 'connessione.php'; if (isset($_GET['query'])) { $query = $_GET['query']; $query = "%$query%"; // Aggiungiamo i wildcard per LIKE $sql = "SELECT * FROM articoli WHERE titolo LIKE ? OR contenuto LIKE ?"; $stmt = $conn->prepare($sql); $stmt->bind_param('ss', $query, $query); // 'ss' indica che i parametri sono stringhe $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo "<h2>" . $row['titolo'] . "</h2>"; echo "<p>" . $row['contenuto'] . "<p/>;"; } } else { echo "Nessun risultato trovato."; } } ?>
Quando l’utente inserisce un termine di ricerca e invia il modulo, il PHP eseguirà una query MySQL per cercare nel titolo e nel contenuto della tabella. I risultati verranno visualizzati.
Assumiamo che tu abbia una tabella chiamata prodotti
con i seguenti campi:
id
(int, chiave primaria)nome
(varchar)descrizione
(text)prezzo
(decimal)CREATE TABLE prodotti ( id INT AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(255), descrizione TEXT, prezzo DECIMAL(10, 2) );
Crea un file config.php
per la connessione al database.
<?php $host = 'localhost'; $username = 'root'; $password = ''; $dbname = 'tuo_database'; // Connessione al database $conn = new mysqli($host, $username, $password, $dbname); // Verifica la connessione if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } ?>
Nel tuo file HTML, aggiungi un modulo di ricerca.
<br data-mce-bogus="1"> <form action="cerca.php" method="get"> <input type="text" name="query" placeholder="Cerca un prodotto..." required> <button type="submit">Cerca</button> </form>
Nel file cerca.php
, scrivi il codice per gestire la ricerca.
<?php include 'config.php'; // Connessione al database // Controlla se è stato inviato un parametro di ricerca if (isset($_GET['query'])) { $query = $_GET['query']; // Evita problemi di SQL injection $query = $conn->real_escape_string($query); // Scrivi la query per cercare nei campi 'nome' e 'descrizione' $sql = "SELECT * FROM prodotti WHERE nome LIKE '%$query%' OR descrizione LIKE '%$query%'"; $result = $conn->query($sql); // Controlla se ci sono risultati if ($result->num_rows > 0) { // Visualizza i risultati while ($row = $result->fetch_assoc()) { echo "<p>Nome: " . $row['nome'] . "</p>"; echo "<p>Descrizione: " . $row['descrizione'] . "</p>"; echo "<p>Prezzo: €" . $row['prezzo'] . "</p><hr>"; } } else { echo "Nessun prodotto trovato."; } } else { echo "Inserisci una parola chiave per la ricerca."; } $conn->close(); ?>
GET
.config.php
gestisce la connessione a MySQL.LIKE '%$query%'
, possiamo trovare corrispondenze parziali.nome
o descrizione
).Fammi sapere se vuoi aggiungere qualcosa o hai bisogno di ulteriori dettagli!