Link interni alla pagina con php

Dragon

Nuovo Utente
7 Lug 2007
17
0
0
40
Sanremo - Milano
www.web-raider.it
Ciao a tutti!:)

Ho un problema che so che può essere facilmente risolto, credo..

Ma purtroppo sono troppo nuovo alla programmazione php per arrivarci da solo.:gun:

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:


Codice:
       <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:


Codice:
        <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!!
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
togli il simbolo del dollaro dal link nell'elenco:
PHP:
<li><a href='nomepagina.php?id=1'>link 1<br></a></li>
 
Ultima modifica:

Dragon

Nuovo Utente
7 Lug 2007
17
0
0
40
Sanremo - Milano
www.web-raider.it
Perfetto risolto il problema!! Grazie Eliox!!:mavieni:

Si è venuta a verificare un altro piccolo problema però...

Se inserisco questo pezzo di codice:

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:

Codice:
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!!!:confused:
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Il problema dovrebbe essere qui:

PHP:
...
if(!isset($id)) $id = '0';

switch($_GET[$id]){
...
infatti assegni un valore a $id ma poi utilizzi il risultato di $_GET[$id] come condizione dello switch.
Dovresti fare così:

PHP:
...
$id = $_GET[$id];
if(!isset($id)) $id = '0';

switch($id){
...
 

Dragon

Nuovo Utente
7 Lug 2007
17
0
0
40
Sanremo - Milano
www.web-raider.it
Il problema dovrebbe essere qui:

PHP:
...
if(!isset($id)) $id = '0';

switch($_GET[$id]){
...
infatti assegni un valore a $id ma poi utilizzi il risultato di $_GET[$id] come condizione dello switch.
Dovresti fare così:

PHP:
...
$id = $_GET[$id];
if(!isset($id)) $id = '0';

switch($id){
...
Mi spiace satifal ma mi sa che non ci siamo... se io uso $id invece di usare solo id, come suggerito da elix, non mi funzionanno più le cose... e tantomeno i link. Altro suggerimento?
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Non devi usare $id al posto di id. Le modifiche che ti ha suggerito Eliox sono corrette. Devi solamente effettuare la correzione che ti ho indicato e lasciare tutto il resto così com'è.
 

Dragon

Nuovo Utente
7 Lug 2007
17
0
0
40
Sanremo - Milano
www.web-raider.it
Benissimo seguendo la tua procedura e modificandola un po' (perchè insisteva con le notifiche) sono arrivato a questo risultato che funziona:
:ilpirata:
PHP:
if(!isset($_GET['id'])) { $id = 0;}
Grazie mille a tutti per l'aiuto!!!:love:


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

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Hai ragione scusa, ma oggi ero troppo indaffarato per accorgermi dell'errore. Il codice corretto dovrebbe essere il seguente:

PHP:
...
@ $id = $_GET['id'];
if(!isset($id)) $id = '0';

switch($id){
...
Il recupero dei valori dalla GET va fatto col nome del parametro passato sulla URL per cui id inoltre aggiungendo l'@ non verrà vidualizzato il warning in caso di assenza del parametro.
Prova così e fammi sapere.
 

italsasha

Nuovo Utente
23 Nov 2008
4
0
0
Scusate, io sono troppo "fresca" nel PHP, muovo i primi passi, come si dice. E per questo non mi permetterei di aprire uno nuovo tema. Ma ho un problema, ho personalizzato uno script che mi hanno mandato da MisterDomein, però non riesco a farlo funzionare, browser mi scrive: PHP Parse error: syntax error, unexpected T_ELSE in C:\WebSites\capitalcasaimmobiliare.it_z0mw1rmdshq5jawo\mailto.php on line 52
mi potreste dire cosa vuol dire? Ho sbagliato qualche codice? Grazie a chi mi può aiutare.
 

italsasha

Nuovo Utente
23 Nov 2008
4
0
0
Scusami ignoranza... cosa vuol dire "aprire un nuovo 3d postando anche la linea 52 che ti da errore". Grazie.