Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Problema con file .xls con impaginamento tabella

    Ragazzi,
    sto scrivendo uno script che mi consenta di eseguire una query su una tabella e di crearmi un file .xls con i dati della query.
    Fin qui tutto bene, sono riuscito a far eseguire la query e a far creare un file .xls con quei dati.
    Solo che il mio problema ora sta nell'impaginazione di questi dati.
    Vi spiego meglio...
    Io eseguo una query che mi tira fuori tutte le linee telefoniche relative ad un dato contratto. Quindi può succedere che sul contratto x ci sono n linee telefoniche.
    Io vorrei che nel file .xls il risultato sia questo:

    CONTRATTO LINEA TELEFONICA
    X N1
    N2
    N3
    N4

    Invece il risultato che ottengo io è quest'altro...

    CONTRATTO LINEA TELEFONICA
    X N1 X N2 X N3

    Questo è il codice che ho scritto:

    <?php
    $connessione = mysql_connect("localhost","root","")or die("Connessione non riuscita: " . mysql_error());
    print ("");

    mysql_select_db("prova", $connessione) or die("Errore nella selezione del database");

    $contratto=$_GET['contratto'];
    $ragionesociale=$_GET['ragionesociale'];

    //genera il file "Dettaglio Linee"
    $linee="SELECT * FROM sts WHERE numcontratto=$contratto";
    $result = mysql_query($linee, $connessione) or die('Errore...');

    $numrows = mysql_num_rows($result);


    $filename = "$ragionesociale'_'$contratto'_dettaglio'.xls" ;
    header ("Content-Type: application/vnd.ms-excel");
    header ("Content-Disposition: inline; filename=$filename");



    ?>

    <table border=1>
    <thead>
    <td>Numero Contratto</td>
    <td>Linee</td>
    <td>Tipo Linea</td>
    <thead>
    <tr>
    <?php
    //Avvio un ciclo for che si ripete per il numero di occorrenze trovate
    for($x=0; $x<$numrows; $x++){
    //Recupero il contenuto di ogni record rovato
    $resrow = mysql_fetch_row($result);
    $numcontratto = $resrow[1];
    $numlinea = $resrow[2];
    $tipolinea = $resrow[3];


    //Stampo il risultato
    echo "<td>$numcontratto</td>";
    echo "<td>$numlinea</td>";
    echo "<td>$tipolinea</td>";
    }
    ?>
    </tr>
    </table>

    Qualcuno può aiutarmi?
    Grazie a tutti anticipatamente.

    JerryLeeLewis

  2. #2
    Ciao Jerry! Ho avuto un problema con excel pochi giorni fa ed ho incollato il codice, vedi se può esserti utile, lo trovi qui:
    http://forum.html.it/forum/showthrea...readid=1455877

  3. #3
    Ciao Jonathan,
    ti ringrazio per la tua segnalazione. Effettivamente adesso va meglio perchè nel file .xls mi compaiono le righe della tabella in ordine. Solo che i campi sono vuoti.
    Non vorrei che l'errore sta in un comando che credo l'utente che ha postato il codice che mi hai segnalato andava a pescare da un file che aveva incluso nello script.
    Mi riferisco a questa riga:

    usock();

    Sai cosa sia?

    Io in effetti l'ho eliminato dallo script ed il risultato è quello che ti ho illustrato sopra.
    Se invece lo inserisco mi ritorna un errore.

  4. #4
    Si quel codice è mio e usock() rappresenta la funzione per connettermi al database che si trova nel file incluso come puoi vedere nel codice:

    Codice PHP:
    include "../server.php"// includo il file di connessione al Db 
    è una semplice funzione:

    Codice PHP:
       function usock()
       {

          global 
    $hostdb$userdb$passdb$namedbuser;

          
    $connect mysql_connect($hostdb$userdb$passdb)
                        or die(
    "ERROR: errore di connessione al database");

          
    mysql_select_db($namedbuser$connect);

       } 
    visto che devo collegarmi molte volte al database per diverse ragioni preferisco richiamare ogni volta la funzione.

    le rabiabili host,user,pass e namedb le imposto all'inizio dello stesso file in questo modo:

    Codice PHP:


              $hostdb 
    "localhost";    // host del database mysql
              
    $userdb "root";        // username del database mysql
              
    $passdb "";    // password del database mysql

              
    $namedbuser  "nomedeldatabase"
    Così ogni volta per aprire la connessione al database richiamo semplicemente la funzione usock();

    Questo tanto per dire, per il resto se il tuo codice funziona e non da errori, ma non ti inserisce niente, prova a cambiare questa riga così:

    Codice PHP:
    $linee="SELECT * FROM sts WHERE numcontratto=$contratto";
    in
    $linee
    ="SELECT * FROM sts WHERE numcontratto = '$contratto'"
    e poi metti un echo per visualizzare la variabile contratto così ti accerti che effettivamente contiene qualcosa.

    Fammi sapere ciao!

  5. #5
    Ora funziona, grazie anche se non era quello l'errore.
    Era la sintassi delle echo che facevo nei campi della tabella che era sbagliata.
    Ora l'ho modificata cosi e funge: (vi riposto tutto lo script per chiarezza)

    <?php
    $connessione = mysql_connect("localhost","root","")or die("Connessione non riuscita: " . mysql_error());
    print ("");

    mysql_select_db("prova", $connessione) or die("Errore nella selezione del database");

    $contratto=$_GET['contratto'];
    $ragionesociale=$_GET['ragionesociale'];

    $filename = "$ragionesociale'_'$contratto'_dettaglio'.xls" ;
    header ("Content-Type: application/vnd.ms-excel");
    header ("Content-Disposition: inline; filename=$filename");

    ?>

    <!-- iniziamo a costruire la nostra tabella --/>

    <html><head><title>Export</title></head><body>

    <table border="1">
    <tr>

    <th>Contratto</th>
    <th>Linee</th>
    <th>Tipo Linea</th>

    </tr>

    <?php

    $sql="SELECT * FROM sts WHERE numcontratto=$contratto"; // selezioniamo i dati dalla nostra tabella
    $query=@mysql_query($sql) or die (mysql_error());

    while ($row=mysql_fetch_array($query)) // ed effettuiamo un ciclo per creare le righe della nostra tabella
    {

    $numcontratto = $row['numcontratto'];
    $numlinea = $row['numlinea'];
    $tipolinea = $row['tipolinea'];

    ?>
    <tr>
    <?php

    echo "<td>$numcontratto</td>";
    echo "<td>$numlinea</td>";
    echo "<td>$tipolinea</td>";
    }
    ?>
    </tr>
    </table>
    </body>
    </html>

    Cmq grazie mille per il tuo aiuto!
    Ciao e a presto.

    JerryLeeLewis

  6. #6
    figurati ciao!

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.