+ Rispondi alla Discussione
Risultati da 1 a 14 di 14

creare una tabella tanti <td> quanti sono i record estratti

Ultimo Messaggio di No_Stress il:
  1. #1
    User Attivo
    Data Registrazione
    May 2006
    Località
    London
    Messaggi
    1,150

    creare una tabella tanti <td> quanti sono i record estratti

    Ciao a tutti

    vorrei creare dinamicamente una tabella sul sito con lo stesso contenuto che creo per i pdf, per esempio cosi': (spezzo il link senno' non me lo fa inserire)

    https ://ibb.co/CtmyGG3

    Ho 3 tabelle nel database mysql
    - tabella "calendario" dove estraggo id_data, data_partenza_calendario, citta_partenza e costo_volo
    - tabella "hotel" dove estraggo id_hotel e hotel
    - tabella "offerte" dove estraggo id_offerta, prezzo_hotel

    Nella prima riga orizzontale riesco ad estrarre le date ed il prezzo del volo
    Nella colonna verticale a sinistra riesco ad estrarre gli hotels

    Adesso ho il problema nel creare tanti <td> quante sono le date estratte e di inserirci il prezzo corretto all'interno.

    Questo è il codice che sto provando ad usare:
    Codice PHP:
    <table class="table table-striped">
      <thead>
        <tr>
          <th scope="col"></th>
    <?php
    //estraggo le date di partenza dal database DA ROMA
    $sql_calendario_roma "SELECT id_data, data_partenza_calendario, DATE_FORMAT(data_partenza_calendario, '%d/%m') AS data_partenza_calendario_ita, citta_partenza, costo_volo from calendario where 
    attiva=\"0\" and citta_partenza=\"1\" and data_partenza_calendario between \"2019-07-01\" and \"2019-07-31\" order by data_partenza_calendario"
    ;
    //echo"$sql_calendario_roma";
    $risultato_calendario_roma = @mysql_query($sql_calendario_roma) or die("Impossibile eseguire l'interrogazione calendario roma");
    $numero_date_roma mysql_num_rows($risultato_calendario_roma);
    //echo"date disponibili: $numero_date_roma";
    while ($riga_calendario_roma mysql_fetch_array($risultato_calendario_roma)) {
    $id_data $riga_calendario_roma['id_data'];
    $data_partenza_calendario $riga_calendario_roma['data_partenza_calendario'];
    $data_partenza_calendario_ita $riga_calendario_roma['data_partenza_calendario_ita'];
    $citta_partenza $riga_calendario_roma['citta_partenza'];
    $costo_volo $riga_calendario_roma['costo_volo'];



    $date_disponibili="<th scope=\"col\"><h3>$data_partenza_calendario_ita</h3>$costo_volo</th>";
    echo
    "$date_disponibili";
    }
    ?>
        </tr>
      </thead>
      <tbody>
    <?php
    $query_hotel
    ="select id_hotel, hotel from hotel where attivo=\"1\" order by hotel asc";
    $risultato_hotel=@mysql_query($query_hotel) or die(mysql_error());
    $numero_hotel mysql_num_rows($risultato_hotel);
    while (
    $riga_hotel mysql_fetch_array($risultato_hotel)) 
    {
    $id_hotel $riga_hotel['id_hotel'];
    $hotel $riga_hotel['hotel'];
    //al momento creo i <td> manualmente
    $elenco_hotel="
    <tr>
        <th>
    $hotel</th>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
    </tr>"
    ;
    echo
    "$elenco_hotel";
    }
    ?>
        
    <?php
    $query
    ="select offerte.id_offerta, DATE_FORMAT(offerte.valida_da, '%d/%m/%Y') AS valida_da_ita, DATE_FORMAT(offerte.valida_fino, '%d/%m/%Y') AS valida_fino_ita, offerte.prezzo_hotel, offerte.trattamento, offerte.id_albergo, offerte.operativo, hotel.id_hotel, hotel.hotel, hotel.stelle, hotel.directory, hotel.consigliato, hotel.family, hotel.lusso, hotel.mostra_scheda from offerte INNER JOIN hotel ON offerte.id_albergo = hotel.id_hotel where attivo=\"1\" and cancellata=\"0\" and \"$data_partenza_calendario+1\" between \"2019-07-01\" and \"2019-07-31\" order by hotel";
    ?>
      </tbody>
    </table>
    Come potrei ottenere lo stesso risultato dell'immagine?
    Grazie

  2. #2
    User
    Data Registrazione
    Nov 2018
    Località
    Ragusa
    Messaggi
    132
    Aggiungi flaviors200 su Google+ Aggiungi flaviors200 su Facebook Aggiungi flaviors200 su Linkedin
    Ciao,

    non capisco la difficoltà che hai nell'impaginare i dati.

    Il tag <tr> apre un riga, il tag </tr> la chiude. All'interno inserisci tanti <td></td> quanti sono i dati che vuoi stampare.

    Prendendo l'esempio del link pastebin.com/KBqxHyq6
    Sviluppo siti web per aziende e professionisti

  3. #3
    User Attivo
    Data Registrazione
    May 2006
    Località
    London
    Messaggi
    1,150
    ciao
    il problema è capire come estrarre in modo corretto tutti i dati e creare i <td></td> in modo dinamico perche' in questo esempio ho 4 date e quindi si creeranno 4 colonne, in altri periodi potrei avere anche 6-7 date e quindi dovrei creare altrettante colonne

  4. #4
    User
    Data Registrazione
    Nov 2018
    Località
    Ragusa
    Messaggi
    132
    Aggiungi flaviors200 su Google+ Aggiungi flaviors200 su Facebook Aggiungi flaviors200 su Linkedin
    Quindi il problema tuo è la query MySQL, non il codice PHP?
    Sviluppo siti web per aziende e professionisti

  5. #5
    User Attivo
    Data Registrazione
    May 2006
    Località
    London
    Messaggi
    1,150
    entrambi, devo capire bene come fare la query per poi mostrare tutto nelle celle corrette

  6. #6
    User
    Data Registrazione
    Nov 2018
    Località
    Ragusa
    Messaggi
    132
    Aggiungi flaviors200 su Google+ Aggiungi flaviors200 su Facebook Aggiungi flaviors200 su Linkedin
    Se ho capito bene hai X hotel, di cui vuoi stampare i prezzi in ciascuna riga della tabella.

    Ti conviene estrarre gli hotel, quindi fai un foreach dove ad ogni ciclo fai una query per estrarre i prezzi di ogni hotel estratto, infine li stampi.

    Il codice in basso è giusto per rendere l'idea

    Codice PHP:
    $hotels query("SELECT id FROM hotels");

    foreach (
    $hotels as $hotel) {
        
    $prezzi query("SELECT prezzo FROM prezzi WHERE id_hotel = $hotel['id']");

        if (
    $prezzi) {
            echo 
    "
                <tr>
                    <td>
    $prezzi['prezzo1']</td>
                    <td>
    $prezzi['prezzo2']</td>
                    <td>
    $prezzi['prezzo3']</td>
                <tr>"
    ;
        }

    Sviluppo siti web per aziende e professionisti

  7. #7
    User Attivo
    Data Registrazione
    May 2006
    Località
    London
    Messaggi
    1,150
    ciao
    non ho capito cosa fai in if($prezzi) alla riga 4, nel mio caso a cosa servirebbe? il resto forse l'ho capito

  8. #8
    User
    Data Registrazione
    Nov 2018
    Località
    Ragusa
    Messaggi
    132
    Aggiungi flaviors200 su Google+ Aggiungi flaviors200 su Facebook Aggiungi flaviors200 su Linkedin
    Ciao,

    ho scritto un pò di codice maccheronico (vedi le query)

    Nella condizione verifico che ci siano prezzi da stampare, potresti utilizzare la funzione count() che conta gli elementi di un array. Se è maggiore di zero stampa i prezzi, altrimenti non stampa nulla.

    Le query sono ovviamente esempi, non so come hai disegnato le tabelle in MySQL.
    Sviluppo siti web per aziende e professionisti

  9. #9
    User Attivo
    Data Registrazione
    May 2006
    Località
    London
    Messaggi
    1,150
    ma quindi devo obbligatoriamente mettere i risultati della query in un array?

    Perche' sto provando qualcosa del genere ma mi da errore "Warning: Invalid argument supplied for foreach() "
    Codice PHP:
    <!--inizio tabella offerte-->
    <table class="table table-striped">
      <thead>
        <tr>
          <th></th>
    <?php
    //estraggo le date di partenza dal database DA ROMA
    $sql_calendario_roma "SELECT id_data, data_partenza_calendario, DATE_FORMAT(data_partenza_calendario, '%d/%m') AS data_partenza_calendario_ita, citta_partenza, costo_volo from calendario where 
    attiva=\"0\" and citta_partenza=\"1\" and data_partenza_calendario between \"2019-07-01\" and \"2019-07-31\" order by data_partenza_calendario"
    ;
    echo
    "$sql_calendario_roma";
    $risultato_calendario_roma = @mysql_query($sql_calendario_roma) or die("Impossibile eseguire l'interrogazione calendario roma");
    $numero_date_roma mysql_num_rows($risultato_calendario_roma);
    //echo"date disponibili: $numero_date_roma";
    while ($riga_calendario_roma mysql_fetch_array($risultato_calendario_roma)) {
    $id_data $riga_calendario_roma['id_data'];
    $data_partenza_calendario $riga_calendario_roma['data_partenza_calendario'];
    $data_partenza_calendario_ita $riga_calendario_roma['data_partenza_calendario_ita'];
    $citta_partenza $riga_calendario_roma['citta_partenza'];
    $costo_volo $riga_calendario_roma['costo_volo'];


    $date_disponibili="<th><h3>$data_partenza_calendario_ita</h3>$costo_volo</th>";

    echo
    "$date_disponibili";
    }

    ?>
        </tr>
      </thead>
      <tbody>
    <?php
    $hotels
    ="select id_hotel, hotel from hotel where attivo=\"1\" order by hotel asc";
    $risultato_hotels=@mysql_query($hotels) or die(mysql_error());
    $numero_hotels mysql_num_rows($risultato_hotels);
    while (
    $riga_hotels mysql_fetch_array($risultato_hotels)) 
    {
    $id_hotel $riga_hotels['id_hotel'];
    $hotel $riga_hotels['hotel'];



    }

    foreach(
    $hotels as $hotel)
    {
    $prezzi="select id_offerta, DATE_FORMAT(valida_da, '%d/%m/%Y') AS valida_da_ita, DATE_FORMAT(valida_fino, '%d/%m/%Y') AS valida_fino_ita, prezzo_hotel, trattamento, id_albergo from offerte where id_albergo=\"$id_hotel\" and cancellata=\"0\" and \"$data_partenza_calendario\" between \"2019-07-01\" and \"2019-07-31\"";
    }
    ?>
        

      </tbody>
    </table>
    <!--fine tabella offerte-->

  10. #10
    User
    Data Registrazione
    Nov 2018
    Località
    Ragusa
    Messaggi
    132
    Aggiungi flaviors200 su Google+ Aggiungi flaviors200 su Facebook Aggiungi flaviors200 su Linkedin
    Non è obbligatorio, è comodo nel caso avessi una funzione (possibilmente in un file separato) che ti restituisce i risultati della query, ma tu hai messo tutto quanto dentro lo stesso file.

    Ti consiglio di separare la parte che accede al database (logica di business), da quella che visualizza i dati (logica di presentazione). Ne gioverebbe molto la leggibilità del programma e la correzione di eventuali bug/errori.
    Sviluppo siti web per aziende e professionisti

  11. #11
    User Attivo
    Data Registrazione
    May 2006
    Località
    London
    Messaggi
    1,150
    mi sono arenato da giorni, non riesco proprio ad andare avanti.

    In pratica ho:
    la tabella "citta" da dove estraggo l'aeroporto di partenza ed i prezzi per le 4 partenze del mese di luglio per esempio (4, 11, 18, 25 luglio)
    la tabella "hotel" da dove estraggo il nome di tutti gli hotel (per esempio hotel 1, hotel, 2, hotel 3 ecc)
    la tabella "offerte" da dove estraggo i prezzi di ogni hotel
    Nella tabella offerte inserisco le date e i prezzi in 3 campi che si chiamano "valida_da", "valida_fino", "prezzo_hotel"
    in pratica posso inserire un'offerta valida dal 5 maggio al 31 luglio di 300 euro, vuol dire che in quel lasso di tempo l'hotel costa 300 euro quindi rientra perfettamente nel range delle date selezionate prima per il mese di luglio (4, 11, 18, 25)
    Alla fine sommo i 300 euro dell'hotel con il prezzo del volo impostato in quel giorno, per esempio 250 euro e mostro l'offerta
    Ora non riesco in nessun modo a mostrare questi prezzi, sicuramente sbaglio qualcosa ma non so dove.

    Al momento sono arrivato qua, per caso riesci a capire dove sbaglio o cosa manca?

    Codice PHP:
    <!--inizio tabella offerte-->
    <table class="table table-striped">
      <thead>
        <tr>
          <th>vuoto</th>
    <?php
    //estraggo le date di partenza dal database DA ROMA
    $sql_calendario_roma "SELECT id_data, data_partenza_calendario, DATE_FORMAT(data_partenza_calendario, '%d/%m') AS data_partenza_calendario_ita, citta_partenza, costo_volo from calendario where 
    attiva=\"0\" and citta_partenza=\"1\" and data_partenza_calendario between \"2019-07-01\" and \"2019-07-31\" order by data_partenza_calendario"
    ;
    //echo"$sql_calendario_roma";
    $risultato_calendario_roma = @mysql_query($sql_calendario_roma) or die("Impossibile eseguire l'interrogazione calendario roma");
    $numero_date_roma mysql_num_rows($risultato_calendario_roma);
    //echo"date disponibili: $numero_date_roma";
    while ($riga_calendario_roma mysql_fetch_array($risultato_calendario_roma)) {
    $id_data $riga_calendario_roma['id_data'];
    $data_partenza_calendario $riga_calendario_roma['data_partenza_calendario'];
    $data_partenza_calendario_ita $riga_calendario_roma['data_partenza_calendario_ita'];
    $citta_partenza $riga_calendario_roma['citta_partenza'];
    $costo_volo $riga_calendario_roma['costo_volo'];
    $date_disponibili="        <th scope=\"col\"><h3>$data_partenza_calendario_ita</h3>$costo_volo</th>";

    ?>
      
    <?php
    $query
    ="select 
    offerte.id_offerta, DATE_FORMAT(offerte.valida_da, '%d/%m/%Y') AS valida_da_ita, DATE_FORMAT(offerte.valida_fino, '%d/%m/%Y') AS valida_fino_ita, offerte.prezzo_hotel, offerte.id_albergo, 
    hotel.id_hotel, hotel.hotel, hotel.stelle, hotel.attivo
    from offerte INNER JOIN hotel ON offerte.id_albergo = hotel.id_hotel where attivo=\"1\" and cancellata=\"0\" and \"
    $riga_calendario_roma[data_partenza_calendario]\" 
    between \"2019-07-01\" and \"2019-07-31\" group by hotel"
    ;
    $risultato = @mysql_query($query) or die(mysql_error());
    $numero_offerte mysql_num_rows($risultato);
    //echo"$numero_offerte";
    //echo"$query<br><br>";
    echo"$date_disponibili";
    }

    echo
    "</tr>";
    echo
    "</thead>
            <tbody>
            <tr>\n"
    ;
    while (
    $riga mysql_fetch_array($risultato)) {
    $id_albergo=$riga['id_albergo'];
    $hotel=$riga['hotel'];
    $prezzo_hotel=$riga['prezzo_hotel'];
    $prezzo_pacchetto=$prezzo_hotel+10;

    echo
    "<th scope=\"row\">$hotel</th><td>$prezzo_pacchetto</td></tr>\n";
    }
    echo
    "</tr>";
    ?>

      </tbody>
    </table>
    <!--fine tabella offerte-->

  12. #12
    User
    Data Registrazione
    Nov 2018
    Località
    Ragusa
    Messaggi
    132
    Aggiungi flaviors200 su Google+ Aggiungi flaviors200 su Facebook Aggiungi flaviors200 su Linkedin
    Fai una cosa, posta l'output del tuo script.

    Probabilmente fai confusione con la formattazione della tabella.
    Sviluppo siti web per aziende e professionisti

  13. #13
    User Attivo
    Data Registrazione
    May 2006
    Località
    London
    Messaggi
    1,150
    la formattazione forse è corretta, ma lanciando la query direttamente in phpmyadmin non mi tira fuori alcun risultato ed è strano

    devo mostrare le offerte valide (valida_da) che stanno tra 1 e 31 luglio

    e sto usando questa query:
    Codice PHP:
    select id_offertavalida_daprezzo_hotelid_albergo from offerte where id_albergo="7" and 'valida_da' BETWEEN 2019-07-01 and 2019-07-31 
    Sto provando con gli apici, le virgolette, senza niente, ma non mostra alcun risultato... e ne dovrebbe tirare fuori almeno 1

    AGGIORNAMENTO
    sto sbagliando la query perche' mi sono accorto che per l'hotel con id 7 ho messo l'offerta valida dal 25 aprile al 4 agosto ed in questo modo non la mostrerebbe perche' il 25 aprile non è tra 1 e 31 luglio... pero' non capisco come mostrare le offerte che rientrano in quel range di date
    Ultima modifica di No_Stress; 10-05-19 alle 21:31

  14. #14
    User Attivo
    Data Registrazione
    May 2006
    Località
    London
    Messaggi
    1,150
    rieccomi
    ci sono quasi, le offerte le tiro fuori correttamente, solo che ho il problema che mi tira fuori gli hotel per ogni data
    Mostro l'esempio pratico spezzando il link: (non far caso alla pagina che si chiama giugno e poi mostro luglio, poi correggo)

    https ://bit.ly/2JufpXT


    Credo che sbaglio l'inserimento di qualche parentesi graffa:
    Codice PHP:
    <!--inizio tabella offerte-->
    <table class="table table-striped">
      <thead>
        <tr>
         
    <?php
    //estraggo le date di partenza dal database DA ROMA
    $sql_calendario_roma "SELECT id_data, data_partenza_calendario, DATE_FORMAT(data_partenza_calendario, '%d/%m') AS data_partenza_calendario_ita, citta_partenza, costo_volo from calendario where 
    attiva=\"0\" and citta_partenza=\"1\" and data_partenza_calendario between \"2019-07-01\" and \"2019-07-31\" order by data_partenza_calendario"
    ;
    //echo"$sql_calendario_roma";
    $risultato_calendario_roma = @mysql_query($sql_calendario_roma) or die("Impossibile eseguire l'interrogazione calendario roma");
    $numero_date_roma mysql_num_rows($risultato_calendario_roma);
    //echo"date disponibili: $numero_date_roma";
    while ($riga_calendario_roma mysql_fetch_array($risultato_calendario_roma)) {
    $id_data $riga_calendario_roma['id_data'];
    $data_partenza_calendario $riga_calendario_roma['data_partenza_calendario'];
    $data_partenza_calendario_ita $riga_calendario_roma['data_partenza_calendario_ita'];
    $citta_partenza $riga_calendario_roma['citta_partenza'];
    $costo_volo $riga_calendario_roma['costo_volo'];
    $date_disponibili="      <th scope=\"col\"><h3>$data_partenza_calendario_ita</h3></th>\n";


    $query_hotel="select  
    id_hotel, hotel, stelle, attivo
    from hotel where attivo=\"1\""
    ;
    $risultato_hotel = @mysql_query($query_hotel) or die(mysql_error());
    //echo"$query<br><br>";
    echo"$date_disponibili";

    echo
    "    </tr>\n";
    echo
    "</thead>\n";
    echo
    " <tbody>\n";
    //echo"    <tr>\n";

    while ($riga mysql_fetch_array($risultato_hotel)) {
    $id_hotel=$riga['id_hotel'];
    $hotel=$riga['hotel'];

    $query_offerte="select id_offerta, valida_da, prezzo_hotel, id_albergo 
    from offerte where id_albergo=\"
    $id_hotel\" and \"$data_partenza_calendario\" BETWEEN valida_da and valida_fino and valida_fino >=CURDATE()";
    $risultato_offerte = @mysql_query($query_offerte) or die(mysql_error());
    $numero_offerte mysql_num_rows($risultato_offerte);
    //echo"$query_offerte<br><br>";
    while ($riga_offerte mysql_fetch_array($risultato_offerte)) {
    $id_offerta $riga_offerte['id_offerta'];
    $valida_da $riga_offerte['valida_da'];
    $prezzo_hotel $riga_offerte['prezzo_hotel'];
    $id_albergo $riga_offerte['id_albergo'];
    //echo"prezzo hotel: $prezzo_hotel<br><br>";
    $prezzo_offerta=$prezzo_hotel+$costo_volo+5+5;
    $commissione=$prezzo_offerta/100*18;
    $prezzo_offerta_vendita=round($prezzo_offerta+$commissione);
    //$prezzo_offerta="<td>$prezzo_hotel</td>";
    }


    echo
    "<tr><th scope=\"row\">$hotel</th><td>$prezzo_offerta_vendita</td></tr>\n";
    }
    }
    ?>   
      </tbody>
    </table>
    <!--fine tabella offerte-->

+ Rispondi alla Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.