Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    ordinare per id o data record con where estratto da un altra query

    Scusate gente, sono giorni che sbatto la testa, in realtà avavo aperto un altro thread ieri o l'altro ieri ma ho ricevuto solo diverse decine di visite e 0 risposte, forse perchè sono stato poco chiaro.
    Spiego il mio problema, sto realizzando un applicazione stile facebook/twitter ("forse troppo ambizioso come progetto") fila tutto abbastanza liscio , login,registrazione, richieste amicizie, gestione profili etc, ma ho un problema;
    devo visualizzare in home i commenti delle persone che seguo oridanti per data o per id in chiave primaria/auto_increment, tutto bene tranne per il fatto che i post vengono ordinati per data o per id, ma per singolo utente e non "scandagliati", esempio:
    "se ho gigi che scrive 10 commenti, e trottola che scrive 15, questi vengono ordinati per data, ma vengono ordinati i 10 di gigi e poi i 10 di trottola";
    ho provato con delle join a convertire in json_encode ho provato di tutto. la classe che gestisce tutto è molto grande, ho realizzato questo script che riassunme il metodo principale della classe ma si evince comunqe il problema ecco a voi:
    Codice PHP:

    function __commentnew()
    {
    $myid $_SESSION['id'];
    $query_all mysql_query ("select * from post order by data desc");
    $query_friends mysql_query ("select myfriends from friends where idmy = '$myid'");
    while (
    $friends mysql_fetch_array ($query_friends)){
        
        
        echo 
    $friendsnum $friends['myfriends'];
        
    $query_all mysql_query ("select * from post where iduser = '$friendsnum' order by data desc");
        
        while (
    $readcomment mysql_fetch_array ($query_all))
        {
            
            
            echo 
    $readcomment['nome'];
            echo 
    $readcomment['commento'].'
    '
    ;
            
            
    /*ETC   ETC:: ETC:::*/
            
            
            
    }
        
        
        
        } 
    Spero di esser stato abbastanza chiaro anche perchè, un pò complicato da descrivere come problema...
    aspetto

    edit:

    potete leggere il mio poco chiaro vecchio thread qui, c'è anche uno screenshot dell'applicazione

    http://forum.html.it/forum/showthrea...readid=1544706
    01001101 01000001 01010010 01001001 01001111 01000000 01001101 01001111 01001110 01000101☺☻

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Ma così?

    Codice PHP:
    function __commentnew()
    {
    $myid $_SESSION['id'];
    $query_all mysql_query ("SELECT * FROM post 
                                  WHERE post.iduser IN (SELECT myfriends.idfriend FROM myfriends WHERE myfrineds.idmy = '
    $myid') 
                                  ORDER BY post.data DESC"
    );
    while (
    $posts mysql_fetch_array ($query_all)){
        

            echo 
    $readcomment['nome'];
            echo 
    $readcomment['commento'].'
    '
    ;
            
            
    /*ETC   ETC:: ETC:::*/
            
            
            
    }
        
        } 
    In alternativa, se non hai i dati dell'utente del post (nome, etc) nella tabella post, puoi fare prima il join con la tabella che contiene i dati (es user)
    Codice PHP:
    SELECT FROM post
    JOIN user ON 
    (post.iduser user.id )
    WHERE user.id IN (SELECT myfriends.idfriend FROM myfriends WHERE myfrineds.idmy '$myid'
    ORDER BY post.data DESC 

  3. #3
    Originariamente inviato da boots
    Ma così?

    Codice PHP:
    function __commentnew()
    {
    $myid $_SESSION['id'];
    $query_all mysql_query ("SELECT * FROM post 
                                  WHERE post.iduser IN (SELECT myfriends.idfriend FROM myfriends WHERE myfrineds.idmy = '
    $myid') 
                                  ORDER BY post.data DESC"
    );
    while (
    $posts mysql_fetch_array ($query_all)){
        

            echo 
    $readcomment['nome'];
            echo 
    $readcomment['commento'].'
    '
    ;
            
            
    /*ETC   ETC:: ETC:::*/
            
            
            
    }
        
        } 
    In alternativa, se non hai i dati dell'utente del post (nome, etc) nella tabella post, puoi fare prima il join con la tabella che contiene i dati (es user)
    Codice PHP:
    SELECT FROM post
    JOIN user ON 
    (post.iduser user.id )
    WHERE user.id IN (SELECT myfriends.idfriend FROM myfriends WHERE myfrineds.idmy '$myid'
    ORDER BY post.data DESC 
    Ciao @boots, intanto grazie per la risposta, ma non funge, avevo anch'io provato una soluzione simile ma senza risultato, cmq pare che almento tu abbia capito il broblema, qualche altra ideaa?
    01001101 01000001 01010010 01001001 01001111 01000000 01001101 01001111 01001110 01000101☺☻

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Non funiziona in che senso? come hai organizzato le tabelle del db?

  5. #5
    Ciao boot questa è la tabella post
    Codice PHP:
    id     int(10)                   
    iduser     int(11)                   
    nome     varchar(200)                 
    cognome     varchar(200)                
    commento     longtext                
    fotoid     varchar
    (300)                  
    mail     varchar(300)                
    data     varchar(300)                 
    fotopost     varchar(300)                
    timestamp     timestamp 
    Questa invece è la tabella friends
    Codice PHP:


    idmy     int
    (11)     No              
    myfriends     int
    (11


    nel campo myfriends insericsco l'id dell'utente in chiave priamria della tabella utenti, così esso diventerà mio amico , mentre nella tabella post oltre ad un id del post sempre in chiave primaria inserisco nel campo iduser, l'id dell ' utente in modo tale da sapere se il post è inviato da una persona che seguo o meno
    in pratica una volta loggato l'utente, se nella tabella post ci sono post con l'iduser corrispondente al campo myfriends della tabella friends, dove idmy corrisponde all'id utente ovviamente, quest'ultimo dovrà visualizzare i post ordinati per data.
    01001101 01000001 01010010 01001001 01001111 01000000 01001101 01001111 01001110 01000101☺☻

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    allora la query è questa

    Codice PHP:
    "SELECT * FROM post 
     WHERE post.iduser IN (SELECT myfriends.myfriends FROM myfriends WHERE myfrineds.idmy = '
    $myid') 
     ORDER BY post.data DESC" 
    Se non funziona, dovresti controllare se inserisci correttamente gli id nella varie tabelle

  7. #7


    é quella di prima, gli id nelle tabelle funzionano a prova di bomba..
    Cmq ho provato con una naturaljoin ma ottengo lo stesso risultato di prima, cioè ordinati per data,si, ma per blocchi di ogni singolo utente.
    01001101 01000001 01010010 01001001 01001111 01000000 01001101 01001111 01001110 01000101☺☻

  8. #8
    [contributo di chiarezza]
    _______________________
    mario 10:30
    alessio 10:25 =ordine coretto
    mario 10:15
    alessio 10:10

    _______________________
    mario 10:30
    mario 10:15
    alessio 10:25 =ordine in base all'id
    alessio 10:10





    [/contributo di chiarezza]
    01001101 01000001 01010010 01001001 01001111 01000000 01001101 01001111 01001110 01000101☺☻

  9. #9
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Scusa, ma non ha senso ... come fa a raggrupparli per id ?
    Posti il codice con questa query

  10. #10
    Ciao boot ti ho spiegato, la tua queri mi restituisce false...
    se uso questo una query normale invece
    Codice PHP:
    function __commentnew() 

    $myid $_SESSION['id']; 
    $query_all mysql_query ("select * from post order by data desc"); 
    $query_friends mysql_query ("select myfriends from friends where idmy = '$myid'");
     while (
    $friends mysql_fetch_array ($query_friends)){ 
         
         
        echo 
    $friendsnum $friends['myfriends']; 
        
    $query_all mysql_query ("select * from post where iduser = '$friendsnum' order by data desc");
          
        while (
    $readcomment mysql_fetch_array ($query_all)) 
        { 
             
             
            echo 
    $readcomment['nome']; 
            echo 
    $readcomment['commento'].'
    '

             
            
    /*ETC   ETC:: ETC:::*/ 
             
             
            

         
         
         
        } 
    riesco ad avere si tutti i post delle persone che seguo in home ordinati per data, ma per ordine di richiesta di amicizia cioè: tutti i post di tizio ordinati per data, tutti i post di caio ordinati per data etc...
    01001101 01000001 01010010 01001001 01001111 01000000 01001101 01001111 01001110 01000101☺☻

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.