Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    95

    linkare una <select> <option>

    Ciao a tutti,

    nel mio sito, che sto realizzando con Laravel, ho delle pagine con delle notizie, in cui ne mostro per esempio 10 a pagina, e sto realizzando un sistema di navigazione tra le pagine per quando ho più di 10 notizie.

    In pratica, ho pensato di contare il numero degli elementi presenti nel db, poi farne il modulo per capire se sono un numero pari o dispari di elementi.
    Se pari, allora mi occorrono (elementi/10) pagine, mentre se dispari (elementi/10)+1 pagine.
    La rotta che utilizzo è: /guide/show/{pag}, dove {pag} è la pagina corrente.

    Come posso utilizzare una <select> <option> per poter navigare tra le pagine? ho provato in tutti i modi ma non ne funziona nessuno.

    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di stoneweb
    Registrato dal
    Jul 2016
    residenza
    San Mauro Torinese
    Messaggi
    150
    Io ti consiglierei di provare a usare JavaScript e metti un onchange sulla select che fa un location.href
    Work hard. Code harder.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    95
    Quote Originariamente inviata da stoneweb Visualizza il messaggio
    Io ti consiglierei di provare a usare JavaScript e metti un onchange sulla select che fa un location.href
    Ciao stoneweb, alla fine ho risolto con il php e mi funziona, ma ho un ultimo dubbio.

    Supponendo di avere 3 pagine di elementi, e di essere nella prima, quindi sulla rotta localhost:8000/guide/show/1 , come posso recuperare l'1 che viene dopo show/ ?
    Perché realizzo la <select><option> con un ciclo for, e vorrei far si che quando la variabile i del ciclo è uguale in questo caso ad 1, la option sia selected altrimenti no.
    Così per esempio fossimo nella pagina 2, si avrebbe solo la seconda option selected e le altre no.
    Ultima modifica di EziT90; 09-07-2019 a 16:53

  4. #4
    Utente di HTML.it L'avatar di stoneweb
    Registrato dal
    Jul 2016
    residenza
    San Mauro Torinese
    Messaggi
    150
    Per prendere l'ultimo segment della url usa qualcosa del genere

    codice:
    $segments = explode("/", parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
    $last_segment = array_pop($segments);
    Work hard. Code harder.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    95
    Quote Originariamente inviata da stoneweb Visualizza il messaggio
    Per prendere l'ultimo segment della url usa qualcosa del genere

    codice:
    $segments = explode("/", parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
    $last_segment = array_pop($segments);

    Ciao stoneweb, ho utilizzato il tuo codice in questo modo, ma ottengo come errore:
    codice:
    (1/1) FatalErrorException
    
    
    syntax error, unexpected '<'
    questo è il codice che ho utilizzato
    codice:
    <select name="url" onchange="location.href=this.value">
                      @for($i=0;$i< floor($elementi/10);$i++)
                        @if(array_pop(explode("/", parse_url({{$_SERVER['REQUEST_URI']}}, PHP_URL_PATH))))
                            <option value="http://localhost:8000/guide/show/{{$i+1}}" selected="true">{{$i+1}}</option>
                        else
                            <option value="http://localhost:8000/guide/show/{{$i+1}}">{{$i+1}}</option>
                        @endif
                        
                      @endfor
                  </select>
    Ultima modifica di EziT90; 10-07-2019 a 16:46

  6. #6
    Utente di HTML.it L'avatar di stoneweb
    Registrato dal
    Jul 2016
    residenza
    San Mauro Torinese
    Messaggi
    150
    Non puoi usare la doppia graffa all'interno di un if. La doppia graffa in Blade equivale a un "echo"
    Work hard. Code harder.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    95
    Quote Originariamente inviata da stoneweb Visualizza il messaggio
    Non puoi usare la doppia graffa all'interno di un if. La doppia graffa in Blade equivale a un "echo"
    Ciao, ho provato a togliere la doppia graffa nella if, ed aggiungere un controllo sulla variabile $i del ciclo,
    ma comunque continuo a non ottenere il risultato desiderato, ed ottengo l'errore:
    codice:
    (2/2) ErrorException
    Only variables should be passed by reference (View: C:\xampp\htdocs\vespisti\resources\views\Guide\Index.blade.php)
    il codice con il controllo sulla if è:
    codice:
    <select name="url" onchange="location.href=this.value">
                      @for($i=0;$i< floor($elementi/10);$i++)
                        @if(array_pop(explode("/", parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)))==($i+1))   //riga che mi genera l'errore citato
                            <option value="http://localhost:8000/guide/show/{{$i+1}}" selected="true">{{$i+1}}</option>
                        else
                            <option value="http://localhost:8000/guide/show/{{$i+1}}">{{$i+1}}</option>
                        @endif
                        
                      @endfor
                  </select>

  8. #8
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,510
    il problema è su array_pop: Questa richiede come parametro una reference ad una variabile (array), reference che non è applicabile al risultato di una funzione (explode). Quindi prima assegna la explode ad una variabile e poi la passi ad array_pop

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    95
    Quote Originariamente inviata da boots Visualizza il messaggio
    il problema è su array_pop: Questa richiede come parametro una reference ad una variabile (array), reference che non è applicabile al risultato di una funzione (explode). Quindi prima assegna la explode ad una variabile e poi la passi ad array_pop
    Ciao boots, ho seguito il tuo consiglio, ed ho impostato il codice in questo modo
    codice:
    @for($i=0;$i< floor($elementi/10);$i++)
                        $pop=explode("/", parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
                        @if(array_pop($pop)==($i+1))
                            <option value="http://localhost:8000/guide/show/{{$i+1}}" selected="true">{{$i+1}}</option>
                        else
                            <option value="http://localhost:8000/guide/show/{{$i+1}}">{{$i+1}}</option>
                        @endif
                      @endfor
    ma ottengo l'errore
    codice:
    (2/2) ErrorException
    array_pop() expects parameter 1 to be array, null given (View: C:\xampp\htdocs\vespisti\resources\views\Guide\Index.blade.php)
    sempre sulla riga riguardante l'if.
    So che è banale, ma non riesco a risolvere, qualcuno può postarmi il codice, così da poter capire dove sbaglio?

  10. #10
    Utente di HTML.it L'avatar di stoneweb
    Registrato dal
    Jul 2016
    residenza
    San Mauro Torinese
    Messaggi
    150
    Aspetta, secondo me anche la parte di $pop=explode non va bene messa lì così.
    prova così:

    codice:
    @for($i=0;$i< floor($elementi/10);$i++)
    	@if(array_pop(explode("/", parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)))==($i+1))
    			<option value="http://localhost:8000/guide/show/{{$i+1}}" selected="true">{{$i+1}}</option>
    		else
    			<option value="http://localhost:8000/guide/show/{{$i+1}}">{{$i+1}}</option>
    	@endif
    @endfor
    Work hard. Code harder.

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 © 2019 vBulletin Solutions, Inc. All rights reserved.