Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di andbaz
    Registrato dal
    Jul 2011
    Messaggi
    441

    while dentro while, piccolo problema

    Ho una serie di dati nel mio database, ho dei post con i relativi commenti degli altri, quando voglio stampare i post tramite $var tutto ok, li stampa tutti come dovrebbe, invece i commenti me ne stampa solo uno, non saprei come posizionare i due cicli while....
    Come posiziono i due cicli while affinchè mi si vengano stampati tutti i commenti? ($quote)

    Codice PHP:
    $sql "SELECT * FROM stato ORDER BY IDS DESC";
    $query mysql_query($sql);
    $nrw mysql_num_rows($query);

    $sql2 "SELECT * FROM commento ORDER BY IDC ASC";
    $query2 mysql_query($sql2);
    $nrw2 mysql_num_rows($query2);

    while (
    $nrw2 mysql_fetch_assoc($query2)) {
                
        
    $quote $nrw2['TESTO'];
                                
        while (
    $nrw mysql_fetch_assoc($query)) {
                            
            
    $text $nrw['TESTO'];

                    
    $var $text $quote ";
                    echo 
    $var;
            }


  2. #2
    $nrw e $nrw2 sono variabili che contengono il numero delle righe trovate con la query.

    Non si capisce cio' che vorresti fare e sopratutto lo script non e' corretto. Che relazione ti aspetti di trovare tra il testo delle due tabelle????

    Comunque nella migliore delle ipotesi verrebbe completato il ciclo while piu' interno e renderebbe poi false al secondo ciclo del primo while. Minimo dovresti resettare il result set e ricominciare da capo il while interno. Ma manca il senso di una cosa del genere.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di andbaz
    Registrato dal
    Jul 2011
    Messaggi
    441
    Cioè: ho dei post con la variabile text, e ho dei commenti con la variabile quote che si collegano ai relativi post. Il problema è come stampare questi ultimi? (E' un piccolo social network)
    Cos'è che dovrei fare?
    I post me li stampa tutti, come dovrebbe. Invece per i commenti non so... sbaglio nella sintassi? In cosa?

  4. #4
    Originariamente inviato da andbaz
    Cioè: ho dei post con la variabile text, e ho dei commenti con la variabile quote che si collegano ai relativi post. Il problema è come stampare questi ultimi? (E' un piccolo social network)
    Cos'è che dovrei fare?
    I post me li stampa tutti, come dovrebbe. Invece per i commenti non so... sbaglio nella sintassi? In cosa?
    sbagli nel fare due query. devi fare una join tra le due tabelle utilizzando il campo che le collegano.

    codice:
    select *
    from tab1
    inner join tab2 on tab1.id = tab2.id
    order by tab1.id
    ed un solo ciclo while.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it L'avatar di andbaz
    Registrato dal
    Jul 2011
    Messaggi
    441
    Sono confuso: non mi viene stampato niente di niente adesso
    (IDS è l'id del post, entrambe le tabelle hanno questa colonna così da permettere il collegamento tra commento e relativo post)

    Codice PHP:
                            $sql "SELECT * FROM stato INNER JOIN commento ON stato.IDS = commento.IDS"
                
    $query mysql_query($sql);
                
    $nrw mysql_num_rows($query);                    
                                                            
                while (
    $nrw mysql_fetch_assoc($query)) {                
                                        
                    
    $text $nrw['TESTO'];
                    
    $quote =  $nrw['TESTO'];

                                    
    $var $text $quote";
                                    echo 
    $var;
                            } 

  6. #6
    direi intanto che non puoi utilizzare lo stesso nome ci campo TESTO perche' l'ultimo sovrascrive il primo nell'elenco dei campi.

    Quindi bisogna usare l'alias per almeno un campo TESTO. Poi la variabile $nrw contiene il numero delle righe trovate. Non devi usarla per scaricare il result set. Il result set richiamato da mysql_fetch_assoc() rende un array con tutti i campi delle due tabelle. Quindi array e non variabile che verra' sovrascritta.

    Codice PHP:
    $sql "SELECT IDS, stato.TESTO as testo1, commento.TESTO as testo2  
              FROM stato 
              INNER JOIN commento ON stato.IDS = commento.IDS"
    ;
     
                
    $query mysql_query($sql);
                
    $nrw mysql_num_rows($query);                    
                                                            
                while (
    $row mysql_fetch_assoc($query)) {                
                                        
                    
    $text $row['testo1'];
                    
    $quote =  $row['testo2'];

                                    
    $var $text $quote";
                                    echo 
    $var;
                            } 
    occhio che i nomi dei campi nel result set sono case sensitive e se sei in linux lo sono ovunque. Quindi STATO != stato != Stato

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it L'avatar di andbaz
    Registrato dal
    Jul 2011
    Messaggi
    441
    Credo di non aver capito, sono un po n00b,

    Mi da questi errori:

    codice:
    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\Program Files\EASYPHP\www\function.php on line 17
    
    Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\Program Files\EASYPHP\www\function.php on line 19
    Cmq ho cambiato la colonna della tabella commento che prima era nominata con il nome di TESTO, ora l'ho rinominata con il nome COMMENTO

    Codice PHP:
                            $sql "SELECT IDS, stato.TESTO AS TESTO, commento.COMMENTO AS COMMENTO FROM stato INNER JOIN commento ON stato.IDS = commento.IDS"
                
    $query mysql_query($sql);
                
    $nrw mysql_num_rows($query);                    
                                                            
                while (
    $nrw mysql_fetch_assoc($query)) {
                                    
                    
    $text $nrw['TESTO'];
                    
    $quote =  $nrw['COMMENTO'];

                                    
    $var $text $quote"
                                    echo 
    $var
                    
                           } 

  8. #8
    Originariamente inviato da andbaz
    Credo di non aver capito, sono un po n00b,
    Mi trovi d'accordo.

    Leggi meglio il mio ultimo post e lo script annesso e nota la differenza tra $nrw e $row ed il commento relativo.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    a questa riga aggiungi la stampa degli errori. Hai anche qualche problema nella query.

    Codice PHP:
    $query mysql_query($sql) or die(mysql_error()); 
    inizialmente avevi un campo IDC che si e' modificato in IDS

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it L'avatar di andbaz
    Registrato dal
    Jul 2011
    Messaggi
    441
    Ecco:

    codice:
    Column 'IDS' in field list is ambiguous
    Forse è meglio che le due tabelle te le mostri, forse è meglio.

    TABELLA stato
    IDS IDU NOME COGNOME TESTO DATE ORA

    TABELLA commento
    IDC IDS IDU NOME COGNOME COMMENTO DATE ORA

    IDU=ID DELL'UTENTE
    IDS=ID DEL POST
    IDC=ID DEL COMMENTO

    Riposto lo script, ci siamo quasi!
    Noterai che lo script risulta essere un po' più pieno di prima, prima lo avevo pulito un po', ora c'è tutto.

    E ora?

    Codice PHP:
                            $sql "SELECT IDS, stato.TESTO AS TESTO, commento.COMMENTO AS COMMENTO FROM stato INNER JOIN commento ON stato.IDS = commento.IDS"
                
    $query mysql_query($sql) or die (mysql_error());
                                                            
                while (
    $row mysql_fetch_assoc($query)) {
                    
                    
    $idsp $row['IDS'];
                    
    $idup $row['IDU'];
                    
    $nomp $row['NOME'];
                    
    $cogp $row['COGNOME'];                    
                    
    $text $row['TESTO'];
                    
    $quote =  $row['COMMENTO'];
                    
    $date $row['DATE'];
                    
    $time $row['ORA'];
                    
                                    
    $var $text $quote...E TUTTE LE ALTRE VARIABILI";  
                                    echo 
    $var

                            } 

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.