@simo22
Il codice commentato serve a far riflettere su ciò che si è scritto, anche in merito a ciò che si ritiene funzioni, e rispondere alla domanda di chi ha aperto la discussione che era
Purtroppo non mi funziona...esce si la barra Pagina 1 - 2 - 3 però quando vado a cambiar pagina succede che cambia si la pagina ma mi mostra a video sempre le foto della prima pagina e non quelle della pagina successiva...come mai??
Infine vorrei segnalare che la tua correzione produce una bel Notice: Undefined index: pag perché sarebbe opportuno verificare che un certo indice esista in un array prima di tentare di accedervi, magari con una isset($_GET['pag']), come fa correttamente carlitosteam.
In più il costrutto
Codice PHP:
if(!$_GET["pag"] == null)
anche se in apparenza funziona, è concettualmente sbagliato perchè, per la precedenza degli operatori logici viene eseguito prima il !$_GET["pag"], ma al primo accesso alla pagina tale indice in $_GET potrebbe non esistere (caso limite in cui dai per default valore 1). Ad un qualcosa che non esiste tenti di applicare una negazione logica per poi confrontare il risultato, per mezzo dell'operatore di uguaglianza, con il valore null. Peccato che il ! produce true o false, quindi è inappropriato confrontare il suo risultato con null che nei suoi intenti vorrebbe non essere nè uno 0, nè un false e neanche una stringa vuota. Comunque fermiamoci qua e ringraziamo php per la sua estrema flessibilità e benevolenza per la quale sembra tutto normale (il lato oscuro di php
).
Mi permetto quindi di suggerire una alternativa decisamente più gustosa
Codice PHP:
$start=(isset($_GET['pag']) and ($val=intval($_GET['pag']))>0)?$val:1;
Questo tipo di inizializzazione può apparire un po' criptica ma è la più sintetica e corretta poichè:
1)sfrutta lo shortcut nella valutazione delle espressioni logiche (presente in ogni linguaggio, finanche nel timorato e castigato PASCAL) per cui, se la variabile $_GET['pag'] non esiste ed essendo l'espressione logica legata da un and si ottiene false senza procedere oltre nella valutazione, ovvero ciò che c'è dopo l'operatore and non viene valutato
2)qualora $_GET['pag'] esista (ma ignoriamo per ora cosa contenga) abbiamo la valutazione della seconda parte dell'operatore and. In praticolare la funzione di php intval() converte la stringa $_GET['pag'] in un valore intero. Tale funzione in caso di errore, perchè il contenuto non è un numero o altro, ritorna il valore numerico 0. Questo ci mette al riparo dall'utente malizioso che manomette il valore di $_GET['pag'] con qualcosa di diverso da un numero.
3)visto che abbiamo invocato una funzione e trasformato il $_GET['pag'] in un numero tanto vale approfittarne e conservare tale numero, custodito in $val. Procediamo quindi verificando che $val sia maggiore di 0, perchè altrimenti ricadiamo nell'utente malizioso che tenta di mettere in crisi il nostro script con un valore negativo o nullo mentre, mi sembra di capire, che la pagine le vuoi numerate da 1 in poi.
4)Se $_GET['pag'] esiste, è un numero intero ed è strettamente maggiore di zero allora è elegibile, per mezzo del $val che abbiamo in custodia, ad essere un buon valore per inizializzare $start. In ogni altro caso $start è impostato al valore di default 1.
Che te ne pare? Per essere una misera riga di codice fa un sacco di belle cose e mi auguro di essere stato, in questa circostanza, più chiaro di prima!
La verità è che carlitosteam non aveva bisogno della tua soluzione, perchè già di sua conoscenza avendola applicata qualche riga più in basso nel suo codice. D'altra parte applicata quando ormai non più capace di influenzare il codice di estrazione delle immagini. Ecco perchè ho ritenuto più utile inserire solo dei commenti nel suo codice cercando di indurlo a ripensare a ciò che già sapeva.