Ho tantissimi record da estrarre e vorrei poterli dividere per lettere, nel senso che se uno clicca sulla A escono solo i record che iniziano per A, ecc.
Come dovrei fare la query?
Ho tantissimi record da estrarre e vorrei poterli dividere per lettere, nel senso che se uno clicca sulla A escono solo i record che iniziano per A, ecc.
Come dovrei fare la query?
select * from tabella where nome like 'a%'
grazie nicolaOriginariamente inviato da nicola75ss
select * from tabella where nome like 'a%'perfetto
Altra domandina:
per la A non ho problemi, ma se devo farlo per le altre lettere in automatico?
mi spiego, nella home ho tutto l'alfabeto linkato in questo modo
scegli.php?lettera=A
scegli.php?lettera=B
scegli.php?lettera=C
ecc ecc
nel file scegli.php come posso ottenere in automatico la lettera scelta?
Ora ho select * from tabella where nome like 'a%'
Al posto di A ci metti la variabile.![]()
Codice PHP:
$lettera = $_GET['lettera']; // meglio se fai un controllo che il parametro passato sia nel range a-z
$query = mysql_query("select * from tabella where campo like '$lettera%'") or die(mysql_error() );
si infatti funziona benissimo cosi'Originariamente inviato da nicola75ss
Al posto di A ci metti la variabile.![]()
Codice PHP:
$lettera = $_GET['lettera']; // meglio se fai un controllo che il parametro passato sia nel range a-z
$query = mysql_query("select * from tabella where campo like '$lettera%'") or die(mysql_error() );
Non capisco cosa intendi quando dici:
meglio se fai un controllo che il parametro passato sia nel range a-z
Intendo che devi accertarti che il parametro che verrà passato alla query sia 'legittimo'.Originariamente inviato da Tr|k`Tr4k
si infatti funziona benissimo cosi'
Non capisco cosa intendi quando dici:
meglio se fai un controllo che il parametro passato sia nel range a-z
Devi validare l'input
Codice PHP:
// Esempio
$lettere = range('a','z'); // ti crei un array con tutti i parametri validi
$lettera = 'a'; // questa è una lettera che arriva via querystring
echo in_array(strtolower($lettera),$lettere) ? 'valida' : 'non valida';
// if con l'operatore ternario. Se al posto di a metti 1 ti restituisce non valida e quindi non esegui la query.
![]()
ok, capito, grazie di nuovoOriginariamente inviato da nicola75ss
Intendo che devi accertarti che il parametro che verrà passato alla query sia 'legittimo'.
Devi validare l'input
Codice PHP:
// Esempio
$lettere = range('a','z'); // ti crei un array con tutti i parametri validi
$lettera = 'a'; // questa è una lettera che arriva via querystring
echo in_array(strtolower($lettera),$lettere) ? 'valida' : 'non valida';
// if con l'operatore ternario. Se al posto di a metti 1 ti restituisce non valida e quindi non esegui la query.
![]()
Oppure più semplicemente senza crearti l'array usi una preg.
Codice PHP:
if (preg_match("#^[a-z]$#i",$_GET['lettera']))
// esegui la query
else
echo 'parametro non valido';
![]()
ma un confronto normale tra stringhe?Originariamente inviato da nicola75ss
Oppure più semplicemente senza crearti l'array usi una preg.
Codice PHP:
if (preg_match("#^[a-z]$#i",$_GET['lettera']))
// esegui la query
else
echo 'parametro non valido';
![]()
![]()
le preg_* sono potenti, ma mediamente pesanti, per una cosa del genere io userei un semplice
$lettera = strtolower($_GET['lettera']{0});
if($lettera >= 'a' && $lettera <= 'z')
...