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

    php/mysql-stampare da select solo colonne non vuote

    Buongiorno a tutti.
    Ho cercato tra pillole e thread se ci fosse qualcosa del genere. Ho trovato solo qualcosa relativo alle row ma non alle colonne.

    Il mio è un problema è di pura visualizzazione. Vediamo se riesco a spiegarlo bene:

    In una tbl del db inserisco dei valori che corrispondono alle caratteristiche ( componenti) di un prodotto.

    Stabilito che ogni prodotto puo' avere un massimo di 10 componenti, ho realizzato una tbl con 10 colonne:
    cmpnt_1,cmpnt_2, cmpnt_3,cmpnt_4, etc .

    Il nmr dei componenti è variabile a seconda del prodotto: chi 1, chi 3, chi 8.

    Ora; dal momento che la views è solo una "stampa" e non un clone della tbl ( nel caso modificabile)
    è possibile mostrare solo le colonne che hanno un valore o , detto in un altro modo, far "terminare" la stampa laddove l'ultima colonna è !="" ?

    Non so se sto sparando c*****e, ed è impossibile visto che mysql estrae le row...ma non si sa mai .

    Magari una piccola alchimia ....

    Grazie a tutti e buon sabato
    Ed

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Spero di aver capito, una cosa di questo tipo ti andrebbe bene?
    Codice PHP:
    $query "SELECT * FROM tabella";
    $result mysql_query($query);
    while(
    $row mysql_fetch_array($result)) { //cicla su tutte le righe
       
    for($i=0$i<10$i++) { //per ogni colonna
          
    if($row[$i] != ""//se la cella non è vuota
             
    echo "Componente ".$i." = ".$row[$i]."
    "
    //stampa il contenuto
       
    }

    Questo ti stampa solo le componenti non vuote.

  3. #3
    Originariamente inviato da Alhazred
    Spero di aver capito, una cosa di questo tipo ti andrebbe bene?
    Codice PHP:
    $query "SELECT * FROM tabella";
    $result mysql_query($query);
    while(
    $row mysql_fetch_array($result)) { //cicla su tutte le righe
       
    for($i=0$i<10$i++) { //per ogni colonna
          
    if($row[$i] != ""//se la cella non è vuota
             
    echo "Componente ".$i." = ".$row[$i]."
    "
    //stampa il contenuto
       
    }

    Questo ti stampa solo le componenti non vuote.
    uhmm.. a naso sembra quello che fa per me...la provo!!
    Tnx
    Ed

  4. #4
    Originariamente inviato da senzaesclusiva
    uhmm.. a naso sembra quello che fa per me...la provo!!
    Tnx
    Ed
    Scusa Alhazred, una sola domanda.Sono viziato da altri tipi di programmazione ed è un po' che non ci metto il naso .
    Mi sorge un dubbio:
    Se ogni colonna "componente" per essere identificata in modo univoco contiene una diversa nomenclatura, componente_1, componente_2, etc, come fa la variabile $i a "ciclare" tra le varie colonne?
    Sapendo a priori che dovrò fare questo ciclo , devo nominare le colonne con un suffisso in modo che il ciclo "for($i=0; $i<10; $i++)" possa svolgersi correttamente oppure $i corrisponde ad una costante/variabile che identifica in modo univoco le colonne?

    Scusa se potrà sembrarti una domanda banale, ma abituato a "puntare" ogni singola, chiamamola "cella" ($row/$column) non riesco a capire come il ciclo che mi hai segnalato e che mi sembra corretto da un punto di vista concettuale, possa bypassare il puntamento diretto, bypassando il nome diverso di ogni colonna.

    Ergo: nel momento in cui io seleziono un record attraverso un where , e gli indico un campo ( colonna) , SELECT "x" from "tbl" , non sto facendo altro che "puntare" ad un "indirizzo bene preciso.

    Come fa $i a sapere che intendo le "colonne" e a ciclare su di esse?

    Ti prego , non prendermi a male parole, sto cercando di passare dalla fase newbie di php a quella un poco più avanzata...e insomma...un piccolo cms sono riuscito già a farlo!!
    Niente di stratosferico, manca ancora la "grazia" , la pulizia e la leggerezza dell'implementazione di Js , ma essendo passati solo due mesi mi sento abbastanza soddidfatto

    E poi ...imparo in fretta..

    Grazie Alhazred
    ciao
    Ed

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Funziona perché la funzione mysql_fetch_array(), ad ogni ciclo del while, mette una riga del risultato della query nell'array $row sostituendo ogni volta quella del ciclo precedente, si possono quindi usare dei numeri per indicare la posizione dell'array alla quale accedere, così come succede per gli array di qualsiasi linguaggio.

  6. #6
    Originariamente inviato da Alhazred
    Funziona perché la funzione mysql_fetch_array(), ad ogni ciclo del while, mette una riga del risultato della query nell'array $row sostituendo ogni volta quella del ciclo precedente, si possono quindi usare dei numeri per indicare la posizione dell'array alla quale accedere, così come succede per gli array di qualsiasi linguaggio.
    Che stupido che sono ..hai ragione.
    E ovviamente funziona.
    Ho solo modificato la colonna di partenza dell'array in quanto nelle colonne 1 ,2 e 3 ho degli id numerici, primary key compresa.
    Quindi ho semplicemente modificato in

    for($i=3; $i<13; $i++)

    Grazie mille per la pazienza
    Buona giornata
    Ed

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.