Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

Discussione: estrarre dati sql

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    271

    estrarre dati sql

    la mia tabella si chiama 'tvchannels' ed è fatta così:

    id - country - channel

    ed io voglio stampare la lista di tutti i paesi e relativi canali in questo modo:

    Paese 1
    - Canale 1
    - Canale 2
    Paese 2
    - Canale 1
    - Canale 2

    ho provato a fare così:

    codice:
    $connect = @mysql_connect($db_host,$db_user,$db_pass);
    $db = mysql_select_db($db_name,$connect);
    
    $query1 = "SELECT DISTINCT country FROM tvchannels WHERE country <> '' ORDER BY country";
    $result1 = mysql_query($query1) or die (mysql_error());
    while ($record1 = mysql_fetch_array($result1) ) { $records1[] = $record1; }
    
    foreach ($records1 as $rec){ 
       $query2 = "SELECT channel FROM tvchannels WHERE country='" . $rec['country'] . "' ORDER BY channel";
       $result2 = mysql_query($query2) or die (mysql_error());
       while ($record2 = mysql_fetch_array($result2) ) { $records2[] = $record2; }
       echo("".$rec['country']."
    
    ");
       foreach ($records2 as $rec2){
          echo(" - ".$rec2['channel']."
    ");
       }
    }
    ma in questo modo non funziona bene, cioè quando stampa i canali del Paese 2, stampa prima i canali già stampati del Paese 1 + quelli del Paese 2, il Paese 3 stampa i canali del Paese 1 + Paese 2 + quelli del Paese 3 e via dicendo... in pratica dovrei fare in modo che ogni volta l'array records2 venga ripulito... qualche idea su come farlo? :master:

  2. #2
    Puoi ottenere quello che ti serve con questo "algoritmo":

    Esegui una query di selezione di tutti i campi ordinata per country e per canale
    Esegui il ciclo di estrazione per tutti i record restituiti
    Se il country corrente è diverso da quello del record precedente, stampi "country"
    Se il country corrente è uguale a quello del record precedente, stampi "- channel"

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    271
    ti dispiace tradurre in codice questo "algoritmo" ? così posso provarlo...

  4. #4
    Originariamente inviato da dogo21sob
    ti dispiace tradurre in codice questo "algoritmo" ? così posso provarlo...
    Non c'è problema, a chi devo intestare la fattura?

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    271
    mamma mia che esagerazione!!! vieni a parlare di fattura per poche righe di codice?!! se non hai tempo o non hai voglia, ok... ma altrimenti se sai farlo lo fai in 3 minuti contati tu...
    io ci sto provando, ma non lo so fare quello che mi hai consigliato... altrimenti non ti chiedevo di scrivermi ste 2 righe di codice!!!

  6. #6
    Originariamente inviato da dogo21sob
    mamma mia che esagerazione!!! vieni a parlare di fattura per poche righe di codice?!! se non hai tempo o non hai voglia, ok... ma altrimenti se sai farlo lo fai in 3 minuti contati tu...
    io ci sto provando, ma non ottengo i risultati sperati...
    Dovresti cercare di comprendere che questo NON è un forum di supporto ne un bancomat del codice. Posta le prove che hai fatto e tieni presente che, se implementata correttamente, la soluzione suggerita restituisce esattamente ciò che ti serve.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    271
    ma quante polemiche!!! non lo so fare quello che hai detto tu di confrontare il country con quello del record precedente, non ho mai pensato che questo fosse un "bancomat del codice" come lo hai chiamato, infatti non mi sembra di aver preteso alcunchè da nessuno... io ho solo chiesto... sperando di poter risolvere rapidamente con una modifica al mio codice... ora tu mi hai dato un suggerimento, ed io non sono in grado di seguirlo, tu non hai voglia di scrivermi queste 2 righe? non farlo, ma non mi sembra che sto pretendendo nulla nè da te nè da nessun altro!!!

  8. #8
    Ma non avevi detto che ci stavi provando, ma non ottieni i risultati sperati?
    Perchè non posti questo prove che hai fatto?

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    271
    Originariamente inviato da filippo.toso
    Esegui una query di selezione di tutti i campi ordinata per country e per canale
    Esegui il ciclo di estrazione per tutti i record restituiti
    Se il country corrente è diverso da quello del record precedente, stampi "country"
    Se il country corrente è uguale a quello del record precedente, stampi "- channel"
    scusa ma che ti scrivo? ci stavo provando, ma delle cose che hai scritto solo le prime due so fare... per il confronto tra il country corrente ed il precedente non so proprio come farlo...

    quindi, ricapitolando, sto sempre qui:
    codice:
    $query1 = "SELECT * FROM tvchannels WHERE country <> '' ORDER BY country, channel";
    $result1 = mysql_query($query1) or die (mysql_error());
    while ($record1 = mysql_fetch_array($result1) ) { $records1[] = $record1; }
    
    foreach ($records1 as $rec){
    
    }

  10. #10
    Originariamente inviato da dogo21sob
    scusa ma che ti scrivo? ci stavo provando, ma delle cose che hai scritto solo le prime due so fare... per il confronto tra il country corrente ed il precedente non so proprio come farlo...

    quindi, ricapitolando, sto sempre qui:
    codice:
    $query1 = "SELECT * FROM tvchannels WHERE country <> '' ORDER BY country, channel";
    $result1 = mysql_query($query1) or die (mysql_error());
    while ($record1 = mysql_fetch_array($result1) ) { $records1[] = $record1; }
    
    foreach ($records1 as $rec){
    
    }
    Inserisci in una variabile il country corrente ed utilizzi tale valore nella successiva esecuzione del ciclo. Se provi a riprodurre il processo su carta, vedrai che è piuttosto immediato.

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.