Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Problema permessi

  1. #1

    Problema permessi

    Ciao a tutti...
    Sono da 2 giorni fermo sulla creazione di un mio script...
    Non riesco a trovare una valida soluzione.. Allora, vi spiego il tutto:

    - Ho un database MySQL da dove devo estrarre dei dati del tipo:

    ID Nome Categoria Via CAP Città Regione Telefono Fax Email Sito Commenti Provincia

    Tali dati si trovano nella tabella aziende, e per vederli bisogna fare il login.

    Ho un'altra tabella chiamata permessi, con i seguenti campi:

    ID
    Regione
    Provincia
    Tipo

    che compilo ad esempio:

    ID: automatico
    Regione: Toscana
    Provincia: Vuoto
    Tipo: regione

    oppure

    ID: automatico
    Regione: Vuoto
    Provincia: MI
    Tipo: regione

    Questo perchè con determinati Login, devo visualizzare solo alcune regioni o solo alcune province dell'intero database. Ed è qui che mi blocco, perchè io faccio:

    Codice PHP:
    $dato mysql_query("select * FROM permessi where utente = '$nick'");
    while (
    $num mysql_fetch_array($dato)) {
    if ( (
    $num['tipo'] == "regione") ) {
    $regioneab[] = $num['regione'];
    $tipo[] = "regione";
    } else {
    $provab[] = $num['provincia'];
    $tipo[] = "provincia";
    }

    In modo da inserire tali dati nelle array, poi sotto, quando vado a stampare i dati metto:

    Codice PHP:
    while ( $a mysql_fetch_array($b) ) {
    if (isset(
    $regioneab) ) {
    if ( (
    $a['regione'] != $regioneab[0])  ) {

    Sostituisco tutti i valori da stampare con la scritta "Non autorizzato";

    }
    }
    if (isset(
    $regioneab) ) {
    if ( (
    $a['provincia'] != $provab[0])  ) {
    Sostituisco tutti i valori da stampare con la scritta "Non autorizzato";
    }
    }

    In modo che se non si è autorizzati, i dati non vengono stampati, ma al loro posto viene mostrato "Non autorizzato".

    Il problema? Se io inserisco più di una regione/provincia da visualizzare, php stampa (ovviamente) "Non autorizzato" su tutte le province/regioni abilitate, tranne l'ultima...

    Soluzioni?

    Resto in attesa di un vostro aiuto e vi ringrazio tutti per l'interesse...

    Ciao ciao

  2. #2
    mi pare siano manco cugini in seconda quei due script....

    da dove arrivano $b, dove resetti il result set ???? $regioneab e' un array e se esiste un record risulta settato sempre

    non si riesce a capire lo scopo del tuo script. Quale relazione esiste tra la tabella aziende, permessi, user ????

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    $b = mysql_query("SELECT *
    FROM `aziende`
    WHERE `$per` LIKE CONVERT( _utf8 '%$parametro%'
    USING latin1 )
    COLLATE latin1_swedish_ci LIMIT $prRec,$perPagina");

    Aziende contiene le aziende
    Permessi contiene le province/regioni che ogni utente può visualizzare
    Utenti contiene tutti gli utenti registrati

    Lo scopo del mio script è quello di NON visualizzare tutte le aziende del database, ma solo alcune, che definisco nella tabella permessi.

    Per ogni chiarimento scrivete pure

  4. #4
    E' praticamente impossibile per me darti una risposta.
    Aziende contiene le aziende
    Permessi contiene le province/regioni che ogni utente può visualizzare
    Utenti contiene tutti gli utenti registrati
    Hai tre tabelle. Permessi e utenti possono essere in relazione tramite un id_utente (ma c'e'?) mentre non si capisce quale possa essere il legame tra aziende e permessi.

    Il tutto potrbbe essere fatto con una sola query utilizzando il JOIN tra tabelle. Ma cosi' senza riferimenti (relazioni) tra le tabelle la cosa e' praticamente impossibile.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Permessi:

    ID
    Regione
    Provincia
    Tipo
    utente (contiene il nickname), lo avevo dimenticato prima

    Aziende contiene le aziende totali, un database di aziende, e con permessi non ha relazioni.
    Praticamente PHP se un record ha una regione o provincia che quell'utente non ha nella tabella permessi non lo deve mostrare.

    Da precisare che io posso modificare permessi/aziende/utenti e lo script come voglio, per rendere possibile ciò che voglio, cioè facciamo un esempio pratico.

    Tabella utenti:
    ID automatico
    Utente socci4
    Password (la sua password)

    Tabella permessi:
    ID automatico
    Regione Molise
    Provincia
    Tipo regione
    utente socci4

    L'utente compila il modulo di ricerca per ragione sociale, e tra i risultati ci sono 5 aziende molisane e 2 aziende lombarde.
    L'utente deve visualizzare SOLO le aziende molisane e quelle lombarde o non devono apparire proprio, oppure devono apparire degli asterischi oppure la frase "Non autorizzato".

    Ora è chiaro?

  6. #6
    Nessuno che può aiutarmi?

  7. #7
    Perfavore, non abbandonatemi!

  8. #8
    Posto il codice completo della pagina di estrazione, escluso il codice relativo ai permessi, che ho eliminato in attesa di soluzione!

    Codice PHP:
    <?php
    include("include/logged.php");
    $per $_GET['per'];
     if ( (
    $per == "nome" ) ) {
      
    $parametro $_GET['ragione'];
      }
     if ( (
    $per == "citta" ) ) {
      
    $parametro $_GET['citta'];
      }
      if ( (
    $per == "provincia" ) ) {
      
    $parametro $_GET['provincia'];
      } 
      if ( (
    $per == "regione" ) ) {
      
    $parametro $_GET['regione'];
      }
      if ( (
    $per == "categoria" ) ) {
      
    $parametro $_GET['categoria'];
      }
    $per $_GET['per'];
    $perpag $_GET['perpag'];
    $ragione $_GET['ragione'];
    $citta $_GET['citta'];
    $regione $_GET['regione'];
    $categoria $_GET['categoria'];
    $provincia $_GET['provincia'];
    if ( (
    trim($parametro) == "") ) {
    Header ("Location: parametri.php?errore=Inserisci una stringa valida da ricercare!");
    }
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Bcontacts.biz - Risultati ricerca</title>
    <?
      
    include("include/header.php");
      
    $contatore mysql_query("select COUNT(ID) FROM `aziende`
    WHERE `
    $per` LIKE CONVERT( _utf8 '%$parametro%'
    USING latin1 )
    COLLATE latin1_swedish_ci"
    );
     
    $ArrCont mysql_fetch_row($contatore);
    $RecTot $ArrCont [0];
    $perPagina $_GET['perpag'];
    $PagTot ceil($RecTot $perPagina);
    $PagCorr = (!$_GET['pagina']) ? : (int)$_GET['pagina'];
    $prRec = ($PagCorr 1) * $perPagina;
    if(
    $PagCorr == 1)
    {
    $precedente "Indietro";
    }
    else
    {
    $PagPrec = ($PagCorr 1);
    $precedente "<a href=\"lettura.php?pagina=$PagPrec&per=$per&perpag=$perpag&pagina=$PagPrec&ragione=$ragione&citta=$citta&provincia=$provincia&regione=$regione&categoria=$categoria&Submit=Invia\">Indietro</a>";
    }

    if(
    $PagCorr == $PagTot)
    {
    $successiva "Avanti";
    }
    else 
    {
    $PagSucc = ($PagCorr 1);
    $successiva "<a href=\"lettura.php?pagina=$PagSucc&per=$per&perpag=$perpag&pagina=$PagSucc&ragione=$ragione&citta=$citta&provincia=$provincia&regione=$regione&categoria=$categoria&Submit=Invia\">Avanti</a> ";
    }

    $paginazione "$precedente  $successiva";
    echo 
    "<center>
    Record trovati: 
    $RecTot

    Vengono mostrati 
    $perPagina record a pagina
    Pagina 
    $PagCorr di $PagTot
    $paginazione

    <a href=\"parametri.php\">Modifica parametri di ricerca </a>

    </center>

    <a href=\"#giu\">Vai giù </a></p>"
    ;
    $b mysql_query("SELECT *
    FROM `aziende`
    WHERE `
    $per` LIKE CONVERT( _utf8 '%$parametro%'
    USING latin1 )
    COLLATE latin1_swedish_ci LIMIT 
    $prRec,$perPagina");
    $num_righe=@mysql_num_rows($b);
    if (
    $num_righe != 0) { 
    echo 
    '<a name="su"></a><table width="100%" border="2"><tr>
    <td><p class="main">[b]ID[/b]</p></td>
          <td><p class="main" align="center">[b]Nome[/b]</p></td>
          <td><p class="main" align="center">[b]Categoria[/b]</p></td>
          <td><p class="main" align="center">[b]Via[/b]</p></td>
          <td><p class="main" align="center">[b]CAP[/b]</p></td>
          <td><p class="main" align="center">[b]Città[/b]</p></td>
          <td><p class="main" align="center">[b]Regione[/b]</p></td>
          <td><p class="main" align="center">[b]Telefono[/b]</p></td>
          <td><p class="main" align="center">[b]Fax[/b]</p></td>
          <td><p class="main" align="center">[b]Email[/b]</p></td>
          <td><p class="main" align="center">[b]Sito[/b]</p></td>
          <td><p class="main" align="center">[b]Commenti[/b]</p></td>
          <td><p class="main" align="center">[b]Provincia[/b]</p></td>    </tr>'
    ;
        
    $numero 0;
            while ( 
    $a mysql_fetch_array($b) ) {
            
    $numero $numero +1;
            if ( (
    $a['categoria'] == "Null") ) {
            
    $a['categoria'] = "Non specificata";
            }
            if ( (
    $a['via'] == "Null") ) {
            
    $a['via'] = "Non specificata";
            }
            if ( (
    $a['cap'] == "Null") ) {
            
    $a['cap'] = "Non specificato";
            }
            if ( (
    $a['fax'] == "Null") ) {
            
    $a['fax'] = "Non specificato";
            }
            if ( (
    $a['email'] == "Null") ) {
            
    $a['email'] = "Non specificata";
            }
            if ( (
    $a['sito'] == "Null") ) {
            
    $a['sito'] = "Non specificato";
            }
            if ( (
    $a['commenti'] == "Null") ) {
            
    $a['commenti'] = "Non specificato";
            }
            if ( (
    $a['categoria'] == "") ) {
            
    $a['categoria'] = "Non specificata";
            }
            if ( (
    $a['via'] == "") ) {
            
    $a['via'] = "Non specificata";
            }
            if ( (
    $a['cap'] == "") ) {
            
    $a['cap'] = "Non specificato";
            }
            if ( (
    $a['fax'] == "") ) {
            
    $a['fax'] = "Non specificato";
            }
            if ( (
    $a['email'] == "") ) {
            
    $a['email'] = "Non specificata";
            }
            if ( (
    $a['sito'] == "") ) {
            
    $a['sito'] = "Non specificato";
            }
            if ( (
    $a['commenti'] == "") ) {
            
    $a['commenti'] = "Non specificato";
            }
            if ( (
    $a['regione'] == "Null") ) {
            
    $a['regione'] = "Non specificata";
            }
            if ( (
    $a['categoria'] == "NULL") ) {
            
    $a['categoria'] = "Non specificata";
            }
            if ( (
    $a['via'] == "NULL") ) {
            
    $a['via'] = "Non specificata";
            }
            if ( (
    $a['regione'] == "NULL") ) {
            
    $a['regione'] = "Non specificata";
            }
            if ( (
    $a['cap'] == "NULL") ) {
            
    $a['cap'] = "Non specificato";
            }
            if ( (
    $a['fax'] == "NULL") ) {
            
    $a['fax'] = "Non specificato";
            }
            if ( (
    $a['email'] == "NULL") ) {
            
    $a['email'] = "Non specificata";
            }
            if ( (
    $a['sito'] == "NULL") ) {
            
    $a['sito'] = "Non specificato";
            }
            if ( (
    $a['commenti'] == "NULL") ) {
            
    $a['commenti'] = "Non specificato";
            }
            echo 
    '
        <tr>
        <td><p class="main" align="center">'
    .$a['ID'].' ('.$numero.')</p></td>
          <td><p class="main">'
    .$a['nome'].'</p></td>
          <td><p class="main">'
    .$a['categoria'].'</p></td>
          <td><p class="main">'
    .$a['via'].'</p></td>
          <td><p class="main">'
    .$a['cap'].'</p></td>
          <td><p class="main">'
    .$a['citta'].'</p></td>
          <td><p class="main">'
    .$a['regione'].'</p></td>
          <td><p class="main">'
    .$a['telefono'].'</p></td>
          <td><p class="main">'
    .$a['fax'].'</p></td>
          <td><p class="main">'
    .$a['email'].'</p></td>
          <td><p class="main">'
    .$a['sito'].'</p></td>
          <td><p class="main">'
    .$a['commenti'].'</p></td>
          <td><p class="main">'
    .$a['provincia'].'</p></td>
        </tr>
      '
    ;
    }
    echo 
    '</table>';
            

    if(
    $PagCorr == 1)
    {
    $precedente "<td align=\"right\"><p align=\"left\" class=\"Stile4\">Indietro </p> </td>";
    }
    else
    {
    $PagPrec = ($PagCorr 1);
    $precedente "<td align=\"right\"><p align=\"left\" class=\"Stile4\">[b]<a href=\"lettura.php?pagina=$PagPrec&per=$per&perpag=$perpag&pagina=$PagSucc&ragione=$ragione&citta=$citta&provincia=$provincia&regione=$regione&categoria=$categoria&Submit=Invia\">Indietro</a>[/b] </p> </td>";
    }

    if(
    $PagCorr == $PagTot)
    {
    $successiva "<td align=\"left\"><p align=\"right\" class=\"Stile4\">Avanti </p>";
    }
    else 
    {
    $PagSucc = ($PagCorr 1);
    $successiva "<p align=\"right\" class=\"Stile4\">[b]<a href=\"lettura.php?pagina=$PagSucc&per=$per&perpag=$perpag&pagina=$PagSucc&ragione=$ragione&citta=$citta&provincia=$provincia&regione=$regione&categoria=$categoria&Submit=Invia\">Avanti </a>[/b] </p></td>";
    }

    $paginazione "$precedente  $successiva";
    echo 
    "$paginazione";
      
            } else {
            echo 
    '<p class="main" align="center">Non ci sono aziende da visualizzare.</p>';
            }
            
      
    ?>
    </h2>
    </div>


    [url="#su"]Torna su [/url]</p>


    <a name="giu"></a>
    </p>


    </p>
    <?php include("include/footer.php");
        
    ?>
    </body>
    </html>

  9. #9
    Vi prego, datemi un suggerimento, non posso bloccarmi
    La relazione che ho è il nome utente... In pratica se l'utente ricerca un'azienda che è in una regione/provincia che può visualizzare (perchè sta in permessi) la vede, altrimenti non deve vederla...

    Grazie in anticipo a chiunque mi aiuterà

  10. #10
    Hai delle complicazioni e tortuosita' inutili nel tuo script.

    Se in mancanza di dati devi stampare "Non specificato" mettilo come default nel db.

    per il resto continuo a non capire.... se devi estrarre solo i dati di un certo tipo mettili nella condizione where.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.