Tanto tempo fa, in una galassia lontana lontana, c’era una tabellina mysql e php che doveva leggere i dati…

web design umbria

Il modus operandi per costruire il mito https://it.wikiquote.org/wiki/Guerre_stellari_(film_1977) è sempre lo stesso per ogni nuova uscita: il film si apre con il testo blu statico “Tanto tempo fa, in una galassia lontana lontana….”, seguito dal logo di Guerre stellari. Solo che qui parliamo di MySql e l’incipit cambia: c’era una volta una tabellina lontana, lontana da gestire con il database mysql e php. web design umbriaAll’ indirizzo https://umbriawaytarget.wordpress.com/2020/06/05/albrecht-duerer-il-cavaliere-la-morte-e-loperatore-like/ dopo aver risolto un problema legato alla ricerca di un testo, ci siamo congedati con un altro problema (più che guerre stellari questo film qui sembra Pulp Finction, sono Wolf e risolvo i problemi!) ossia come interrogare più campi. Dopo attimi di smarrimento abbiamo risolto grazie all’ uso di un operatore logico l’ OR sparato nella select, ma andiamo per gradi. C’era una volta in una pagina web lontana lontana (si presume dalle parti di Arezzo visto che i server di un noto service provider stazionano da quelle parti) un form che aveva questa sintassi:

<form action=”nomepage.php”>
<input type=”text” placeholder=”Search..” name=”search”>
<button type=”submit”><i class=”fa fa-search”></i></button>
</form>

La casella testo è stata schedata in commissariato con la dicitura: name=”search” che non é altro il nome della variabile che viene sparata sulla pagina di accoglimento del proiettile. Detto secondo le specifiche tecniche la variabile viene lanciata con il metodo get sulla URL con la formula tipo:

http://umbriagallery/action_page.php?search=testoselezionato

dall’ altra parte come specificato nell’ articolo precedente si ha un comitato di accoglienza per lavorare la variabile e renderla masticabile dalla successiva query:

if (!isset($_GET[‘search’]) || $_GET[‘search’] == null) {
header(“Location:404.php”);
} else {
$search = $_GET[‘search’];
}

c’è una istruzione condizionale che va a sondare il contenuto della variabile search se è piena e non è vuota o nulla, quello che accade è che il valore del campo testo diventa ufficilamente una variabile recuperata con la superglobals costante $_GET. Questa variabile cade come una pallina per le estrazioni del lotto nel macinino che estrarrà i dati da una query che prima era:

$stmt = $dbh->query(“SELECT * FROM gallery WHERE cap LIKE ‘%$search%'”);

ora dobbiamo modificare questo valore per fare in modo che la ricerca finisca in due campi diversi come contenuto e quindi il tutto diventa:

$stmt = $dbh->query(“SELECT * FROM gallery WHERE descrizione OR cap LIKE ‘%$search%'”);

web design umbriacioè abbiamo esteso la ricerca anche al campo cap per cercare anche le località tramite numero (anche se come tipo di dati per il DB MySql sono solo varchar ossia stringhe testo) grazie all’ uso dell’ operatore LOGICO OR che amplia le condizioni vere a disposizione di una istruzione per eseguire il suo contenuto. Testando il tutto funziona senza controindicazioni come testimoniato dalla gallery. Come al solito i problemi pratici si risolvono sporcandosi le mani sul campo e studiando anche le idiosincrasie di Lucas con l’incipit iniziale https://it.wikipedia.org/wiki/Sequenza_di_apertura_di_Guerre_stellari dove scopriamo che la soluzione alla sequenza iniziale arriva come ispirazione dalla scena iniziale di Union Pacific di Cecil B. DeMille (1939), la via dei giganti, che non riuscì a prendere premi importanti solo per le criticità del periodo storico (1939).

NB: in seguito a pubblicazione modifiche codice su ambiente di produzione, ci siamo accorti che la formula indicata qui stranamente funzionava solo in locale, dopo una fase di esperimenti il tiro è stato aggiustato con le seguenti due proposte di soluzione:

//ERROR SELECT * FROM gallery WHERE descrizione OR cap LIKE ‘%$search%’;
//correct SELECT * FROM TBL WHERE descrizione LIKE ‘%$search%’ OR cap LIKE ‘%$search%’;
//correct * FROM TBL WHERE CONCAT(descrizione,cap) LIKE ‘%$search%’;

Come si può notare da web design umbria la casella di ricerca può estrapolare dati su campi multipli, ossia pescando codici dal campo codice avviamento postale o nomi con vari criteri da descrizione.

Crea un sito o un blog gratuitamente presso WordPress.com.

Su ↑