Partiamo dalla semantica
, invece di name direi che il campo lo si "dovrebbe" chiamare link.
Il campo sarà UNIQUE di tipo Varchar, e verrà utilizzato al posto dell'id numerico per recuperare il record. In parte è un emulazione del comportamento del filesystem:
- apri il file in /percorso/al/file/nom.ext (SELECT * FROM ...)
- salva il file in /percorso/al/file/nom.ext, controlla prima che non esista già, gestisci l'errore se esiste (INSERT INTO ...)
Serve una funzione che dato un titolo contenente anche caretteri speciali, restituisca una stringa da usare come link.
Ad es. (non la posso testare al momento)
Codice PHP:
function string2link($str,$utf8decode=false){
$str = ($utf8decode) ? utf8_decode($str) : $str; //a seconda del charset pagine/connessione db/db etc.
$str = trim($str);
$str = htmlentities($str);
$str = preg_replace( '/&([a-zA-Z]+)(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);/',"\\1", $str); // è->e,à->a etc.
$str = preg_replace('/[^a-zA-Z0-9\-]/', '-', $str);
$str = preg_replace('/-+/', "-", $str);
$str = trim('-',$str);
return $str;
}
Da usare sia in fase di inserimento che in fase di verifica