Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Aiuto su query

  1. #1

    Aiuto su query

    Salve a tutti,
    chi potrebbe consigliarmi per risolvere questo piccolo problema?
    Ho 2 tabelle:
    news -> campi: id, titolo, testo
    commenti -> id, id_news, commento

    In visualizzazione vorrei ottenere quanto segue:
    titolo news 1
    testo news 1
    commento 1, commento 2, etc. (insomma, tutti i commenti legati a quella news)


    Faccio la query:
    $query = "SELECT * FROM commenti LEFT JOIN news ON commenti.id_news=news.id";
    $esegui = mysql_query($query, $db);
    while ($result = mysql_fetch_array($esegui)) {
    echo"
    $result[titolo]

    $result[testo]

    $result[commento]


    ";
    }

    ma così ottengo:
    titolo news 1
    testo news 1
    commento 1

    titolo news 1
    testo news 1
    commento 2 etc.

    Chi mi sa dare una dritta per non far ripetere più di una volta i campi della prima tabella ma solamente tutti i campi della seconda legati a un singolo record della prima?

    Grazie anticipatamente.

  2. #2
    La cosa migliore e' sempre separare il codice dalla presentazione dei dati.

    Codice PHP:
    <?php
    $query     
    "SELECT * FROM commenti LEFT JOIN news ON commenti.id_news = news.id";
    $esegui    mysql_query($query$db);
    $risultati = array()

    while (
    $result mysql_fetch_array($esegui)) {
        
    $risultati[$result['id']]['titolo']     = $result['titolo'];
        
    $risultati[$result['id']]['testo']      = $result['testo'];
        
    $risultati[$result['id']]['commenti'][] = $result['commento'];
    }
    ?>

    <ul>
    <?php foreach ( $risultati as $articolo ): ?>
        [*]
        <h1><?php echo $articolo['titolo']; ?></h1>
        

    <?php echo $articolo['testo'];  ?></p>
        <ul>
        <?php foreach ( $articolo['commenti'] as $commento ): ?>
            [*]<?php echo $commento?>
        <?php endforeach; ?>
        [/list]
        
    <?php endforeach; ?>[/list]
    in questo modo prima ti crei un array che contiene tutte le informazioni, e poi le stampi.
    Disclaimer: codice scritto al volo e non testato

  3. #3
    Grazie infinite!!! ...era proprio quello che mi serviva e che non riuscivo a far funzionare!

  4. #4
    L'unico problema, ora, è che con questo tipo di query non visualizzo una "news" se questa non ha almeno un "commento" associato...
    Si può ovviare in qualche modo al problema?
    Grazie a chi mi saprà consigliare...

  5. #5
    Devi invertire la JOIN.

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.