Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766

    Dividere i record per lettere iniziali

    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?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    select * from tabella where nome like 'a%'

  3. #3
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766
    Originariamente inviato da nicola75ss
    select * from tabella where nome like 'a%'
    grazie nicola perfetto

  4. #4
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766
    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%'

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    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() ); 

  6. #6
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766
    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() ); 
    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

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    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
    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. 

  8. #8
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766
    Originariamente 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. 
    ok, capito, grazie di nuovo

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    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'

  10. #10
    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'
    ma un confronto normale tra stringhe?
    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')
    ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.