Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Visibilità cella a seconda dell'utente collegato

    Buongiorno a tutti,

    vi spiego la mia esigenza: ho una pagina con una tabella dove all'interno di ogni cella c'è un link. Io vorrei che a seconda dell'utente collegato (i cui privilegi recupero tramite una session) si rendano visibili o meno determinate celle. So che potrei mettere un if ad ogni cella ma essendone tante mi sembra il tutto un po' macchinoso e lungo. Mi potete consigliare un metodo più rapido?

    Come sempre grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Tante quante ?
    Come generi le celle adesso ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Tante quante ?
    Come generi le celle adesso ?
    La tabella è fissa con dieci righe e altrettante celle, ma alcuni utenti nel peggiore dei casi dovrebbero essere abilitati a vederne solo 2...

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Facci vedere qual'è il codice che stai usando adesso, così vediamo se e come si può ottimizzare, è inutile che ci si metta a pensare una soluzione diversa se non conosciamo quella attualmente in uso, che magari è già la migliore.

  5. #5
    Ok, il mio codice di partenza è questo:

    codice:
    <?php
    session_start();
    
    // richiamo il tipo di user attualmente connesso
    
    $user=$_SESSION['user'];
    
    ?>
    
    <!--- inserisco la tabella --->
    
    <table align="center" cellpadding="4"
    <tr id="riga1"><td input type="button" value="INSERIMENTO" onClick="top.location.href = 'inserimento_nota.php'"></td></tr>
    
    .... continua per altre 9 righe con link diversi
    
    </table>
    La soluzione che avevo pensato era la seguente :

    codice:
    ....
    <tr <?php if ($user=="1") echo"style=\"visibility: hidden\""; ?> id="riga1"<td input type="button" value="INSERIMENTO" onClick="top.location.href = 'inserimento_nota.php'"></td></tr>
    ...
    ovviamente la if di PHP andrebbe scritta su ogni riga.

    Mi chiedevo se esisteva un metodo più semplice e magari più rapido (che potrebbe tornarmi utile anche per lavori futuri).

    Grazie ancora

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    Innanzitutto i link sono dinamici o statici? Sono stampati con echo uno per volta o vengono stampati secondo un qualche criterio logico tramite cicli?

    Perchè se non cè alcun criterio logico per la stampa e la visualizzazione allora ne devi, o puoi, crearne uno (di metodo logico). Per poi collegare le tue espressioni.

    Una soluzione può essere mettere le righe di codice in una array con aggiunti gli utenti o i gruppi utenti che possono visualizzarlo.

    Proof of concept:
    Codice PHP:
    <?php

    $rows 
    = array(
        array(
            
    'html' => '<tr><!-- [...] --></tr>'// codice html riga 1.
            
    'users' => '1,2,3'// id utenti abilitati alla visualizzazione.
            
    'groups' => '1,2' // id gruppi abilitati alla visualizzazione.
        
    ),
        
        array(
            
    'html' => '<tr><!-- [...] --></tr>'// codice html riga 2.
            
    'users' => '4,5'// id utenti abilitati alla visualizzazione.
            
    'groups' => '1' // id gruppi abilitati alla visualizzazione.
        
    ),
    );

    foreach (
    $rows as $row) {
        
    // Se l'utente è abilitato alla visualizzazione stampa la riga.
        
    if (in_array($userexplode($row['users']))
        || 
    in_array($groupexplode($row['groups']))) {
            echo 
    $row['html'];
        }
    }

  7. #7
    Ok Zacca ho capito la tua logica e ti ringrazio per la risposta,

    in effetti il tuo metodo andrebbe benissimo quando vi fosse un considerevole numero di tipi di utenti a visibilità diversa. Nel mio caso specifico ho solo 3 tipi di utenti e con il tuo metodo, seppur valido, mi si allungherebbe troppo il codice.
    Volevo sapere se era implementabile una soluzione del tipo

    "se utente = 1 allora i seguenti ID (riferiti alle celle) devono essere nascosti"

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    Tramite php qualsiasi metodo logico ricorsivo DEVE avere il salvataggio delle righe o da qualcosa che le contraddistingua da qualche parte.

    Tramite JS puoi fare in modo che "determinati tipi di righe" vengano visualizzati a "determinati tipi di utenti" ma devi comunque dare degli attributi a quelle righe per permettere a JS di riconoscerle e nasconderle.

    Altrimenti, se non sei intenzionato a cambiare la strtuttura del tuo sito, fai manualmente.

  9. #9
    Quote Originariamente inviata da zacca94 Visualizza il messaggio
    Tramite php qualsiasi metodo logico ricorsivo DEVE avere il salvataggio delle righe o da qualcosa che le contraddistingua da qualche parte.

    Tramite JS puoi fare in modo che "determinati tipi di righe" vengano visualizzati a "determinati tipi di utenti" ma devi comunque dare degli attributi a quelle righe per permettere a JS di riconoscerle e nasconderle.

    Altrimenti, se non sei intenzionato a cambiare la strtuttura del tuo sito, fai manualmente.
    E tramite JS (che purtroppo non conosco) come sarebbe la soluzione?

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    Aggiungere un campo alla righa come <tr [...] data-user='1'>, <tr [...] data-user='2'>

    Ciclare le righe con JS e confrontare data-user con $user (che verrà assegnata in output dal server), nascondere gli elementi che non hanno il data-user == $user.

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.