Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [PHP-MySQL] Eseguire più query

    Ciao ragazzi è una settimana che provo ad effettuare più di una query in una paggina ma non ci riesco.

    Allora io effetto le query in modo classico ma naturalmente per quello che mi serve non funziona.

    In pratica il mio script dovrebbe effettuare una prima queri per estrarre i dati in 3 celle scelte nella riga id per poi riutilizzarli in una seconda query dove mi deve stampare i risultati corrispondenti ma non delle stesse celle.

    Non sò se il concetto è chiaro comunque sia ringrazio anticipatamente qualsiasi aiuto divino e non.

    :master:
    Ideabile - Web Design
    Me on Flickr
    http://www.flickr.com/photos/m3kh

    Soit qui mal y pense...

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da M3kH
    Non sò se il concetto è chiaro

    :master:
    Direi di no.

  3. #3
    prova così:

    Query uno:
    $sql = "Select * from nomeTab whwere condizioe "


    Metti i risultati in un array

    $res = @mysql_query($sql);
    while ($rows=mysql_fetch_array($res))
    {
    $rows['nomeColonna1'] = $risultato1;
    $rows['nomeColonna2 ]= $risultato2;
    $rows['nomeColonna3' ]= $risultato3;
    ....
    }

    sql2='select * from nome tabella where nomeColonna=='$risultato1'' e via dicendo con le condizioni;
    3/6/2003 è morto l'angelo della mia vita..
    www.markwebinformatica.net
    My BLOG

  4. #4
    Es:
    Allora io ho un database con le seguenti celle:
    Id, Nome, Cognome, hobbie1, hobbie2, hobbie3.

    Allora quello che dovrei fare io è che da una prima queri che preleva dalla chiave principale Id preleva le info dalle celle hobbie*, queste informazioni devono essere importati e trovare l'esatto uguale in un'altro id, fatto ciò mi dovrebbe stampare il nome e cognome di quelli che hanno gli stessi hobbie.


    Spero di essere stato più chiaro
    Ideabile - Web Design
    Me on Flickr
    http://www.flickr.com/photos/m3kh

    Soit qui mal y pense...

  5. #5
    ma scusa a che ti serve l'id ?
    non basta che crei un forn di ricerca dove scrivi l'Hobby e poy invii al dbase quello e ti fai restituire solo le parsone che praticano quell'hobby?

    Codice PHP:

    $cerca
    =$_POST['cercaArtista'// setti l'la variabile che memorizza l'hobby cercato

    [bscrivi  Hobby[/b]
     <
    form method='post' > <INPUT type='TEXT' name='cercahobby' maxlength='30' size='30' value=''> <input type='submit' value='Cerca'> </form>


     if(
    $cerca!='') {
                
    $sql="SELECT nome , cognome,FROM Tabbella WHERE ((hobby1== $cerca) OR (hobby2 == $cerca) OR (hobby3 == $cerca));";
                
               
            
    $res = @mysql_query($sql);
            
                        while (
    $vedi=mysql_fetch_array($res)){ echo $vedi['nome']."  ".$vedi['cognome']; }
                } 
    3/6/2003 è morto l'angelo della mia vita..
    www.markwebinformatica.net
    My BLOG

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da M3kH
    Es:
    Allora io ho un database con le seguenti celle:
    Id, Nome, Cognome, hobbie1, hobbie2, hobbie3.

    Allora quello che dovrei fare io è che da una prima queri che preleva dalla chiave principale Id preleva le info dalle celle hobbie*, queste informazioni devono essere importati e trovare l'esatto uguale in un'altro id, fatto ciò mi dovrebbe stampare il nome e cognome di quelli che hanno gli stessi hobbie.


    Spero di essere stato più chiaro
    Quindi se ho capito bene tutte le persone inseriscono obbligatoriamente 3 hobby diversi e tu devi trovare solo le persone che hanno esattamente gli stessi 3 del record che scegli.

    Che versione hai di mysql? Forse trasformando le colonne degli hobby in righe e usando il group_concat per rendere omogeneo il campo degli interessi si può risolvere.

    Senza il group_concat non saprei.

  7. #7
    Allora ho provato un pò a sperimentare e qualcosa ne ho tirato fuori l'unico problema è che non funziona... ma per questione di logica dovrebbe ^^'

    Codice PHP:
    $query1 "SELECT hobbie1,hobbie2,hobbie3 FROM tabbella WHERE id='$id'";
    $result1 mysql_query($query1$db);

    while (
    $rows=mysql_fetch_array($result1))
    {
    $rows['hobbie1'] = $hobbie1;
    $rows['hobbie2']= $hobbie2;
    $rows['hobbie3' ]= $hobbie3;
    }



    $query2"SELECT * FROM tebbella WHERE
    hobbie1='
    $hobbie1' AND hobbie1='$hobbie2' AND hobbie1='$hobbie3' AND
    hobbie2='
    $hobbie1' AND hobbie2='$hobbie2' AND hobbie2='$hobbie3' AND
    hobbie3='
    $hobbie1' AND hobbie3='$hobbie2' AND hobbie3='$hobbie3'";

    $result2 mysql_query($query2$db);

    while (
    $row=mysql_fetch_array($result2)){

    echo 
    "<a> $row[nome]</a> 
     
    $row[cognome]
    "
    ;

    Il risultato? se io vado a pagina.php?id=1 è una semplice pagina bianca senza neanche il minimo errore però neanche nessun risultato. Ho controllato correttamente tutti i dati sia nel database e nel php, sono corretti.
    Ideabile - Web Design
    Me on Flickr
    http://www.flickr.com/photos/m3kh

    Soit qui mal y pense...

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Prima di buttarti a scrivere il codice php hai provato a eseguire semplicemente la query? Come fanno tutte quelle condizioni a essere contemporaneamente vere?
    Non ho tempo adesso per provare l'sql ma se puoi usare group_concat dovrebbe essere fattibile direttamente con una query come ti dicevo prima.
    Se invece vuoi risolvere con php devi lavorare con le funzioni array_diff e count.

    Ecco un esempio per farti vedere la logica.

    Codice PHP:
    <?php
    $interessi 
    = array('cinema','musica','sport'); // utente che ci interessa

    $utenti = array(=> array('musica','cinema','sport'),
                    
    => array('musica','pesca','lettura'),
                    
    => array('cinema','sport','musica'),
                    
    => array('mangiare','dormire','computer'),
                    
    => array('birdwatching','dormire','pesca'),
                    
    => array('sport','musica','cinema')
                ); 
    // array con tutti gli altri utenti
                
    $comuni = array();
    foreach(
    $utenti as $id => $utente) {
        if (
    count(array_diff($utente,$interessi)) == 0)
            
    $comuni[] = $id;
    }
    echo 
    '<pre>';
    print_r($comuni); // stampa 2,4,7 cioè gli id delle persone con gli stessi interessi
    ?>
    Devi solo adattarla alle tue esigenze con l'array che crei dinamicamente tramite query

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da M3kH
    Es:
    Allora io ho un database con le seguenti celle:
    Id, Nome, Cognome, hobbie1, hobbie2, hobbie3.

    Allora quello che dovrei fare io è che da una prima queri che preleva dalla chiave principale Id preleva le info dalle celle hobbie*, queste informazioni devono essere importati e trovare l'esatto uguale in un'altro id, fatto ciò mi dovrebbe stampare il nome e cognome di quelli che hanno gli stessi hobbie.


    Spero di essere stato più chiaro
    Prova così

    codice:
    select tab1.*
    from hobbies as tab1 
    left join hobbies as tab2
    on (tab1.id != tab2.id and tab2.id = x)
    where tab1.hobbie1 in (tab2.hobbie1,tab2.hobbie2,tab2.hobbie3)
    and tab1.hobbie2 in (tab2.hobbie1,tab2.hobbie2,tab2.hobbie3)
    and tab1.hobbie3 in (tab2.hobbie1,tab2.hobbie2,tab2.hobbie3)
    dove x è l'id dell'utente del quale cerchi gli affini.

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.