Visualizzazione dei risultati da 1 a 5 su 5

Discussione: doppio loop

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    6

    doppio loop

    salve ho un problema con un doppio loop in php di cui non riesco a trovare la logica per uscirne.

    Da una tabella in un database che non posso modificare devo tirare fuori una lista di eventi, nella medesima tabella ci sono gli articoli che si riferiscono ai singoli eventi.
    La differenza fra gli Eventi e gli Articoli è che gli Eventi hanno una casella LOGO segnata con SI.

    Io faccio 2 chiamate sql:

    $sql = "SELECT * FROM nuova WHERE logo!='si'";
    $sql1 = "SELECT * FROM nuova WHERE logo='si'";

    così ottengo 2 query, una degli eventi, una degli articoli.

    $result = mysql_query($sql);
    $result1 = mysql_query($sql1);

    Quando però devo andare a visualizzare gli eventi dovranno contenere per ogni evento in lista una sottolista di articoli riferiti agli eventi.

    while($row = mysql_fetch_assoc($result1)){

    // visualizzazione dei dati


    echo "$row["titolo"].";

    while($raw = mysql_fetch_assoc($result)){


    echo "$raw["titolo"].";


    }

    }

    facendo così però non ottengo quello che vorrei perchè mi fa la lista degli eventi e la lista degli articoli ma solo per il primo evento e poi non la ripete.. che devo fare ?

  2. #2
    credo che dovresti farti una tabella associativa in cui ad ogni articolo associ un evento tramite degli id:

    EVENTI - ARTICOLI
    1 - 1
    1 - 2
    1 - 3
    1 - 4
    2 - 5
    2 - 6
    2 - 7
    3 - 8
    3 - 9

    Una volta fatta questa cosa hai fatto il 90% del lavoro
    We are just...a moment...in time...

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    puoi fare in vari modi, ma per non allontanarsi dallo schema che hai già tieni conto che quando fai il fetch dei record sposti il puntatore in avanti e una volta giunto alla fine (nel primo loop interno) non riparti automaticamente da capo... potresti fare così:

    Codice PHP:
    $articoli = array(); while($row mysql_fetch_assoc($result)) $articoli[] = $row;
    $eventi = array(); while($row mysql_fetch_assoc($result1)) $eventi[] = $row
    e nei cicli "while" successivi cambiare quello esterno con:
    Codice PHP:
    foreach ($eventi as $row) { 
    e con:
    Codice PHP:
    foreach ($articoli as $raw) { 

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    6

    Manca Qualcosa..

    eiyen direi che è perfetto come l'hai fatto, infatti adesso funziona "quasi tutto" perchè purtroppo mi ha saltato il primo (solo il primo) articolo riferito al primo evento, hai idea del perchè? ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    mi pare difficile sia un problema della soluzione usata... le query sono esatte (fai un DUMP del risultato)?

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.