Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Struttura query

  1. #1

    Struttura query


    In una pagina di ricerca, strutturo una query a seconda dei campi passati dal form di ricerca, una cosa del tipo

    Query iniziale
    Select * from tabella where id = '$id'

    if(campo != '')
    and campo = '$campo'

    etc....

    Ora...mi sono cambiate le cose nella struttura del database, è stata aggiunta una tabella sulla quale devo fare il controllo, una cosa del tipo:

    TABELLA PRINCIPALE
    iduser - campo1 - campo2

    TABELLA AGGIUNTA
    id - iduser - campoA - campoB
    ---------------------

    Quel che mi cambia è per cui la query iniziale dove dovrei fare una query di questo tipo
    Select * from tabella where id = '$id' AND ---> in tabella aggiunta trovi almeno 1 record con iduser = '$id' e campoA = 'ok'

    Devo controllare per cui che, nella TABELLA AGGIUNTA ci sia almeno 1 record che corrisponde a ciò che sto cercando... è una JOIN vero?
    Tanto...lo fanno tutti... posso farlo anche io vero?

  2. #2
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    select [tabella principale].* from [tabella principale] INNER JOIN [tabella aggiunta] ON [tabella principale].iduser=[tabella principale].iduser where [tabella principale].iduser='$id'
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  3. #3
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Puoi usare join o sotto select oppure :

    select t1.* from tabella1 t1 , tabella2 t2 where t1.id ='$id' AND t2.id_user='$id' AND t2.campoA='$valore'

  4. #4
    Grazie ragazzi veloci e precisi...
    faccio una domanda a monte, come detto inizialmente ho una tabella con (esempio)-> 10 campi....

    Di conseguenza ho creato 1 form con i posisbili valori di questi 10 campi...
    Ho un valore "fisso" che mi permette di strutturare inizialmente la query SELECT * FROM tabella where pippo = 1 ...di conseguenza uso gli IF per aggiungere alla query i vari AND CAMPO = 10 etc....

    ovviamente la query funziona benone (a parte la modifica che devo fare)...esiste però un modo per evitare tutti gli IF su ogni singolo campo o è la strada migliore quelal che ho applicato?

    (in sostanza io controllo se il valore $_POST['valore'] è vuoto oppure no e se contiene qualcosa gli appiccico il suo AND)
    Tanto...lo fanno tutti... posso farlo anche io vero?

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Eh e' una domanda da 1000 dollari.

    Puoi usre milioni di tecniche.
    La piu' comoda e' usare un identificativo particolare nel nome del campo del form

    tipo
    <input type=".." ... name="identificati_sono_campo_citta">
    <input type=".." ... name="identificati_sono_campo_regione">

    a questo punto sul php
    Codice PHP:

    $ctrl 
    "identificati_sono_campo_";

    // scorre tutti i campi della var in post
    foreach($_POST as $n=>$v)
    {
       if( 
    strpos$n $ctrl )!==false )
       {
          
    /*controlli il valore etc*/

          /* se e' tto apposto forgi la var ripulita dal token di controllo*/
          
    $tmp str_replace$ctrl "" $n );
          $
    $tmp $v;
       }

    }

    // a questo punto posso accedere ai dati 
    echo $citta."---".$regione."
    "



    EDIT:ho aggiunto qlke ; che mi ero dimenticato di mettere

  6. #6
    Capito
    Tanto...lo fanno tutti... posso farlo anche io vero?

  7. #7
    Eccomi...uhmmm
    ho fatto
    Codice PHP:
    SELECT tab_utenti.* FROM tab_utenti INNER JOIN legami.idprovider '11' WHERE tab_utenti.livello '3' 
    Le mie tabelle sono così composte (non metto tutti i campi)

    tab_utenti
    id - nome - livello
    1 pippo 3
    2 topolino 3
    3 paperino 3
    4 aaaaaaa 4

    legami
    id - idutente - idpadre
    1 1 2
    2 3 2


    lego per cui paperino e pippo a topolino
    da quì la select....select user where livello = 3 e idpadre = 2 ...come ho fatto non funzia
    Tanto...lo fanno tutti... posso farlo anche io vero?

  8. #8
    FATTO
    SELECT DISTINCT tab_utenti.* FROM tab_utenti INNER JOIN legami ON tab_utenti.id = legami.idutente WHERE tab_utenti.livello = '4' AND legami.idprovider = '11' ORDER by nome ASC
    Tanto...lo fanno tutti... posso farlo anche io vero?

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.