[PHP - RISOLTO] Tabella dinamica: colonne selezionate da checkbox

username90

Nuovo Utente
27 Ott 2016
29
0
1
33
Buonasera, ho creato un form in cui una volta selazionato un redattore e filtrato ciò che vorrei vedere di una tabella, dovrei ottenere appunto una tabella i cui campi sono quelli che ho selezionato usando i checkbox. Dalla foto capirete subito. non so come ottenere la tabella, cioè una volta cliccato su Visualizza si dovrebbe aprire una pagina che contiene i risultati filtrati. Mi potreste dare qualche idea su come procedere. vi posto la porzione del codice del mio form.
HTML:
<form name="form1" enctype="multipart/form-data" method="post" action="stampa.php">
   <table align="center" width="80%">
      <tr><td colspan='4' align="center"><b>Elenco ricette per redattore</b></td></tr>
      <tr><td colspan='4'><b>Elenco ricette in archivio validate da un redattore e possibilita' di selezionare i campi da mostrare tra quelli disponibili.</b></td></tr>
      <tr><td colspan='4'>&nbsp;</td></tr>
     <tr valign="middle">
         <td align="right"><label for="redattore">Redattore:</label></td>
         <td>
            <select name="redattore" id="redattore">

           <option value="">seleziona</option>
           <?php
           
           $sql = "select * from redattore where caporedattore=0 order by cognome asc";

           $result = mysql_query($sql);

           while ($row = mysql_fetch_assoc($result)){  ?>

           <option value="<?php echo $row['matricola'] ?>"><?php echo $row['cognome']." ".$row['nome'];  ?></option>

           <?php }  ?>

           </select>
         </td>
         <td align="right">Campi da Visualizzare</td>
         <td>   <input type="checkbox" name=fields[] value="Tipologia" checked>Tipologia<br>
               <input type="checkbox" name=fields[] value="Nome" checked>Nome ricetta<br>
               <input type="checkbox" name=fields[] value="Porzioni" checked>Porzioni<br>
               <input type="checkbox" name=fields[] value="Calorie" checked>Calorie<br>
               <input type="checkbox" name=fields[] value="Tempo" checked>Tempo cottura/preparazione<br>
               <input type="checkbox" name=fields[] value="Difficolta" checked>Difficolta<br>
               <input type="checkbox" name=fields[] value="Note" checked>Note<br>
               <input type="checkbox" name=fields[] value="Preparazione" checked>Preparazione<br>
           </td>
     </tr>
      <tr><td colspan='4'>&nbsp;</td></tr>     
     <tr><td colspan='4'align='center'>
             <input type="submit" name="cerca" value="Visualizza">
     </td></tr>
      <tr><td colspan='4'>&nbsp;</td></tr>
   </table></p>
</form>
 

Allegati

  • Immagine.jpg
    Immagine.jpg
    46,4 KB · Visite: 589

zorro

Utente Attivo
20 Ott 2014
322
21
28
ROMA
Ciao,
faccio qualche prova e ti faccio sapere. Se non ho capito male tu vorresti visualizzare solo le ricette di un particolare relatore e solo i campi selezionati. Giusto ?? Come detto faccio qualche prova. Ciao

Zorro
 
  • Like
Reactions: username90

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
mi intrometto, ma secondo me (può essere che mi sbagli) ma non si capisce bene la relazione che c'è tra il value delle
checkbox e quanto può essere contenuto nella tabella del db, esempio: esiste un campo chiamato pinco che contenga il valore 'nome'? o 'nome' è il nome del campo? c'è una bella differenza tra le due cose.
prendiamo ad es. che sia selezionata la chek
<input type="checkbox" name=fields[] value="Nome" checked>Nome ricetta<br>
nella parte php ne leggerò il valore
PHP:
//.....
$nome=$_POST['fields[1]'];//ho messo 1, ma dipenderà da quante chek vengono selezionate
//...
e sin qui non ci piove
nel primo caso (campo chiamato pinco la query sarà del tipo
PHP:
$query="SELECT * FROM tabella WHERE pinco='$nome'";
cioè cerco i record con pinco=nome
nel secondo caso estraggo tutti i campi nome
PHP:
$query="SELECT $nome FROM tabella";
quindi il tutto mi sembra un pochettino confuso
 

username90

Nuovo Utente
27 Ott 2016
29
0
1
33
Si quello che ha scritto Zorro è proprio quello che devo fare. Seleziono il relatore e poi seleziono ciò che voglio vedere,es se voglio vedere solo il nome e la tipologia seleziono solo i relativi checkbox...
 

username90

Nuovo Utente
27 Ott 2016
29
0
1
33
Il valore che ho assegnato a ciascun value, quello dopo = e scritto tra doppi apici (Nome, Tipologia, ecc) sono proprio i nomi che ho dato alle varie colonne che formano la tabella ricetta nel mio database.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa avevo capito male
PHP:
$matricola=$_POST['redattore'];
$wh="";
if(!empty($matricola)){
    $wh=" WHERE matricola='".$matricola."'";//se $matricola è un numero intero gli apici non ci vogliono
}
if(is_array($_POST['fields'])){
    $campi=implode(",",$_POST['fields']);
}else{
    $campi="*";
}
$query= "SELECT $campi FROM tabella $wh";
//...
 
  • Like
Reactions: username90

zorro

Utente Attivo
20 Ott 2014
322
21
28
ROMA
Ciao username90,
una cosa non ho capito: nel form i campi sono già tutti selezionati (ho visto che hai messo 'checked' a tutti) e l'utente eventualmente deseleziona quelli che non gli interessano oppure sono deselezionati e l'utente seleziona solo quelli che gli interessano?
 
  • Like
Reactions: username90

username90

Nuovo Utente
27 Ott 2016
29
0
1
33
Si li ho messi già tutti selezionati ed eventualmente l'utente deseleziona quelli che non gli interessano
 

username90

Nuovo Utente
27 Ott 2016
29
0
1
33
Allora ragazzi, ho lavorato un pò sul codice che mi ha postato Borgo Italia, ora vi mostro qui di seguito cosa ho fatto; il codice è commentato così capite le istruzioni che ho fatto. Mi da un errore di warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given. Mi potete aiutare a risolvere dove sbaglio? grazie

PHP:
 <?php
 $matricola=$_POST['redattore'];
$wh="";
if(!empty($matricola)){
    $wh=" WHERE matricola='".$matricola."'";//se $matricola è un numero intero gli apici non ci vogliono
}
if(is_array($_POST['fields'])){
   $campi=implode(", ",$_POST['fields']);
   echo "i campi selezionati sono: " .$campi."<br/>"; //istruzione poi da cancellare, è stata scritta solo per vedere se visualizzo correttamente i nomi dei campi selezionati
   $temp=explode(",", $campi); //questa istruzione è stata fatta per contare il numero dei campi altrimenti non sapevo come fare
   $ncampi=count($temp);//ottengo il numero dei campi selezionato
   echo "numero campi selezionati ".$ncampi; //istruzione poi da cancellare
}else{
    $campi="*";
}
$query= "SELECT $campi FROM viewselettiva $wh"; //viewselettiva è il nome della tabella dove trovo tutte le info.
$res=mysql_query($query);
$output=""; //serve per stampare la tabella finale con i risultati
echo "<p><table align=\"center\" width=\"80%\" border=\"1\">";
   echo "<tr>";
   for ($i=0; $i<$ncampi; $i++){
       echo "<th align=\"center\"><strong>".$temp[$i]."</strong></th>"; //visualizzo i nomi dei campi selezionati e li formatto ognuno in una colonna
   }
   echo"</tr>";
   $j=0; // da qui non so cosa sbaglio, vorrei "scorrere" campo per campo ogni record trovato e visualizzarlo nelle apposite righe e colonne.
   while ($row=mysql_fetch_assoc($res) && $j<$ncampi){
       $output .="<tr>";
       $output.="<td>".$row[$j]."</td>";
       if ($j==($ncampi-1)) $output.="</tr>";
       else $j++;
   }
   echo $output;
   echo "</table>";
 ?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
mysql_fetch_assoc pretende che rows abbia una chiave associativa (es, $rows['Porzioni']) e non vettoriale (es. $rows[3])
prova a correggere così, non posso dirti se funziona perche non posso provarlo
PHP:
//.....
$j=0;
while ($row=mysql_fetch_assoc($res)){
    if($j==0){
        $output="<tr>";
    }
    $output.="<td>".$row[$campi[$j]]."</td>";
    if ($j==($ncampi-1)){
        $output.="</tr>";
        $j=0;
    }else{
        $j++;
    }
}
//...
prova e sappimi dire
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa una cosa riguardando, a parte il $rows, perchè fai tutto quell'ambaradan con $output?
PHP:
//.....
$j=0;
while ($row=mysql_fetch_assoc($res)){
    if($j==0){
        echo "<tr>";
    }
    echo="<td>".$row[$campi[$j]]."</td>";
    if ($j==($ncampi-1)){
        echo ="</tr>";
        $j=0;
    }else{
        $j++;
    }
}
//...
 

username90

Nuovo Utente
27 Ott 2016
29
0
1
33
pensavo di usare $output come variabile stringa che alla fine mostra tutto il contenuto della tabella. cioè è come se fosse echo "stringa con tutto il contenuto". Però non sono molto convinta che possa essermi utile questa variabile $output, non mi vengono in mente altre idee.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
verifica la query e il collagamento
PHP:
//....
$query= "SELECT $campi FROM viewselettiva $wh"; //viewselettiva è il nome della tabella dove trovo tutte le info.
var_dump($query);//verifica che la quary sia scritta come deve essere
$res=mysql_query($query);
var_dump($res);//verifichi che funzioni, se sì deve darti RESOURCE.. , se no bool(FALSE)
//....
 

username90

Nuovo Utente
27 Ott 2016
29
0
1
33
ecco il risultato del var_dump: string(160) "SELECT Tipologia, Nome, Porzioni, Calorie, Tempo, Difficolta, Note, Preparazione FROM ricetta, valida WHERE valida.redattore='3' AND valida.ricetta=ricetta.id_ricetta" bool(false)

ho corretto il from perchè le tabelle esatte che interessano la query sono appunto valida e ricetta: valida è una tabella con il seguente schema (redattore, ricetta, idonea, pubblicata) redattore è una foreign key, così come ricetta. Lo schema di ricetta è (id_ricetta, tipologia, utente, nome, porzioni, calorie, cottura, difficolta, preparazione, note).
 

username90

Nuovo Utente
27 Ott 2016
29
0
1
33
aspetta.
o_O Sono andata a rivedere per l'ennesima volta le tabelle nel database. Era giusto il from con viewselettiva perchè io infatti avevo creato la vista con quel nome apposta perchè forniva una visione più completa delle ricette e dei redattori e per eseguire le query per questa operazione. La vista viewselettiva è formata dalle seguenti colonne (ID, Tipologia, Nome, Preparazioni, Porzioni, Calorie, Tempo, Diffocoltà, Ingredienti, Note, Redattore).

Detto ciò ho eseguito la query "SELECT $campi FROM viewselettiva WHERE redattore='".$matricola."' e ho provato a fare anche il var_dump della query per testarla, il risultato è questo string(120) "SELECT Tipologia, Nome, Porzioni, Calorie, Tempo, Difficolta, Note, Preparazione FROM viewselettiva WHERE redattore='3'" resource(7) of type (mysql result).
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
da quello che vedo la query sembrerebbe scritta giusta e trova la tabella (resource(7) of type (mysql result)), quindi il $row=mysql_fetch_assoc($res) dovrebbe funzionare, c'è qualcosa che non hai postato tra il $res e il fetch?
poi nei tuoi ultimi due post scrivi ...FROM ricetta, valida... e nell'altro ...FROM viewselettiva... sei sicura di interrogare la tabella giusta?
poi per "possa essermi utile questa variabile $output, non mi vengono in mente altre idee" guarda quello che ti ho postato.
ho notato ora che l'array con i nomi dei campi l'hai chiamato $temp quindi nell $row[$campi[$j]] devi mettere $row[$temp[$j]]
per sicurezza posta il dump della tabella viewselettiva
 

username90

Nuovo Utente
27 Ott 2016
29
0
1
33
ciao, tra il res e il fetch non c'è nulla che non ho postato, rimetto il codice qui:
PHP:
<?php
 $matricola=$_POST['redattore'];
$wh="";
if(!empty($matricola)){
    $wh=" WHERE redattore='".$matricola."'";//se $matricola è un numero intero gli apici non ci vogliono
}
if(is_array($_POST['fields'])){
   $campi=implode(", ",$_POST['fields']);
   echo "i campi selezionati sono: " .$campi."<br/>"; //istruzione poi da cancellare, è stata scritta solo per vedere se visualizzo correttamente i nomi dei campi selezionati
   $temp=explode(",", $campi); //questa istruzione è stata fatta per contare il numero dei campi altrimenti non sapevo come fare
   $ncampi=count($temp);//ottengo il numero dei campi selezionato
   echo "numero campi selezionati ".$ncampi."<br/>"; //istruzione poi da cancellare
}else{
    $campi="*";
}
$query= "SELECT $campi FROM viewselettiva $wh";
var_dump($query);
$res=mysql_query($query);
var_dump($res);
$output=""; //serve per stampare la tabella finale con i risultati
echo "<p><table align=\"center\" width=\"80%\" border=\"1\">";
   echo "<tr>";
   for ($i=0; $i<$ncampi; $i++){
       echo "<th align=\"center\"><strong>".$temp[$i]."</strong></th>"; //visualizzo i nomi dei campi selezionati e li formatto ognuno in una colonna
   }
   echo"</tr>";
   $j=0; // da qui non so cosa sbaglio, vorrei "scorrere" campo per campo ogni record trovato e visualizzarlo nelle apposite righe e colonne.
   while ($row=mysql_fetch_assoc($res)){
       if ($j==0) {
           $output .="<tr>";
       }
       $output.="<td>".$row[$temp[$j]]."</td>";
       if ($j==($ncampi-1)) {
           $output.="</tr>";
           $j=0;
       }
       else {
            $j++;
        }
   }
   echo $output;
   echo "</table>";
 ?>

il risultato del var_dump è questo: string(120) "SELECT Tipologia, Nome, Porzioni, Calorie, Tempo, Difficolta, Note, Preparazione FROM viewselettiva WHERE redattore='3'" resource(7) of type (mysql result)
infatti la tabella che mi viene mostrata come risultato illustra il nome della tipologia (contorno) e poi mostra due celle vuote in corrispondenza di Nome e Porzioni, ossia mi da due errori entrambi sull'istruzione $output.="<td>".$row[$temp[$j]]."</td>"; gli errori sono questi:
Notice: Undefined index: Nome
Notice: Undefined index: Porzioni

in compenso ho notato che se per esempio seleziono solo la tipologia non mi segnala nessun errore e mi mostra la tabella con la sola colonna tipologia e i record con i nomi della tipologia. Quindi funge se seleziono solo una singola colonna. Se ne seleziono già più di un checkbox non funziona più.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
Notice: Undefined index: Nome
Notice: Undefined index: Porzioni
verifica l'esatta corrispondenza tra il nome nell'array e il nome del campo in tabella
prova questo stupidissimo script
PHP:
<?php
//qui dati di connessione
$query="SELECT Tipologia, Nome, Porzioni, Calorie, Tempo, Difficolta, Note, Preparazione FROM viewselettiva WHERE redattore='3";
$ris=mysql_query($query);
while($riga=mysql_fetch_assoc($ris)){
   
    echo $riga['Tipologia']."<br>";
    echo $riga['Nome']."<br>";
    echo $riga['Porzioni']."<br>";
    echo $riga['Calorie']."<br>";
    echo $riga['Tempo']."<br>";
    echo $riga['Difficolta']."<br>";
    echo $riga['Note']."<br>";
    echo $riga['Preparazione']."<br>";
}
?>
lo lanci e vedi se a qualcuno dei campi ti da e dove
Notice: Undefined index:.....
i casi sono due o è sbagliato il nome nell'array o il nome del campo, comunque non corrispondono esattamente
 

username90

Nuovo Utente
27 Ott 2016
29
0
1
33
Buongiorno, ho verificato l'esatta corrispondenza tra il nome (che sarebbe quello dopo il value = "xxx", o quello dopo name="xxx" ?) nell'array e il nome del campo nella tabella a me sembrano coincidere, ora metto pure la foto così controlli pure tu (chissà mi sfugge qualcosa). Ho fatto la prova dello script ma mi dà il seguente errore: mysql_fetch_assoc() expects parameter 1 to be resource.
 

Allegati

  • img.jpg
    img.jpg
    209,7 KB · Visite: 454
Discussioni simili
Autore Titolo Forum Risposte Data
C [RISOLTO][PHP] Conteggio righe di una tabella PHP 4
A [PHP] RISOLTO Invio Mail con Tabella PHP 2
elpirata [PHP] [RISOLTO]Sovrascrivere testo in una tabella PHP 2
G [RISOLTO][PHP] Estrapolare dati da Tabella PHP 11
elpirata [RISOLTO]Stampare giorno della settimana in tabella php PHP 6
C [RISOLTO]Inserimento variabile php in input html PHP 20
moustache [RISOLTO] SQL PHP IIS PHP 8
L update tabelle in php mysql [risolto] PHP 6
A [PHP] Problema query insert [RISOLTO] PHP 14
B [PHP] recuperare IP dei server in load balancing [RISOLTO] PHP 3
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
C [RISOLTO][PHP] Errore di sintassi PHP 8
Kolop [RISOLTO][PHP] Problema Pagination PHP 2
C [RISOLTO][PHP] Funzione ONclick PHP 14
N [PHP] Utilizzo variabili di sessione [Risolto] PHP 13
Tommy03 [RISOLTO][PHP] Webserver o devserver? PHP 2
spider81man [PHP] Problemi cancellazione dato su DB [RISOLTO] PHP 1
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
elpirata [PHP][RISOLTO] Effettuare la somma dei tempi di lavorazione PHP 3
A [RISOLTO]Recuperare dati inviati con json tramite php PHP 4
C [RISOLTO][PHP] Passaggio variabili senza refresh di pagina PHP 7
elpirata [PHP][RISOLTO] Errore di tipo Notice: Undefined index - Come risolvere quando si hanno tante var PHP 10
S Problema in PHP per invio file XML - RISOLTO- PHP 8
A [RISOLTO] HighChart e PHP PHP 4
A [RISOLTO] PHP Selezionare tutti i file con stessa estensione PHP 2
A [RISOLTO] Table elaborata da codice PHP con dati da DB non visualizzata in IFRAME PHP 15
Zea [PHP] RISOLTO - creare link con il risultato dell'interrogazione db PHP 1
A [PHP] [RISOLTO]Compilazione campi form da record db PHP 3
A [PHP] [RISOLTO] Modifica record db da form PHP 11
G [PHP][RISOLTO] Include/Require non funzionante PHP 9
C [PHP] RISOLTO - Eliminare elementi duplicati da array multidimensionale PHP 1
G [RISOLTO][PHP] Call to a member function num_rows() on a non-object PHP 9
CristianB72 [RISOLTO] [PHP] Istruzione "if" non funziona PHP 6
fabryx [PHP] RISOLTO: Download file da web e trasferimento su server PHP 2
fabryx [PHP]RISOLTO: Parsing xml nodi con caratteri speciali PHP 1
CristianB72 [RISOLTO][PHP] preg_match di un array PHP 7
A [RISOLTO]Errore caricamento file php PHP 21
coccobil [PHP] RISOLTO -Recupare valore data che soddisfa certi requisiti da array PHP 3
fabryx [PHP]RISOLTO: Trasformare righe in colonne assegnando singole variabili PHP 10
fabryx [PHP]RISOLTO: eliminazione riga con singolo valore duplicato in array PHP 19
elpirata [PHP] [RISOLTO] Stampare classe css in base al risultato della query PHP 6
elpirata [Risolto] Gestione Prenotazioni script php PHP 25
K [risolto] passaggio variabile a pagina php con ajax Ajax 6
J [risolto] Trasformare la seguente classe PHP PHP 2
E [risolto] win 8.1 + IE11 le sessioni PHP non fuonzionano correttamente PHP 7
N [RISOLTO] Mostrare a video le checkbox selezionate con PHP e MySQL PHP 4
otto9due [risolto] Problema sessioni php e login PHP 5
G [risolto] Creazione file excel con PHP PHP 3
S [risolto] Aiuto: ciclo php ( for / while). popolare select dinamicamente da array id. PHP 9
Alessandro Le Mura [risolto] PHP problema memorizzazione array PHP 4

Discussioni simili