Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875

    non conta dove il valore è zero

    Come nell'altro post, ho la necessità di contare le offerte per una determinata destinazione.
    attualmente nel db, nella tabella delle destinazioni ho inserito 4 destinazioni, ma solo per 2 di esse ci sono delle offerte.

    Io vorrei visualizzare qualcosa tipo:
    milano - 0
    napoli - 1
    firenze - 1
    roma - 0

    mentre attualmente visualizzo solo
    napoli - 1
    firenze - 1

    cosa dovrei modificare??

    Codice PHP:
    $sql_numero "SELECT count(id_pacchetto) as count, destinazione FROM tour_operator_pacchetti group by destinazione";
    $risultato_numero mysql_query($sql_numero) or die("Impossibile eseguire l'interrogazione destinazione $sql_numero: " .mysql_error());  

    while (
    $riga_numero mysql_fetch_array($risultato_numero)) {
    $id_pacchetto $riga_numero['id_pacchetto'];
    $destinazione2 $riga_numero['destinazione'];
    $count $riga_numero['count'];


    $sql_localita="select * from tour_operator_destinazioni where id_destinazione=\"$destinazione2\"";
    $risultato_localita = @mysql_query($sql_localita) or die("Impossibile eseguire l'interrogazione localita");
    while (
    $riga_localita mysql_fetch_array($risultato_localita)) {
    $id_destinazione $riga_localita['id_destinazione'];
    $destinazione ucwords($riga_localita['destinazione']);

    //$numero_offerte = conta_offerte($connessione, $db, $id_hotel);
    //$class=$numero_offerte==0?"redbold":"verdepiccolobold";
    $lista_hotel .= "<tr><td width=100%><span class=grigio><a href=offerte.php?id_destinazione=$id_destinazione>$destinazione</a></span> - <span class='$class'>$count offerte</span></td></tr>";
    }


  2. #2
    Puoi inserire la struttura delle tabelle utilizzate?

    Qual è la query che restituisce il numero che t'interessa?


  3. #3
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    la tabella tour_operator_pacchetti e' composta da:
    id_pacchetto (numero progressivo)
    id_hotel (l'hotel a cui e' associato il pacchetto)
    data (data di inizio vacanza)
    aeroporto (aeroporto di partenza)
    destinazione (la meta della vacanza dove ci finisce l'id_destinazione della tabella tour_operator_destinazioni)
    e altri campi che non servono a questa query

    la tabella tour_operator_destinazioni è composta da:
    id_destinazione (numero progressivo)
    destinazione (nome della destinazione in lettere)


    Attualmente ho riempito la tabella destinazioni con 4 mete
    nei pacchetti ho inserito 2 pacchetti e sto creando una pagina dove voglio visualizzare tutte le destinazioni che ci sono e tra parentesi inserire il numero di offerte presenti per ogni destinazione.

    Con il codice postato pero' riesco a vedere solo le mete che hanno almeno un'offerta, mentre devo visualizzare anche quelle che non ne hanno...

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    beh, devi fare il count sulla tabella dove ci sono tutte le destinazioni: se lo fai sulla tabella dove ci sono i pacchetti, le località non contemplate nelle offerte non ci saranno

    edit:
    provo a spiegarmi meglio: credo che tu debba usare una query più complessa che unisca le due tabelle, in modo da avere tutti i record destinazione ed il count delle relative offerte

  5. #5
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    Originariamente inviato da clasku
    beh, devi fare il count sulla tabella dove ci sono tutte le destinazioni: se lo fai sulla tabella dove ci sono i pacchetti, le località non contemplate nelle offerte non ci saranno

    edit:
    provo a spiegarmi meglio: credo che tu debba usare una query più complessa che unisca le due tabelle, in modo da avere tutti i record destinazione ed il count delle relative offerte
    pensavo fosse simile a quell'altra che mi hai corretto nell'altro post... infatti in parte l'ho copiata...

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    ti posto un esempio della query che devi usare
    codice:
    SELECT LOC.destinazione, COUNT(HOT.id_pacchetto) AS conteggio 
    FROM tour_operator_destinazioni AS LOC 
    LEFT JOIN tour_operator_pacchetti AS HOT 
    ON LOC.id_destinazione = HOT.destinazione 
    GROUP BY LOC.id_destinazione
    non so se i nomi dei campi siano corretti... prova un po'

  7. #7
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    si i campi sono corretti, ma poi il while devo farlo o no?

  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    guarda che il codice php rimane più o meno uguale a quello di prima, cambia la query

    Codice PHP:

    $sql 
    "select LOC.localita, LOC.id_localita, count(HOT.id_hotel) as count from tour_operator_localita as LOC LEFT JOIN tour_operator_hotel as HOT ON LOC.id_localita = HOT.id_ext_localita GROUP BY LOC.id_localita order by LOC.localita ASC";

    $risultato mysql_query($sql) or die("Impossibile eseguire l'interrogazione hotel $sql: " .mysql_error()); 

    $lista_hotel "<table>";

    $righe mysql_num_rows($risultato); 
    while (
    $riga mysql_fetch_array($risultato)) { 
        
    $id_destinazione $riga['id_localita']; 
        
    $destinazione $riga['localita']; 
        
    $count $riga['count'];

        
    //$lista_hotel .= "<tr><td width=100%><span class=grigio><a href=#>$localita</a></span> - <span class=''> $count</span></td></tr>";
        
    $lista_hotel .= "<tr><td width=100%><span class='grigio'><a href=offerte.php?id_destinazione=$id_destinazione>$destinazione</a></span> - <span class='class'>$count offerte</span></td></tr>"
    }

    $lista_hotel .= "</table>";

    echo 
    $lista_hotel
    qui i nomi dei campi potrebbero essere diversi, adeguali con i tuoi

  9. #9
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    ecco si, ora funziona... anche se quella query non la capisco
    grazie di nuovo

  10. #10
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    la query fa questo:
    - prende i dati dalla tabella destinazioni
    - verifica se esiste una corrispondenza con i pacchetti tramite il campo in comune tra le tabelle
    - esegue il conteggio sulla tabella dei pacchetti

    la clausola LEFT JOIN serve a recuperare sempre tutti i dati della tabella di sinistra (destinazioni in questo caso) anche se non dovessero esistere corrispondenze con l'altra tabella unita.

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.