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

    Pagine Master e Dettaglio -> Filtrare i risultati

    Ciao a tutti!
    Sto iniziando a imparare a utilizzare il liguaggio Php.
    Mi sono creato un database in Ms Access e sono riuscito a ciclare una tabella (del db), tramite una pagina php, e visualizzare il risultato in firefox.
    Sto provando a creare 2 pagine php (master e dettaglio), basate su 2 tabelle diverse e collegate 1-molti, in modo che sulla prima ci sia una tabella dei generi di film e un link che apre e filtra la seconda pagina (dettaglio) che mostra i film che appartengono al genere cliccato.
    In buona sostanza ID = CE (Chiave esterna).
    La pagina master contiene il seguente codice php:
    codice:
    <?php
        // Includo il file contenente la stringa di connessione al db access
    
        include("connessione.php");
    
        // Creo due oggetti COM contenenti gli oggetti Connection e Recordset
        $cn = new \COM("ADODB.Connection");
        $rs = new \COM("ADODB.Recordset");
    
        // Apro la Connessione ed il Recordset
        $cn->Open($sc);
        $rs->Open("SELECT * FROM TGeneri", $cn);
    
        echo "<table width='200' border='1' align = 'center'>";
        echo "<tr>";
        echo "<td><strong>Identificativo</strong></td>";
        echo "<td><strong>Genere</strong></td>";
        echo "<td><strong>Dettaglio</strong></td>";
        echo "</tr>";
    
        // Controllo che sulla tabella ci siano dati
        if ($rs->EOF)
            {
                echo "<tr>";
                echo "<td><strong>Nessun Risultato</strong></td>";
                echo "</tr>";
            }
    
        // <b>Se ce ne sono effettuo un ciclo di lettura</b>
        else while ($rs->EOF == FALSE)
        {
            echo "<tr>";
            echo "<td>". $rs->Fields ['IdGenere']->value ."</td>";
            echo "<td>" .$rs->Fields ['Genere']->value . "</td>";
            echo "<td><strong><a  href=\catalogo.php?CeGenere=".$rs->Fields['IdGenere']->value."\">Elenco  Filtrato</a></strong></td>";
            echo "</tr>";
            
            $rs->MoveNext();
        }
    
        echo "</table>";
    
        // Chiudo il Recordset
        $rs->Close();
        $rs = null;
    
        // Chiudo la Connection
        $cn->Close();
        $cn = null;
    ?>
    il codice della pagina dettaglio è:
    codice:
    <?php
    
        // Includo il file contenente la stringa di connessione
        include("connessione.php");
    
        $cn = new \COM("ADODB.Connection");
        $rs = new \COM("ADODB.Recordset");
        
        // questo è un test per vedere se dalla pagina master recupero l'id cliccato
       // il risultato è sempre un valore nullo
        $id = (isset($_GET['IdGenere']) ? $_GET['IdGenere'] : '');
        echo "Il NUm e' ". $id;
        
        // Apro la connessione ed il Recordset
        $cn->Open($sc);
        // qui dovrei utilizzare ''WHERE IdGenere = $id
        $rs->Open("SELECT * FROM TFilm", $cn);
    
        echo "<table width='200' border='1' align = 'center'>";
        echo "<tr>";
        echo "<td><strong>Titolo Film</strong></td>";
        echo "<td><strong>Anno</strong></td>";
        echo "<td><strong>Regista</strong></td>";
        echo "</tr>";
        
        // Controllo che sulla tabella ci siano dati
        if ($rs->EOF)
            {
                echo "<tr>";
                echo "<td><strong>Nessun Risultato</strong></td>";
                echo "</tr>";
            }
    
        // <b>Se ce ne sono effettuo un ciclo di lettura</b>
        else while ($rs->EOF == FALSE)
        {
            echo "<tr>";
            echo "<td>".$rs->Fields ['TitoloFilm']->value ."</td>";
            echo "<td>".$rs->Fields ['Anno']->value . "</td>";
            echo "<td>".$rs->Fields ['Regista']->value . "</td>";
            echo "</tr>";
    
            $rs->MoveNext();
        }
    
        echo "</table>";
        // Chiudo il Recordset
        $rs->Close();
        $rs = null;
    
        // Chiudo la Connection
        $cn->Close();
        $cn = null;
    ?>
    In buiona sostanza quello che non riesco a fare è passare l'id dalla pagina master alla pagina dettaglio tramite la variabile $_GET.

    (Ricordo che sono un principiante..)

    Ringrazio chiunque vorrà aiutarmi..!

    Buona Domenica a tutti.

    Ciao,
    Fil.

    P.s.
    Aggiungo che il codice della pagina "connessione.php" è il seguente:
    codice:
    <?php
        $db = "C:\inetpub\wwwroot\SitoDinamico\mdb-database\DbFilm.mdb";
        $sc = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" . $db . ";";
    ?>

  2. #2
    Devi passare la variabile $id alla query:
    Codice PHP:
    $rs->Open("SELECT * FROM TFilm Where IdGenere=".$id$cn); 
    Esegui la query solo se $id non è nullo, altrimenti generi un errore.

  3. #3
    Ciao Luca e grazie per la risposta.
    il problema è proprio il valore della variabile nel senso che non viene mai valorizzata.
    codice:
     // questo è un test per vedere se dalla pagina master recupero l'id cliccato
       // il risultato è sempre un valore nullo
        $id = (isset($_GET['IdGenere']) ? $_GET['IdGenere'] :'');
    

    A quanto ho capito, per esempio, se dalla pagina master uso un form e un text_field chiamato "IdGenere" e setto il method = GET, la variabile viene valorizzata.
    Adesso come adesso non so specificare il "method" nella pagina master (che non possiede un form, ma una tabella) e di conseguenza la variabile [$Id] non viene mai valorizzata. Sempre se l'errore mio sta qui.
    Non riesco a capire come riuscire a valorizzare la variabile, in funzione del link premuto nella pagina master.

    Grazie in anticipo.

    Ciao,
    Fil.

  4. #4
    Mi era sfuggito il commento prima della query...
    Una domanda: quando clicchi il link e apri la pagina dettaglio, l'url di quest'ultima contiene il parametro get idGenere?

  5. #5
    Ciao, no in effetti non uso ne il get ne il post. Non c'è proprio questa parola nel link che apre la pagina dettaglio... Non so come poterla inserire nella maniera corretta..

    codice:
    echo "<td><strong><a  href=\catalogo.php?CeGenere=".$rs->Fields['IdGenere']->value."\">Elenco  Filtrato</a></strong></td>";
    Grazie ancora!!!

    Fil

  6. #6
    Non mi è chiaro quale "parola" non riesci ad inserire nell'url, comunque i percorsi vanno scritti con lo slash e non con l'anteslash:
    codice:
    echo '<td><strong><a  href="/catalogo.php?CeGenere=' . $rs->Fields['IdGenere']->value .' ">Elenco  Filtrato</a></strong></td>';
    l'href punta alla pagina catalogo.php, che si trova sulla root (slash iniziale) e passa il parametro get "CeGenere".

  7. #7
    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    Mi era sfuggito il commento prima della query...
    Una domanda: quando clicchi il link e apri la pagina dettaglio, l'url di quest'ultima contiene il parametro get idGenere?
    Se con questa domanda, mi chiedi se faccio una cosa così (sulla pagina dettaglio):
    codice:
    $id = $_GET['IdGenere'];
    echo $id;
    allora la risposta è sì.
    Altrimenti non ho capito.

    In ogni caso ora, con il seguente codice, mi da questo errore:
    '''''Notice: Undefined index: IdGenere in C:\inetpub\wwwroot\SitoDinamico\catalogo.php on line 18'''''
    codice:
    // link della pagina master
    echo '<td><strong><a href="/SitoDinamico/catalogo.php?CeGenere=' . $rs->Fields['IdGenere']->value .' ">Elenco  Filtrato</a></strong></td>';
    
    
    //codice che recupera l'id con $_GET nella pagina dettaglio
    $id = $_GET['IdGenere']; //questa è la riga 18
    echo $id;
    Per chiarire il discorso della "parola":
    Intendevo che creando un form si specifica la parola "GET" o "POST" nel "method", mentre nella mia pagina master, al momento ho solo un link dinamico
    nel quale non c'è ne la parola "GET" Ne "POST". Devo, per caso, inserire "GET" o "POST" nel link che punta alla pagina dettaglio?
    (la "parola" che intendevo è: "GET" o "POST")

  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    sbagli qui

    il link => catalogo.php?CeGenere=' . $rs->Fields (il tuo codice continua...)
    la pagina di arrivo => $id = $_GET['IdGenere']

    nella pagina di arrivo devi scrivere $id = $_GET['CeGenere'] (o modifica il link, come preferisci, basta che il nome del parametro sia uguale nelle due pagine)

  9. #9
    Quote Originariamente inviata da clasku Visualizza il messaggio
    sbagli qui

    il link => catalogo.php?CeGenere=' . $rs->Fields (il tuo codice continua...)
    la pagina di arrivo => $id = $_GET['IdGenere']

    nella pagina di arrivo devi scrivere $id = $_GET['CeGenere'] (o modifica il link, come preferisci, basta che il nome del parametro sia uguale nelle due pagine)
    Concordo, se il parametro nell'url si chiama "CeGenere", il suo contenuto è accessibile tramite $_GET['CeGenere'].

  10. #10
    Grazie 1000 ragazzi!!!
    appena riesco provo e vi faccio sapere com'è andata o se da altri errori.
    Ciao,
    Fil.

Tag per questa discussione

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.