LIKE E richiamo LIKE

ciao

sono da poco passato a php...

il mio problema e' qs:

ho un db con una colonna

categoria con alcune parole all'interno

come richiamo con una select le parole all'interno con LIKE?

io ho fatto cosi'...

SELECT * FROM lists WHERE categoria =('$paroladacercare') order by idlist desc"

non so la sintassi di: ('$paroladacercare') sia corretta.

La richiamo con pagina.php?categoria=parolachemiinteressa?

grazie mille

ciao

inviato 10 anni fa
eppyy
X 0 X

fammi capire : devi popolare una select con i record presenti in una tabella ma SOLO i record APPARTENENTI ad una determinata categoria, ho capito bene?

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

spiegandomi meglio  :idiot:  :2funny: ho un campo categoria per n record dove metto alcune parole tipo: libro, romanzo, racconto.

io vorrei richiamare solo i record che hanno nel campo categoria le parole che mi interessano

esempio calcio...

GRAZIE MILLE DELL'AIUTO

risposto 10 anni fa
eppyy
X 0 X

quindi deve scegliere la categoria da usare in base a delle corrispondenze con il patametro passato via GET pagina.php?categoria=..... ?

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

si.

tecnicamente non saprei come fare.

su asp facevo cosi'

<%
categoria = request.querystring("categoria")

if categoria=""  then 
categoria="romanzo"
end if
%>

e poi una select del tipo:

rs.Open "select * from lists WHERE categoria='" & categoria & "'  order by listname DESC", conn

in qs caso aprendo la pagina mi dava di default i valori della categoria = romanzo

se poi cliccavo su un limk tipo index.php?categoria=racconto mi restituiva solo i record dove nella categoria c'era romanzo.

ORA PERO'

volendo fare una query con LIKE in PHP non saprei.

Come potrei fare?

risposto 10 anni fa
eppyy
X 0 X
$query = "SELECT * FROM `lists` WHERE `categoria`='".$categ."'";

$select= mysql_query($query);

echo '<form name="" method="post" action="...."><select name="">';

while ($pop = mysql_fetch_array($select))

{

echo '<option value="">'.$pop['campo opzioni da mostrare'].'';

}

echo '</select>;

puoi provare così senza usare LIKE [quindi non seleziona un nome categoria in base a una corrispondenza]

è solo na prova

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Quello che ti ha scritto trashofmasters è corretto...

Ma per rispondere alla tua prima domanda

"come richiamo con una select le parole all'interno con LIKE?":

http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html

Ad esempio, se hai tre caetgorie : calcio a 5, aclcio a 7, calcio a 11,

facendo:

SELECT * FROM tabella WHERE categoria LIKE '%calcio%'; /*prende tutte le stringhe che contengono la parola calcio, a prescindere da quello che viene prima e dopo*/

ti prenderebbe tutte e tre le categorie

Era solo per rispondere alla tua prima domanda, ma se con il get gli passi il nome corretto della categoria è giusto come ti ha detto trashofmasters...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

off topic ?

mysql> SELECT * FROM pet WHERE name REGEXP '^.{5}$';

bellissimo,le regex dentro alle query :D ma è una novità di php 5.0? o vale anche per le versioni pèiù 'vecchie'?

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

off topic ?

mysql> SELECT * FROM pet WHERE name REGEXP '^.{5}$';

bellissimo,le regex dentro alle query :D ma è una novità di php 5.0? o vale anche per le versioni pèiù 'vecchie'?

Anche per quelle precedenti:

http://dev.mysql.com/doc/refman/4.1/en/regexp.html

( almeno è valido per la versione 4.1 )

Ma le reg_ex non appesantiscono troppo la query laddove si devono estrarre una quantità notevole di dati?

(Magari è una domanda stupida, ma non le ho mai utilizzate nelle query e solo poche volte negli script php poichè non è un argomento nel quale sono particolarmente ferrato  ???)

Ciao

Lorenzo

risposto 10 anni fa
Lore
Lore
1
X 0 X

La ricerca all'interno del database è una faccenda delicata. Se la tabella è piccola, pochi record (1.000-10.000), tutto va bene e conviene usare la tecnica più comoda e più "potente".

Se invece la quantità di dati in cui cercare aumenta allora bisogna necessariamente sfruttare gli strumenti messi a disposizione dal database, in particolare gli indici, e bisogna evitare di costringere il DBMS per una query a leggere tutti i dati presenti in un campo di una tabella.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

mi fai paura Gianni :death:

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

 :P

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
mi fai paura Gianni :death:

Quoto e grazie per la delucidazione...

ciao  :bye:

risposto 10 anni fa
Lore
Lore
1
X 0 X

ciao a tutti

ho trovato la soluzione smanettando un bel po'!

ho messo ad inizio pagina qs

<?php $categoria  = $_GET[categoria]; ?>

e la select l'ho fatta cosi'

$query="SELECT * FROM lists WHERE categoria LIKE '$categoria' ORDER BY idlist DESC";

$risultato=mysql_query($query);

in qs modo funziona.

nel db nel campo categoria se metto romanzo e lo richiamo cosi' index.php?categoria=romanzo

mi restituisce tutti gli articoli che hanno romanzo nel campo categoria dentro il db.

Perfetto.

Vorrei pero' fare 2 cose che nn riesco a fare.

1. quando richiamo la pagina index.php vorrei che mi restituisse dei dati di default...esempio quelli che hanno in categoria romanzo... se ora richiamo index.php nn mi restituisce risultati

2. se nel campo categoria metto romanzo e racconti e lo richiamo come sopra index.php?categoria=racconti nn me lo trova ma se richiamo romanzi si...

come mai?

non dovrebbe trovare con LIKE tutto quello che c'e' dentro il campo secondo richiesta?

grazie mille

ciao PAOLO

risposto 10 anni fa
eppyy
X 0 X

Vorrei pero' fare 2 cose che nn riesco a fare.

1. quando richiamo la pagina index.php vorrei che mi restituisse dei dati di default...esempio quelli che hanno in categoria romanzo... se ora richiamo index.php nn mi restituisce risultati

Per fare questo dovresti controllare che il get sia settato:

<?php $categoria  = (isset($_GET['categoria'])) ? $_GET['categoria'] : "romanzo"; ?>

Questo sarebbe una specie di IF, si chiama operatore ternario:

http://www.php.net/manual/it/language.operators.comparison.php#language.operators.comparison.ternary

sarebbe come fare

<?php 
if (isset($_GET['categoria']))  
 $categoria  =$_GET['categoria'] 
else 
 $categoria  ="romanzo"; ?>

2. se nel campo categoria metto romanzo e racconti e lo richiamo come sopra index.php?categoria=racconti nn me lo trova ma se richiamo romanzi si...

come mai?

non dovrebbe trovare con LIKE tutto quello che c'e' dentro il campo secondo richiesta?

Sì, con il LIKE dovrebbe trovarti tutte le stringhe con dentro la parola ricercata...

Hai provato a fare il like come:

SELECT * FROM tabella WHERE campo LIKE '%racconti%' ;

Così ti dovrebbe prendere qualsiasi stringa ce contenga la parla 'racconti'

Esempio:

'mille racconti'

'racconti avventura'

'mille racconti avventura'

Facendo il like come ti ho segnato spra dovrebbe prendere tutti questi casi...

Prova...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili