• User

    Link interni alla pagina con php

    Ciao a tutti!:wink3:
    Ho un problema che so che può essere facilmente risolto, visto che è già stato risolto qui:

    novello-di-php-base-al-link-cambiare-contenuto-della-pagina.html

    Ma purtroppo sono troppo nuovo alla programmazione php per capirne la risoluzione già esposta.:?

    Riassumo il problema: ho una serie di link all'interno di una pagina e tramite il click su questi link devo far cambiare il contenuto di un div. allora io ho pensato di fare così per quanto riguarda i link:

    
           <div id="menu" align="left">
                <ul>
                <li><a href='?$id=1'>link 1<br></a></li>
                <li><a href='?$id=2'>link 2<br></a></li>
                <li><a href='?$id=3'>link 3<br></a></li>
                </ul>
           </div>
    
    

    e poi nella sezione dove dovrebbe essere riportato il testo in questione:

    
            <div id="testo">
                <?php
               if(!isset($id)) $id = '0';
                switch($_GET[$id]){
                case 0:
                    $filetesto = fopen('testi/prodotti/testoprodotti.htm', 'r');
                        while (!feof($filetesto))
                        {
                            $line = fgets($filetesto);
                            echo $line;
                        }
                    fclose($filetesto);
                break;
                case 1:
                  $filetesto = fopen('testi/prodotti/diamant.htm', 'r');
                  while (!feof($filetesto))
                  {
                    $line = fgets($filetesto);
                    echo $line;
                  }
                  fclose($filetesto);
                break;
    ...
               default:
                $filetesto = fopen('testi/prodotti/testoprodotti.htm', 'r');
                  while (!feof($filetesto))
                  {
                    $line = fgets($filetesto);
                    echo $line;
                  }
                  fclose($filetesto);
            }
                ?>
            </div>
    
    

    Pensando che a seconda del link cliccato mi cambiasse il testo visualizzato. Ora io so che il php viene processato al caricamento della pagina ma speravo potesse funzionare.
    Qualcuno mi sa dire dove ho sbagliato? O altrimenti suggerire una soluzione diversa... Please HELP ME!!:bho:


  • ModSenior

    Le variabili GET si passano con questo formato:
    file.php?var=valore&var2=valore2

    Per recuperarle si usa $_GET['var']

    Facendo queste 2 modifiche dovrebbe andare...


  • User

    Perfetto risolto il problema!! Grazie Thedarkita!!:vai:

    Si è venuta a verificare un altro piccolo problema però...
    Vi prego non mi picchiate tutti in gruppo, sono un novellino con php:frust:

    Se inserisco questo pezzo di codice:

    
    if(!isset(id)) id = '0';
    
    

    Va tutto giustamente in errore...

    Parse error: parse error, expecting T_VARIABLE' or '$'' in c:.....\prodotti.php on line 133

    Se inserisco questo:

    
    if(!isset($id)) $id = '0';
    
    

    giustamente non se lo considera neanche..

    Fatto sta che alla prima apertura della pagina mi da questa notifica:

    Notice: Undefined index: id in c:.....\prodotti.php on line 132

    Penso che dovrebbe essere una cosa di poco conto, ma secondo voi come dovrei gestirla? Grazie tante a tutti!!!


  • User Attivo

    Prova con...
    [PHP]if(!isset($_GET['id'])) { $id = 0;}[/PHP]


  • User

    Perfetto!! Ora non da più errori!! Grazie mille ilnetsurfer!!!

    Mi spiace di dover modificare il messaggio... no non funziona continua a darmi la notifica... sigh!


  • User Attivo

    Che notice ti da adesso?


  • User Attivo

    Prova cosi:

    <?php
    if(!isset($_GET['id'])){ $id = 0;}
    $id = $_GET['id'];
    switch($id){
    case 0:
    $filetesto = 'testi/prodotti/testoprodotti.htm';
    include($filetesto);
    break;
    case 1:
    $filetesto = 'testi/prodotti/diamant.htm';
    include($filetesto);

            break;
    

    ...
    default:
    $filetesto = 'testi/prodotti/testoprodotti.htm';
    include($filetesto);

        }
            ?>
    

    E poi... modifica cosi il menu:

     <div id="menu" align="left">
            <ul>
            <li><a href='?id=1'>link 1<br></a></li>
            <li><a href='?id=2'>link 2<br></a></li>
            <li><a href='?id=3'>link 3<br></a></li>
            </ul>
       </div>

  • User

    Ok bene adesso funziona Finalmente!!!:vai:

    Ho fatto così:
    [PHP]
    @ $id = $_GET['id'];
    if(!isset($id)) $id = '0';
    switch($id){
    [/PHP]

    Grazie per i suggerimenti!!!:ciauz:


  • ModSenior

    la @ non fa altro che nascondere l'errore, non risolverlo prova cosi:
    [php]
    $id = isset($_GET['id']) ? $_GET['id'] : 1;
    switch($id){
    [/php]
    Imposta il valore se la variabile è settata altrimenti setta 1, comunque se riscontri errori devi postare l'errore altrimenti non possiamo aiutarti...


  • User

    Bene TheDarkIta! Ora funziona!!
    Però se non ti chiedo troppo potresti spiegarmi sommariamente perchè funziona? Cioè, sempre se non è chiedere troppo, non affero l'utilizzo dei ":" e del "?" in quella posizione.

    Cmq grazie a tutti per l'aiuto, siete stati veramente indispensabili!!


  • ModSenior

    Imposta il valore se la variabile è settata altrimenti setta 1

    Lo avevo scritto prima...

    Praticamente è come fare un if la sintassi è la seguente:
    $variabile = (CONDIZIONE) ? ValoreRestituitoTrue : ValoreResistuitoFalse;

    Spero di averti chiarito le idee, se hai qualche perplessità chiedi pure...


  • User

    No, nient'altro, perfettissimo e capito tutto!!!:fumato:

    :perfavore:Ogni giorno si impara qualcosa di nuovo! Grazie ancora tanto, veramente non avrei saputo come cavarmela altrimenti!!!:perfavore:


  • ModSenior

    Figurati 😉