PHP Ricerca utente, Tabella con più elementi

Nickname

Utente Attivo
18 Set 2013
122
0
0
Salve a tutti, avrei un problema molto urgente da risolvere di cui non riesco a trovare una soluzione.

Praticamente io ho una tabella fatta più o meno così:


[table="width: 500, class: outer_border"]
[tr]
[td]Nome[/td]
[td]Cognome[/td]
[td]Indirizzo[/td]
[td]Caratteristiche[/td]
[/tr]
[tr]
[td]Giovanni[/td]
[td]Mariani[/td]
[td]via non lo so 12[/td]
[td]Alto, Magro, Occhi blu, Capelli lunghi, Capelli castani [/td]
[/tr]
[tr]
[td][/td]
[td][/td]
[td][/td]
[td][/td]
[/tr]
[/table]


Ora il problema è che io ho creato delle pagine distinte, come ad esempio:
Capelli Rossi;
Capelli;



(Ora ovviamente è un esempio stupido ma è per far capire)


Ed ho fatto in modo che in queste pagine vengano visualizzati gli utenti con quelle caratteristiche.
Quindi se si clicca su Capelli rossi usciranno tutti gli utenti con i capelli rossi ecc..


Lo script che ho utilizzato è il seguente:

$result = mysql_query("SELECT * FROM utenti WHERE caratteristiche LIKE '%$ricerca%' ORDER BY nome");


Il problema è che in questo modo, anche se l'utente tra le sue caratteristiche ha messo, ad esempio solo la Caratteristica Capelli, viene visualizzato anche nella pagina Capelli Rossi perché ovviamente nella query utilizzo LIKE, quindi volevo sapere come fare in modo che questo non accada; come posso distinguere bene le varie caratteristiche ? Ovviamente senza creare altri campi nella tabella.

Grazie mille a tutti, è molto urgente!
 
Ciao, vedo che le caratteristiche sono separate dalla virgola; mettila nel like
PHP:
LIKE '%$ricerca,%'
 
Ciao, vedo che le caratteristiche sono separate dalla virgola; mettila nel like
PHP:
LIKE '%$ricerca,%'

Grazie criric ! Risolto.
Alla fine ti farò un monumento :D

(PS: ma funziona lo stesso anche se le caratteristiche sono separate da virgola e spazio ?)
 
Nel LIKE puoi gestire anche gli spazi
PHP:
LIKE '%$ricerca ,%'
Potrebbe non funzionare invece se l'ultima caratteristica memorizzata non è seguita dalla virgola
 
Nel LIKE puoi gestire anche gli spazi
PHP:
LIKE '%$ricerca ,%'
Potrebbe non funzionare invece se l'ultima caratteristica memorizzata non è seguita dalla virgola

Infatti adesso c'è un altro problema come dicevi tu, ovvero che se uno ha inserito una sola caratteristica non c'è la virgola, quindi il sistema non lo trova se ad esempio ha messo solamente Capelli.
Non c'è per fare in modo che, se la prima ricerca non va a buon fine, inizi la seconda ?

Quindi prima:

PHP:
LIKE '%$ricerca,%'

e se non trova nulla:

PHP:
LIKE '%$ricerca%'

Oppure c'è qualche altra soluzione
 
quando fai l'insert delle caratteristiche aggiungi sempre la virgola finale

Mh capisco, quindi non ci sarebbero altre soluzioni ?

(Come faccio se voglio aggiungere una virgola alla fine delle Caratteristiche di tutti gli utenti nella tabella senza modificarne uno per volta?)
 
Ultima modifica:
sicuramente esiste qualche altra soluzione ma ora non mi viene in mente
per modificate i campi della tabella puoi usare la funzione CONCAT
non ricordo bene la sintassi, dovrebbe essere cosi
Codice:
UPDATE tabella SET campo = CONCAT(campo,',')
fai qualche prova
 
sicuramente esiste qualche altra soluzione ma ora non mi viene in mente
per modificate i campi della tabella puoi usare la funzione CONCAT
non ricordo bene la sintassi, dovrebbe essere cosi
Codice:
UPDATE tabella SET campo = CONCAT(campo,',')
fai qualche prova

Si si la sintassi è giusta.
Fammi sapere se magari ti viene in mente qualcos'altro ;)
 

Discussioni simili