Visualizzazione dei risultati da 1 a 10 su 10

Discussione: query mysql e array

  1. #1

    query mysql e array

    vorrei solamente sapere se è possibile effettuare una query in un database mysql sfruttando questo codice:

    select id from utenti where sesso as $datiricerca[] and fasciaeta as $datiricerca[]

    cioè, se io ricevo i dati dall'utente di una ricerca tramite form contenente checkbox e le colonne sesso e fasciaeta sono colonne "set" con valori distinti (non possono esserci valori uguali: sesso = maschio o femmina mentre fasciaeta = giovane, adulta, anziana).
    senza fare caterve di if, elseif, else, while, etc, etc ero riuscito a trasformare i dati in un unico array $datiricerca contenente ciò che aveva selezionato l'utente tramite checkbox.

    facendo una query come quella inserita sopra, essa funziona? cioè, supponendo che per esempio l'utente scelga maschio, femmina, giovane e adulta, la query mostrerà tutti gli utenti maschi di età giovane ed adulta e tutti gli utenti femmina di età giovane ed adulta inseriti nella tabella utenti?
    o non può funzionare?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    dovresti trasformare i tuoi array in due stringhe con le varie opzioni separate da virgola, quindi sesso (m,f) e fasciaeta(giovane,adulta,anziana)
    vedi implode sul manuale
    http://se.php.net/manual/it/function.implode.php

    A questo punto la tua query diventa

    select id from utenti where sesso in ('m','f') and fasciaeta in ('giovane','adulta','anziana')

  3. #3
    cioè facendo come tu dici posso usare liberamente i checkbox inseriti dagli utenti (che quindi non posso prevedere quali vengono selezionati) senza ingarbugliarmi in svariate decine di if, elseif, etc?

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da tommaso.pase
    cioè facendo come tu dici posso usare liberamente i checkbox inseriti dagli utenti (che quindi non posso prevedere quali vengono selezionati) senza ingarbugliarmi in svariate decine di if, elseif, etc?
    Prova la query che ti ho postato (al posto di m e f metti maschio e femmina) da phpmyadmin o dall'interfaccia che usi e vedi se ti restituisce i record attesi. Nello specifico dovrebbe bastare una query del genere. Poi dipende da come imposti il tuo motorino di ricerca.

    Anzichè usare $datiricerca meglio se usi una variabile per il sesso, una per la fascia d'eta ecc.

  5. #5
    non funziona... ho provato su phpmyadmin a fare la query che suggerivi ma continua a darmi insieme vuoto come risultato... nonostante ho variato i dati all'interno delle due parentesi imitando letteralmente quelli di una riga... ma nada... ah, il problema può dipendere dal fatto che alcune righe hanno più dati? (p.e. una riga può avere sia giovane che adulta nella colonna età... non solo uno ma anche più d'uno...).

    Può essere per questo? oppure perchè?

  6. #6
    non c'è modo di risolvere il mio problema e riuscire a fare quanto chiedo?

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da tommaso.pase
    ah, il problema può dipendere dal fatto che alcune righe hanno più dati? (p.e. una riga può avere sia giovane che adulta nella colonna età... non solo uno ma anche più d'uno...).

    Può essere per questo? oppure perchè?
    Come fa un record ad avere contemporaneamente due fascie d'età?

  8. #8
    ehm... boh... cioè, sul database mi segnala più valori in alcune colonne... supponiamo ad esempio che nella riga di id 86, nella fascia di età siano inseriti i valori 'giovane','adulto'... cioè ne vedo più di uno... è sbagliato questo?

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da tommaso.pase
    ehm... boh... cioè, sul database mi segnala più valori in alcune colonne... supponiamo ad esempio che nella riga di id 86, nella fascia di età siano inseriti i valori 'giovane','adulto'... cioè ne vedo più di uno... è sbagliato questo?
    Credo proprio di sì, se il campo fascia d'età deve identificare l'individuo con id 86, l'attributo dovrebbe essere unico, o giovane o adulto. Non so come sia strutturata la tua tabella. Se hai un campo con la data di nascita potresti evitare di mettere la fascia d'età e calcolarla direttamente tramite la query decidendo l'intervallo di anni entro il quale rientra il giovane, l'adulto o l'anziano.

  10. #10
    no, supponiamo che la fascia di età sia una colonna del tipo "fascia di età adatta", allora accetterà più valori... no?

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.