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

    Pagina per stampare contenuti tabella generica

    Ciao a tutti, ho fatto una ricerca sul forum, ma forse per la prima volta in vita mia non ho trovato la soluzione al mio problema...
    Il problema è il seguente:

    ho una serie di tabelle con numero e nome dei campi variabile, devo fare delle pagine per mandare a video il contenuto di tali tabelle, ma per complicarmi la vita volevo evitare di fare una pagina per ogni tabella e mi sono intestardito a fare una pagina unica.

    Ragionando come array, pensavo che sarebbe stato facile prima di scorrere il recorset, scorrere le chiavi dell'array per poter compilare la prima riga della tabella html... ma mi sono già arenato...

    Codice PHP:
    <?
    $SQLquery 
    "select * from ".$_GET['op']." where anno = ".$_SESSION['anno'].";";     
    $rsOp mysql_query($SQLquery);         
    $num mysql_num_rows($rsOp);
    if (
    $num 0){
    while (
    $colonna key(mysql_fetch_array($rsOp))) { 
    ?>
    <td><? echo $colonna ?></td>
    <?
    next
    ($colonna);
    }
    ?>
    La sintassi l'ho un pò inventata, non escludo nemmeno di esseer completamente fuori strada e che non sia la funzione key quella che mi serve...
    Se mi risolvete il problema vi offro una birra virtuale!!

  2. #2

    Re: Pagina per stampare contenuti tabella generica

    Potrei scriveti direttamente il codice php con la soluzione del problema e per me sarebbe più veloce, ma sono convinto che proverai più sodisfazione a farlo con le tue mani. Quindi scriverò le funzioni di cui hai bisogno:

    1 - mysql_query : invia una consulta.

    2 - mysql_num_rows : ritorna il numero di righe(records) del risultato.

    3 - mysql_fetch_array: mette la riga(record) del risultato in una matrice(array). Attenzione, la riga dove stà il puntatore.

    4 - mysql_data_seek : muove il puntatore alla riga desiderata.
    Ora la procedura e semplice, fai la query, ottieni il numero di records del risultato, con questo numero potrai creare un ciclo(io l'ho fatto con un ciclo while) da 0(zero) a quel numero meno uno ($numRighe - 1) e con la variabile di controllo del ciclo potrai posizionare il puntatore in ogni riga sucessiva. Io al tuo posto non lo farei per creare una tabella ma per mettere tutto il risultato della query in una matrice(Array), quindi farei una funzione da usare in qualunque momento, cioè, tu passi alla funzione una query e lei ti ritorna una matrice(Array).
    Per creare una tabella appartire da un Array bisogna ricordare che <tr> sono le righe e <td> le colonne, quindi potresti fare cosí:

    <?
    /* facciamo un esempio di Array bidimenzionale e vediamo come metterlo in una tabella */

    $Array[0][0] = "a" ;
    $Array[0][1] = "b" ;
    $Array[0][2] = "c" ;
    $Array[0][3] = "d" ;

    $Array[1][0] = "e" ;
    $Array[1][1] = "f" ;
    $Array[1][2] = "g" ;
    $Array[1][3] = "h" ;

    $tabella = "<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"0\" bgcolor=\"#999999\">" ;

    foreach ( $Array as $idx => $values )
    {
    $brCamp = "" ;
    $brVal = "" ;

    $tabella .= "<tr> \n" ;

    foreach ( $values as $keys => $vals )
    {
    $brCamp .= ( $idx == 0 ) ? "<td align=\"center\">$keys</td> \n" : "" ;
    $brVal .= "<td align=\"center\" bgcolor=\"#FFFFFF\">$vals</td> \n" ;
    }

    $brCamp = ( !empty($brCamp) ) ? $brCamp."</tr> \n<tr> \n" : "" ;
    $tabella .= $brCamp.$brVal."</tr> \n" ;
    }

    $tabella .= "</table>" ;

    echo $tabella ;
    ?>
    Copia e incolla questo codice e vedi come va.
    Webmaster sitoesitiweb.it

  3. #3
    Sappi che per un attimo ti ho odiato... ma alla fine mi hai dato una dritta fondamentale!

    Quello che mi fregava era la struttura della risultanza del mysql_fetch_array, così ho seguito il tuo consiglio ed ho travasato il recordset in una matrice utilizzando una funzione che ho trovato casualmente:

    Codice PHP:
    for($i 0$array[$i] = mysql_fetch_assoc($rsOp); $i++) ; 
    array_pop($array); 
    A questo punto posso crearmi una funzione ad hoc per esplodere l'array in una tabella html prendendo come spunto il codice che mi hai gentilmente inviato.

    Grazie amico, ti devo una birra!!

  4. #4

    Re: Pagina per stampare contenuti tabella generica

    E hora che ti dirò questo mi odierai ancora per un attimo. mysql_fetch_assoc è la stessa cosa che mysql_fetch_array, solo che mysql_fetch_array è più generica, cioè ti permette di metere il record sia in una matrice associata che in una matrice numerica che entrambe, guarda i tre esempi:

    metti caso che questo è una tabella:

    nome | eta | sesso
    ==============
    peppe | 32 | m


    1- con mysql_fetch_array($result, MYSQL_ASSOC) esattamente uguale a mysql_fetch_assoc($result), il tuo risultato sarebbe:

    ["nome"] = "peppe" ;
    ["eta"] = "32" ;
    ["sesso"] = "m" ;

    2 - con mysql_fetch_array($result, MYSQL_NUM) il risultato sarebbe:

    [0] = "peppe" ;
    [1] = "32" ;
    [2] = "m" ;

    3 - e con mysql_fetch_array($result) o mysql_fetch_array($result,MYSQL_BOTH) il risultato sarebbe:

    ["nome"] = "peppe" ;
    [0] = "peppe" ;
    ["eta"] = "32" ;
    [1] = "32" ;
    ["sesso"] = "m" ;
    [2] = "m" ;

    Ed è questo l'attimo in quì mi odierai, io non avevo capito che t'imbrogliavi perchè usavi mysql_fetch_array in modo MYSQL_BOTH, cioè senza specificare il modo che è la stessa cosa. Nel modo MYSQL_BOTH il risultato è una matrice con i valori ripetuti, una volta con il nome del campo e l'altra con l'indice del campo. Comunque la birra l'ai gia offerta.
    Webmaster sitoesitiweb.it

  5. #5
    E invece adesso ti amo un pò di più, perchè per capire che il problema era sul mysql_fetch_array ho fatto un var_dump dello stesso, quando ho visto che mi veniva fuori proprio un array coi valori ripetuti, ho cercato un modo per far venir fuori un array "normale" e poter usare la funzione key().
    Col tuo ultimo post mi hai svelato un mondo che non conoscevo, cioè il fatto che essitesse un altro parametro per mysql_fetch_array... mea culpa, ma sai com'è, la prima cosa che si impara in php è a scorrere un recordset... e quando si sta imparando la prima cosa, spesso non si perde tempo ad approfondire ogni singola funzione )

    In ogni caso grazie ancora, mi sei stato utilissimo!

  6. #6

    Prego

    Prego, è per questo che siamo quì.
    Webmaster sitoesitiweb.it

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.