Home Php Creare un cerca in php

Creare un cerca in php

91
0

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:

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
);

2. Inserimento di dati di esempio

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');

3. Codice PHP per la connessione al database

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-&amp;gt;connect_error);
}
?>


4. Creazione del modulo di ricerca

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>


5. Codice per la ricerca

Ora, aggiungiamo la logica per cercare i dati nel database. Puoi fare una ricerca usando l’operatore LIKE di MySQL:


&lt;?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.";
}
}
?&gt;


6. Output della ricerca

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.

7. Miglioramenti e ottimizzazioni

  • Sicurezza: Usa sempre prepared statements (come fatto sopra) per evitare vulnerabilità come SQL injection.
  • Paginazione: Se il numero di risultati è elevato, puoi aggiungere la paginazione per limitare il numero di risultati per pagina.
  • Filtri avanzati: Puoi aggiungere altre opzioni di filtro come data, categoria, ecc.

Passaggi per creare una ricerca in PHP e MySQL:

1. Creare la struttura del database:

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)
);


2. Connessione al database MySQL:

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-&gt;connect_error) {
die("Connection failed: " . $conn-&gt;connect_error);
}
?>

3. Modulo di ricerca:

Nel tuo file HTML, aggiungi un modulo di ricerca.

<br data-mce-bogus="1">

&lt;form action="cerca.php" method="get"&gt;
&lt;input type="text" name="query" placeholder="Cerca un prodotto..." required&gt;
&lt;button type="submit"&gt;Cerca&lt;/button&gt;
&lt;/form&gt;


 

4. Logica di ricerca in PHP:

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();
?>

Spiegazione del codice:

  1. Modulo di ricerca: L’utente può inserire una parola chiave nella barra di ricerca e inviarla tramite il metodo GET.
  2. Connessione al database: Il file config.php gestisce la connessione a MySQL.
  3. Ricerca SQL: La query cerca i prodotti i cui nomi o descrizioni corrispondono alla parola chiave inserita. Usando LIKE '%$query%', possiamo trovare corrispondenze parziali.
  4. Mostrare i risultati: I risultati vengono visualizzati uno per uno.

Miglioramenti possibili:

  • Paginazione: Se i risultati sono molti, puoi aggiungere la paginazione per dividere i risultati in più pagine.
  • Filtro avanzato: Puoi aggiungere opzioni per filtrare i risultati per prezzo, categoria, ecc.
  • Ricerca più rapida: Puoi ottimizzare la query per migliorare la velocità (ad esempio, utilizzando indici sul campo nome o descrizione).

Fammi sapere se vuoi aggiungere qualcosa o hai bisogno di ulteriori dettagli!

Previous articleCome creare un auto link per i tuoi post wordpress
Next articleLa variabile $_SERVER[‘HTTP_REFERER’]

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.