Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    181

    [php] creare tabella con numero di colonne variabile in funzione di una selezione

    ciao a tutti ho realizzato una pagina di ricerca in php per effetturare una selezione su un db. L'utente tramite dei radiobbutton puoi selezionare quali campi (colonne) della tabella del db visualizzare. Tutto ok per la query ma ora non so come fare per far si che nella tabella dove vengono visualizzati i risultati siano presenti tante colonne quanti sono i campi selezionati dal radiobutton.

    es nella pagina di ricerca l'utente seleziona id, tesi, produzione nella pagina dei risultati dovrà apparire una tabella con tre colonne id, tesi e produzione. come si può fare?
    ciao e grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    181
    ciao a tutti qualcuno mi può aiutare a modificare questo script che non funziona?
    vi spiego praticamente io ho realizzato un pagina per effettuare una ricerca su un database. con dei radiobutton seleziono le colonne che voglio visualizzare con i risultati della ricerca. i radiobutton di chiamano colonna_nome tabella del database es colonna_pa colonna_coltura ecc
    con questo script devo creare una tabella con numero di colonne variabili pari alle colonne selezionate con i radiobutton.

    codice:
    $campi=array();
    echo "<table border=\"1\" bordercolor=\"#0000FF\"><tr>";
    foreach ($_POST as $k=>$v) {
       if (substr($k,0,30)=="colonna_") {
         echo "<th>".ucfirst(str_replace("colonna_","",$k))."</th>";
         $campi[] = $k;
       }
    }
    echo "</tr>";
    while ($row = mysql_fetch_assoc($Recordset1)) {
       echo "<tr>";
       foreach ($campi as $c) 
          echo $row[$c];
       echo "</tr>";
    }
    echo "</table>";
    	?>
    lo script non funziona perchè:
    codice:
     
    foreach ($_POST as $k=>$v) {
       if (substr($k,0,30)=="colonna_") {
    da questa riga dovrebbero essere estratti da post le variabili che contengono "colonna_" di fatto ciò non accade per cui non viene estratto nulla e quindi non si visualizza niente
    se infatti tolgo questa riga la tabella compare ma io devo estrarre solo le variabili che si chiamano colonna_xxx altrimenti mi compare anche submit ecc che non mi servono

    Una volta tolta quella riga mi appare questo errore
    Notice: Undefined index: colonna_****..... on line 208 cioè questa riga

    codice:
     
    echo $row[$c];
    forse non trova i valori corrispondenti alle colonne

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    181
    nessuno mi può dare una mano?

  4. #4
    codice:
    if (substr($k,0,30)=="colonna_") {
    Perche' metti 0,30 se devi cercare i campi che iniziano per "colonna_"? Prova:

    codice:
    if (substr($k,0,8)=="colonna_") {

    E inoltre:

    codice:
    while ($row = mysql_fetch_assoc($Recordset1)) {
       echo "<tr>";
       foreach ($campi as $c) 
          echo $row[$c];
       echo "</tr>";
    }
    Occhio che qui non scrivi i <td>, quindi ti verrebbe una tabella sballata. Prova

    codice:
    [...]
    echo "<td>".$row['$c']."</td>";
    [...]
    Quando dici:

    Notice: Undefined index: colonna_****..... on line 208 cioè questa riga
    Quel "colonna_****" corrisponde al vero nome della colonna, o ti da' un nome sballato?

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    181
    Ciao innanzi tutto grazie.
    Con colonna_**** intendevo dire che l'errore si ripete per ogni colonna del database tipo così:
    Notice: Undefined index: colonna_pa ..... on line 208
    Notice: Undefined index: colonna_anno..... on line 208
    Notice: Undefined index: colonna_infestante..... on line 208
    ecc.
    nel db le colonne si chiamano pa, anno, infestante
    non so se sono stato chiaro.

  6. #6
    Si' si' chiarissimo

    Allora il problema e' qui:

    codice:
    $campi[] = $k;
    Se all'interno di $campi ci metti $k, includi anche il prefisso "colonna_" e non trovera' mai una colonna con quel nome. Prova a sostituire il blocco:

    if (substr($k,0,30)=="colonna_") {
    echo "<th>".ucfirst(str_replace("colonna_","",$k)). "</th>";
    $campi[] = $k;
    }


    con questo:

    codice:
       if (substr($k,0,8) == "colonna_") {
         $nome_colonna = substr($k,8);
         echo "<th>".ucfirst($nome_colonna)."</th>";
         $campi[] = $nome_colonna;
       }

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    181
    Ciao, io ti ringrazio veramente tanto per l'aiuto che mi hai dato da solo non ce l'avrei mai fatta. grazie davvero.
    Ti posso chiedere alcune delucidazioni su 2 cose?

    1. se volessi ordinare le colonne di quella tabella come voglio io si può fare?

    2. in un'altra pagina avevo creato una tabella tipo quella di prima ma a dimenzione fissa in cui in un campo della colonna (id tesi) viene visualizzato un collegamento. l'utente cliccando li accede ad una pagina con tutte le informazioni relative al record [CODE]<a href="dettaglio.php?varid=<?php echo $row_Recordset1['id_tesi']; ?>"><?php echo $row_Recordset1['id_tesi'];CODE] è possibile aggiungerlo anche a questa tabella?

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    181
    ciao sono riuscito a risolvere il secondo problema e ho capito come ordinare le colonne a piacimento basta cambiare l'ordine del post :-)))
    Senti una domanda
    come si scrive


    if radiobutton è selezionato ........?

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.