Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509

    [php] value o non value nei select?

    ciao a tutti.. sto importando dei dati nel mio db....(ho iniziato da un mesetto a tempo perso )

    gurdando nei siti qua e la o almeno provandoci, ho notato che dove usano tanti campi neiselect tendono a mettere

    <option value=2>blabla</option>

    in pratica danno un valore value numerico, ....e cosi da bravo copioneche non sa mi sono messo a fare select kilometrici da 1000 e passa righe....solo che solo dopo quando mi sono messo a trasportare i datisul db mi son reso conto che in realta' passano i numerio e non il testo.

    come posso fare per avere il testo nel db o trasformare poi i numeri in testo quando vado a visualizzarli?
    non ditemiche devo mettermia creare unamega tabella sul bd o che devo riscrivere tutto please

  2. #2
    probabilmente il numero fa riferimento all'id nel database. Solitamente si usa fare così. Per il resto è normalissimo che il select invii il value
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    quindi cosa fanno loro? creano un ulteriore database con una cella dove s'è l'id e una dove c'è la scritta? tipo

    1 casa
    2 città

    etcc?
    sorry ma non sono praticissimo

  4. #4
    Non creano un nuovo database, creano una nuova tabella.
    Cmq si, hai capito com'è il discorso.

    Provo a spiegarti meglio.

    Facciamo finta che devi registrarti sul forum di html.it

    Arrivi alla pagina di iscrizione e c'è il select con la provincia.

    Da dove arrivano tutte quelle province?

    Sul db di html.it ci sarà una tabella di questo tipo

    id nomecittà
    1 Agrigento
    2 Alessandria

    ecc.

    Nella pagina che visualizzi html.it ti fa scegliere così

    <select ...>
    <option value="1">Agrigento</option>
    <option value="2">Alessandria</option>
    ....
    </select>

    Quando tu invii la tua iscrizione html.it metterà nella tabella iscritti L'ID DELLA TUA PROVINCIA, non il nome.

    Perchè?

    L'id in una tabella devessere UNIVOCO. Cioè dev'esserci una sola riga nella tabella con quel numero di id. Quindi ad ogni id è associata una riga.

    A questo punto l'id rappresenta una riga sulla tabella province.

    Ok, l'id è univoco e rappresenta una riga, ma che mi frega? Qual'è l'utilità?

    Semplicemente in questo modo html.it metterà nella riga riguardante il tuo utente, sulla tabella utenti, semplicemente l'id della provincia.. e non tutto il nome. I vantaggi sono in termini di spazio occupato ed affidabilità del database.

    L'esempio con le province rende poco l'idea, ma per capire quanto utile è questo modo di organizzare il database prova a immaginare cosa succederebbe se per ogni post che fai sul database di html.it dovessero essere ricopiati ogni volta tutti i tuoi dati

    In realtà, usando gli id (abbreviazione di index), tutto diventa più facile. Basta inserire il tuo id nella riga del tuo post sulla tabella forum_post per trovare in un battibaleno tutte le informazioni che riguardano te sulla tabella utenti

    Spero di aver reso l'idea!!
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    ok ho capito tutto
    ora pero' mi surge un dubbio...

    devo creare due tabelle, una per i select dove metto due campi (id e le varie voci) mentre nell'altra tabella ho sempre un id poi tutti gli altri campi......

    ma come faccio a legare la prima tabella con la seconda?
    cioè faccio il select, il valore numerico viene passato alla prima tabella, la quale trasforma da valore a lettere e passa il tutto alla seconda tabella.
    è cosi che funziona?

    dove posso trovare un qulcos che mi spieghi in mniera dettagliata come fare? a menoche tu non voglia perdere un po di tempo a spiegarmelo

  6. #6
    Se hai bisogno di far visualizzare la provincia puoi usare due query, con una trovi l'utente e prendi l'id della provincia. Con l'altra cerchi nella tabella province qual'è la riga che ha lo stesso id e prendi il nome della provincia.

    SELECT * FROM users WHERE username = '$username' AND pass = '$pass';

    e

    SELECT nomeprov FROM province WHERE id = '$provid';

    In alternativa puoi usare query miste o addirittura innestate ma questo dipende dal db che usi.

    Trovi qualcosa qui.

    Inoltre puoi approfondire la questione delle stringhe SQL qui.

    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    no niente.
    scusa iron ma non ne vengo a capo....

    mettiamo caso che io abbia un form un po piu' complesso come nome cognome via città comune etcc....

    nome cognome via, li metto con un input libero, mentre le città e i comuni li metto ocn un select e ogni option associo un value numerico.

    con phpmyadmin, mi collego e creo due tabelle. su una metto una cella con i valori numerici dei value e una cella con i nomei delle varie città e comuni.

    poi nell'altra tabella metto tutti i dati recuperati dal form iniziale.

    quello che poi vorrei fare è creare un'altra pagina dove visualizzo i risultati. tutti o facendo una selezione per città e comune...
    ma è piu' facile a dirsi che farsi.

  8. #8
    non è difficile!

    Però:
    -devi creare una tabella con tutte le province
    -devi creare una tabella con tutti i comuni
    -devi creare una tabella con gli utenti registrati

    A questo punto devi avere queste tre tabelle così strutturate:

    codice:
    TABELLA PROVINCE
    id   | nome
    ---------------------
    1    | Agrigento
    2    | Vicenza
    ...  | ...
    codice:
    TABELLA COMUNI
    id   | nome       | idprovincia
    ---------------------------------
    1    | comAgrig   | 1
    2    | comAgrig2  | 1
    ...  | ...        | ...
    30   | comVicen   | 2
    31   | comVicen2  | 2
    codice:
    TABELLA UTENTI
    id   | idcomune | nome        | cognome       | ...
    ----------------------------------------------------
    1    | 2        | Caloggero   | Capuozzo      | ....
    2    | 31       | Bepi        | Xausa         | ....
    Da notare
    L'id non è un numero a caso, ma un numero progressivo che viene assegnato alle righe quando vengono inserite in modo automatico.
    Ottieni questo effetto selezionando su phpmyadmin per quella riga l'opzione "Autoincrement" dopo aver selezionato "unsigned int". SArebbe corretto abilitare il campo id anche come index sebbene non sia indispensabile.

    Come funziona?
    Quando il tuo utente entra nel form di registrazione sceglie la provincia e puoi far fare un refresh alla pagina aggiornando il select dei comuni con i soli comuni appartenenti a quella provincia. Nel nostro caso per esempio l'option del comune comVicen2 deve uscire così

    <option value="31">comVicen2</option>

    L'utente seleziona quindi il suo comune, per ipotesi facciamo finta che sia comVicen2. Clicca su "iscrivi" e tu inserisci nella tabella utenti i suoi dati.
    In partcolare però, quello che ci interessa, è l'inserimento dell'id del suo comune. Cioè 31.

    Facciamo finta che questo utente che si è iscritto sia proprio Bepi Xausa (vedi esempio delle tabelle).

    A questo punto tu vuoi cercare solamente gli utenti che appartengono al comVicen2.

    Nella tua pagina di ricerca avrai previsto un <select name="comune"> con i vari <option value="31">comVicen2</option> ecc. per scegliere quale comune cercare.

    Ti basterà fare

    codice:
    $sql="SELECT * FROM utenti WHERE idcomune = '$_POST['comune']'";
    E' molto semplice!

    Ora devo scappare! magari ti posto l'esempio per la ricerca secondo provincia e provincia/comune più tardi! Per ora prova a realizzare questo!

    Ciao!!!
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    grazie per l'aiuto che mi stai dando iron, una cosa non mi spiego.
    avendo tre tabelle differenti, quando voglio visualizzare i dati, come faccio conla query? se la faccio alla tabella dove ho i dati dell'iscritto mi ritrovo valori e non il nome del comune...ecco, anche questolegame non lo capisco...faccio in pratica piu' query?

  10. #10
    Facciamo finta che vuoi visualizzare una pagina di riassunto dell'utente Bepi Xausa

    Puoi fare più query (di tipo semplice):

    codice:
    SELECT * FROM utenti WHERE id='2';
    Questa riga restituisce i dati dell'utente bepi, ma devi prendere anche il nome del comune e della provincia perchè devi visualizzarli. Quindi fai anche le seguenti query:

    codice:
    SELECT * FROM comuni WHERE id='$idcomune';
    SELECT * FROM province WHERE id='$idprovincia';
    Come funziona?

    Dalla prima query trovi tutti i dati di bepi incluso l'id del suo comune. Con l'id del comune, tramite la seconda query, trovi sia il nome del comune che l'id della provincia. Con l'id della provincia e la terza query trovi in fine anche il nome della provincia.

    Tuttavia puoi sostituire le tre query viste sopra con query un po' più complesse che riescono ad estrapolare dati in modo più efficace anche se richiedono una certa pratica per essere utilizzate:

    codice:
    SELECT utenti.nome, utenti.cognome, comuni.nome AS comune, province.nome AS provincia FROM utenti, comuni, province WHERE utenti.id='1' AND comuni.id=utenti.idcomune AND province.id=comuni.idprovincia;
    Con quest'ultima query il database ti restituirà tutto quello che ti serve senza bisogno di fare richieste multiple. Quindi la cosa diviene anche più performante.

    Ti basterà fare così per avere quello che ti interessa riguardo a Bepi.

    codice:
    $result=mysql_query(ULTIMA_SQL);
    $rs=mysql_fetch_object($result);
    
    print "L'utente ".$rs->nome.' '.$rs->cognome.' abita a '.$rs->comune.' nella provincia di '.$rs->provincia;
    Questa operazione è detta join, cioè si produce un set di risultati colleganto i record (righe) di una tabella con quelli di un altra.

    Come funziona?

    Chiediamo al db di restituire il campo "nome" della tabella utenti con utenti.nome e facciamo lo stesso con il cognome. Chiediamo anche di restituire "nome" della tabella comuni creando un alias con la direttiva AS. Usiamo l'alias perchè inserire in un set di risultati due campi con lo stesso nome non è possibile. Con "AS comune" diciamo al db di dare ai risultati del campo comuni.nome un nuovo nominativo, in questo caso "comune". Infatti poi useremo "comune" da php per ottenere il valore. Facciamo lo stesso con province.nome rinominandole in "provincia".

    A questo punto diciamo in che tabelle cercare con FROM e le separiamo con una virgola.

    Con WHERE poi specifichiamo dove selezionare i risultati.
    Quando specifichi un campo di una tabella dopo where lavorando con tabelle multiple il db prende in considerazione la prima che coincide e procede con le altre (almeno in teoria).

    Ecco come funziona:
    -C'è solo una clausola che riguarda la tabella utenti nel WHERE. E' utenti.id='1'. Questa è immediatamente soddisfabile quindi il database si porta nel record dell'utente 1 (Bepi). Ha già soddisfatto i primi requisiti del SELECT (ossia utenti.nome, utenti.cognome). Ora procede ad analizzare la clausola WHERE.
    -Trova una nuova condizione da soddisfare che riguarda i comuni: AND comuni.id=utenti.idcomune. "utenti.idcomune" è un valore noto perchè il db si è già fermato all'utente Bepi nella tabella utenti. Ecco quindi che il db sa anche in che riga fermarsi sulla tabella comuni per prendere comuni.nome. Procede ad analizzare il WHERE.
    -Trova un altra condizione da soddisfare: AND province.id=comuni.idprovincia. Cerca nella tabella province dove esiste una riga con id pari a "comuni.idprovincia" che ha prelevato nel punto precedente e così, avendo individuato una riga anche per la tabella provincie finisce di soddisfare i requisiti del SELECT.

    Non ti spaventare cmq per la complessità di questa query "tutto in uno"
    Quasi nessuno ha bisogno di ottimizzare così tanto gli accessi al database. Puoi tranquillamente fare delle query multiple ed anche se farai qualche richiesta in più non te ne accorgerai nemmeno a livello di performance e non rischierai di incappare in logoranti "bombe logiche".

    Esistono altri metodi ancora più complessi per utilizzare interrogare un database, come le query innestate, ma io non le ho mai utilizzate perchè è difficile averne veramente bisogno e soprattutto non tutti i database le supportano..

    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.