Visualizzazione dei risultati da 1 a 4 su 4

Discussione: query e ciclo while

  1. #1

    query e ciclo while

    ciao, vi espongo brevemente il problema se riesco a essere chiaro...

    facciamo un esempio:

    tabella "studi"

    id_studio auto_increment
    titolo_studio
    corpo_documento
    corpo_analisi
    titolo_approf

    tabella "approf"

    id_approf auto_increment
    id_studio
    approfondimento

    Adesso riempiamo i campi della tabella "studi" con il titolo, il testo etc.
    Nella tabella "approf" ci mettiamo del testo che riguarda degli approfondimenti.
    Ho creato la tabella "approf" perchè il numero di approfondimenti è variabile a seconda dell'articolo ( o studio ) inserito.

    creo la query per estrarre i dati dello studio e poi stamparli.
    codice:
    $query = "SELECT studi.*, approf.approfondimento FROM studi INNER JOIN approf ON studi.id_studio = approf.id_studio";
    in questa query metto in relazione l'id_studio della tabella "studi" con l'id_studio della tabella "approf" in modo che mi stampi anche il contenuto degli approfondimenti relativi a quello studio.

    e qui c'è il problema:

    non posso usare il ciclo while perchè altrimenti mi stampa il contenuto della tabella "studi" tante volte quanti sono gli approfondimenti contenuti nella tabella approf.....

    quindi io ho eseguito 2 query: una per estrarre solo i contenuti della tabella "studi" e una per stampare il contenuto della tabella "approf" usando il ciclo while.

    Domanda: come posso fare in modo di estrarre tutti dati con un unica query usando il while?

    perchè poi devo gestire la paginazione del testo ( altra bella rogna )

    grazie!

  2. #2
    potresti gestire la cosa nel ciclo while

    ex
    codice:
    $query = "SELECT studi.*, approf.approfondimento 
              FROM studi 
              INNER JOIN approf ON studi.id_studio = approf.id_studio";
    $result = mysql_query($query);
    $last_id = false;
    while($row = mysql_fetch_array($result)) {
         if($last_id != $row['id_studio']) {
              // stampa studio
              $last_id = $row['id_studio'];
         }
         // stampa eventuale approfondimento
    }
    E' la mia opinione ed io la condivido
    Non condivido la tua idea ma darei la vita perché tu la possa esprimere (Voltaire)
    Scrivi sul muro

  3. #3
    grazie mille per la risposta boomboom69

    in effetti stavo risolvendo la cosa così:

    codice:
    $query = "SELECT studi.*, approf.approfondimento FROM studi INNER JOIN approf ON studi.id_studio = approf.id_studio";
    
                     
    $select = mysql_query($query) or die(mysql_error());
    
    $ultimo_studio="";
    while($result = mysql_fetch_array($select))  {
        if ($result["titolo_studio"] != $ultimo_studio) {
    //stampo i dati relativi allo studio 
    
    }
    //stampo gli approfondimenti relativi a quel caso
    $ultimo_studio = $result["titolo_studio"];
    }
    dovrebbe essere praticamente la stessa cosa no?

  4. #4
    penso di sì anche se il ctrl sull'id (unico) sia più sicuro

    E' la mia opinione ed io la condivido
    Non condivido la tua idea ma darei la vita perché tu la possa esprimere (Voltaire)
    Scrivi sul muro

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.