[Php-it] Costruire query con valori GET

Marcello Vezzelli marcello at vezz.it
Tue Jun 5 17:20:10 CEST 2007


spacemarc ha scritto:
> Ho una pagina che visualizza i primi N record da una tabella, con
> tanto di paginazione (sempre via get, ovviamente).
> Vorrei passare a quella pagina anche un ID di un utente (per il WHERE).
>
> Quindi ho da gestire i seguenti parametri:
>
> sortby (ordina i record visualizzati per)
> start   (quanti record per pagina)
> userID (eventuale utente di cui mostrare i record)

Cioè un url del genere
http://tuosito/script.php?start=1&userID=100&sortby=asc

> In pratica devo metterci, in questo codice, un controllo se c'è anche
> un userID oppure no.
> Quale strada consigliate, possibilmente senza troppi giri o codice 
> ridondante?

Non ho ben capito dove sia il problema...
mi auguro che ci sia anche una sessione e qualche controllo su userID... 
a meno che non ti freghi nulla degli impatti sulla sicurezza di uno 
script del genere.

// setti i default
$start=30;
$userID=0;
$sortby='';
// parsi $_GET
if (isset($_GET['start'])) {
    $start=intval($_GET['start']);
}
if (isset($_GET['userID'])) {
    $userID=intval($_GET['userID']);
}
if (isset($_GET['sortby'])) {
    if ($_GET['sortby']=='desc') {
        $sortby='DESC';
    }
}
$query="SELECT c1,c2,c3 FROM tabella WHERE userID=$userID ORDER BY c1 
$sortby LIMIT 0,$start";

Questo codice non ha pretese di sicurezza o particolare bellezza, è un 
punto da cui partire.
Se poi chiarisci meglio cosa vuoi fare si può aggiustare meglio.
Magari vuoi dare errore se manca un parametro, oppure vuoi aggiungere 
ulteriori controlli oltre alla semplice esistenza.

Io comincerei a dare alle variabili dei nomi più pertinenti al loro scopo...
start sa di record di partenza, più che di numero di record per pagina
sortby sa di campo di ordinamento, più che di ordine ascendente/discendente

Giusto per capire meglio tra qualche mese il codice con un'occhiata.

Ciao
Marcello






More information about the Php-it mailing list