Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 29

Discussione: Problema con un select

  1. #11
    Facciamo così:
    Codice PHP:
    $select='<select name="scelta">';
    $scelta = array ( "Recenti""Più votati" );
    foreach ( 
    $scelta as $ordina )
       {
          
    $select.='<option value="' $ordina '">'.$ordina.'</option>';
       }
       
    $select.='</select>'
    Adesso ho solo un semplice select con ordina, il quale rappresenta solo una variabile che si applica a una query mysql dopo "ORDER BY". La pagina si apre correttamente e quando seleziono un'altro tipoo di ordine e premo invia per cofermare mi porta a questo link:
    ../?cerca=&ordina=Recenti&command=Vai
    Tuttavia se il link funzionante fosse semplicemente questo funzionerebbe alla perfezione:
    ../?ordina=Recenti&command=Vai

    Anche se mi basterebbe semplicemente fare una select che cambi la query, senza dare un'altro link alla pagina, visto che ho impostato una variabile che dipende da quella scelta, con Recenti impostato come default per il primo accesso.
    Come faccio a togliere quel ?cerca quando in tutta la pagina la parola cerca non esiste nemmeno?


  2. #12
    Ho provato a ricrearlo così:
    Codice PHP:
    <?php echo '<select name="ordina">';
    echo 
    '<option value="" disabled="disabled" selected="selected">Ordina</option>';
    for(
    $i=1$i<=2;$i++) { 
    echo 
    '<option value=".$ordina[$i].">'.$ordina[$i].'</option>'; } 
    echo 
    '</select>';?>
    Con questo PHP stampo un array contenente due campi: Recenti e Più Votati, tuttavia vorrei fare in modo che una volta selezionato il tipo di campo in automatico aggiorni la pagina con il nuovo ordine. Visto che sò farlo solo premendo un bottone.... Volevo sapere come potevo fare in modo che questa select aggiorni la pagina alla sola selezione del tipo di ordine scelto, senza cliccare su un bottone per l'invio dei dati. Grazie.


  3. #13
    Utente di HTML.it L'avatar di Enjix
    Registrato dal
    Apr 2012
    Messaggi
    57
    Per la prima domanda: Sicuro di non avere qualche tag form aperto?
    Per la seconda soluzione, potresti usare javascript

  4. #14
    Ho postato nella sezione java-script, per capire se il problema potesse essere quello. Lo script adesso invia i dati, ma non modifica nella query la variabile $ordina.
    Vi posto il risultato e ve lo commento:
    Codice PHP:
    //comunico al server di ordinare i risultati per Data, qualora non fosse selezionato nulla(anzichè per chiave primaria e quindi ID nel mio caso)
    $ordina = isset($_REQUEST['ordina']) ? $_REQUEST['ordina'] : "Data";
    //imposto la variabile $ordina per la visualizzazione dei risultati
    $query = .. ORDER BY $ordina ASC
    Ora posto il codice della form:
    codice:
    <form name=ordina action=pagina3.php>
     <select name="ordina" onchange="this.form.submit()">
      <optgroup label="ordina">
       <option value="Recenti">Recenti</option>
       <option value="Più Votati">Più Votati</option>
      </optgroup>
     </select>
    <input type="submit" name="ordina" value="Vai"/>
    </form>
    Quello che vi chiedo è come faccio a trasformare questa form, in maniera che alla scelta di un nuovo tipo di ordine, il valore di $ordina cambi? Notate che non ho impostato la form per avere un nuono valore di $ordina, perchè tutto quell oceh ho fatto fino ad ora non ha funzionato.


  5. #15
    Utente di HTML.it L'avatar di Enjix
    Registrato dal
    Apr 2012
    Messaggi
    57
    Al posto di usare una form, potresti solo usare la select e gestire la cosa con javascript tramite la proprietà href del location. Avevo pensato a questo codice
    Codice PHP:
    <script type="text/javascript">
    function 
    ordina(filtro)
    {
    location.href "pagina3.php?ordina="+filtro;
    }
    </script>
     <select id="ordina">
      <optgroup label="ordina">
       <option value="Recenti">Recenti</option>
       <option value="Più Votati">Più Votati</option>
      </optgroup>
     </select>
    <button onclick="ordina(document.getElementById('ordina').value)"/>Vai</button> 
    Altrimenti, per una modifica "al volo", gestirei la situazione con Ajax.

  6. #16
    Grazie per la risposta. L'ho provato ma il problema rimane sempre lo stesso. Probabilmente perchè io ho "ordinato" al server di ordinare secondo variabile $ordina, e con questo sistema il metodo non è più valido. Mi chiedevo invece se non esistesse un modo, dopo aver creato la select di ordinare al server di prendere quello che vede.
    Esempio: io ho una select e scelgo Data, il server successivamente stabilisce che la nuova select Data diventa uguale a $ordina, in questo modo cambia l'ordine dei risultati della pagina.
    In realtà Data è già impostato, in quanto con questo comando:
    Codice PHP:
    $ordina = isset($_REQUEST['ordina']) ? $_REQUEST['ordina'] : "Data"
    Data viene messo come filtro di default se non vi è nulla di selezionato, quindi devo solo cambiare lavariabile $ordina che è messa in ORDER BY.
    codice:
    <select id="ordina">
      <optgroup label="ordina">
       <option value="Recenti">Recenti</option>
       <option value="Votati">Più Votati</option>
      </optgroup>
     </select> 
    <button onclick="ordina(document.getElementById('ordina').value)"/>Vai</button>
    Questa form andrebbe pure bene, ma vorrei fare una modifica che però non sò come si faccia, ovvero vorrei ordinare alla funzione onclick di creare un uguaglianza fra il valore scelto $ordina.
    In pratica vorrei dire che il nuovo option value scelto diventa uguale alla variabile $ordina, quindi è come se scrivessi Votati = $ordina, e di conseguenza la query si modificherebbe da ORDER BY Data in ORDER BY Votati.
    Purtroppo non ho ancora capito come si fà e stò cercando su tutto google ma non trovo nulla, e dopo aver fatto 1000 modifiche al codice non sò più che pesci pigliare.

    Per quanto riguarda questo codice java-script:
    codice:
    <script type="text/javascript">
    function ordina(filtro)
    {
    location.href = "pagina3.php?ordina="+filtro;
    }
    Credo che possa essere molto valido, ma mi chiedo se esista un comando per impostare quel "filtro" come uguale a $ordina. Non esiste una funzione per creare un'uguaglianza?


  7. #17
    Utente di HTML.it L'avatar di Enjix
    Registrato dal
    Apr 2012
    Messaggi
    57
    Originariamente inviato da _Marco_87
    Grazie per la risposta. L'ho provato ma il problema rimane sempre lo stesso. Probabilmente perchè io ho "ordinato" al server di ordinare secondo variabile $ordina, e con questo sistema il metodo non è più valido. Mi chiedevo invece se non esistesse un modo, dopo aver creato la select di ordinare al server di prendere quello che vede.
    Esempio: io ho una select e scelgo Data, il server successivamente stabilisce che la nuova select Data diventa uguale a $ordina, in questo modo cambia l'ordine dei risultati della pagina.
    In realtà Data è già impostato, in quanto con questo comando:
    Codice PHP:
    $ordina = isset($_REQUEST['ordina']) ? $_REQUEST['ordina'] : "Data"
    Data viene messo come filtro di default se non vi è nulla di selezionato, quindi devo solo cambiare lavariabile $ordina che è messa in ORDER BY.
    codice:
    <select id="ordina">
      <optgroup label="ordina">
       <option value="Recenti">Recenti</option>
       <option value="Votati">Più Votati</option>
      </optgroup>
     </select> 
    <button onclick="ordina(document.getElementById('ordina').value)"/>Vai</button>
    Questa form andrebbe pure bene, ma vorrei fare una modifica che però non sò come si faccia, ovvero vorrei ordinare alla funzione onclick di creare un uguaglianza fra il valore scelto $ordina.
    In pratica vorrei dire che il nuovo option value scelto diventa uguale alla variabile $ordina, quindi è come se scrivessi Votati = $ordina, e di conseguenza la query si modificherebbe da ORDER BY Data in ORDER BY Votati.
    Purtroppo non ho ancora capito come si fà e stò cercando su tutto google ma non trovo nulla, e dopo aver fatto 1000 modifiche al codice non sò più che pesci pigliare.

    Per quanto riguarda questo codice java-script:
    codice:
    <script type="text/javascript">
    function ordina(filtro)
    {
    location.href = "pagina3.php?ordina="+filtro;
    }
    Credo che possa essere molto valido, ma mi chiedo se esista un comando per impostare quel "filtro" come uguale a $ordina. Non esiste una funzione per creare un'uguaglianza?

    In questo specifico caso, filtro dovrebbe avere due valori, dipendenti dalla value della tua select. Per intendermi meglio:
    - se scegli Recenti la variabile filtro assumerà valore Recenti, quindi avrai un link di questo genere (mettiamo il caso che pagina3.php sia nella root del tuo server) www.dominio.ext/pagina3.php?ordina=Recenti
    - se scegli Più Votati la variabile filtro assumerà valore Votati, quindi avrai un link di questo genere www.dominio.ext/pagina3.php?ordina=Votati

    Di conseguenza dovresti già avere settato ordina e gestire quest'ultima come $_GET['ordina'] o l'equivalente $_REQUEST['ordina'], quindi avere già il valore Recenti e Votati nella tua variabile $ordina a seconda della tua scelta

  8. #18
    No, non ho settato così In effetti il problema è propio che non riesco a settarlo in quel modo, altrimenti riuscirei a visualizzzare i risultati. Comunque forse dovrei creare una select dentro il php e fare un print nella pagina, per trattare subito il valore. Ci provo, comunque ancora non và.

  9. #19
    Utente di HTML.it L'avatar di Enjix
    Registrato dal
    Apr 2012
    Messaggi
    57
    Cosa ottieni? Che link ti da?

    Comunque, pensando che fosse un mio errore, ho provato questo codice:

    Codice PHP:
    <?php
    $ordina 
    = (isset($_REQUEST['ordina'])) ? $_REQUEST['ordina'] : "";
    echo 
    $ordina;
    ?>
    <script type="text/javascript">
    function ordina(filtro)
    {
    location.href = "pagina3.php?ordina="+filtro;
    }
    </script>
    <select id="ordina">
      <optgroup label="ordina">
       <option value="Recenti">Recenti</option>
       <option value="Votati">Più Votati</option>
      </optgroup>
     </select> 
    <button onclick="ordina(document.getElementById('ordina').value)"/>Vai</button>
    E funziona.
    Hai una pagina online dove si può provare cosa esce? Se la risposta è affermativa, e se vuoi, mandami un messaggio privato con il link

  10. #20
    La pagina non è online al momento, quando risolvo questi problemi la metto online.
    Il problema è che a te esce perchè non hai una query che filtra i dati con ORDER BY $ordina.
    Prova a creare la query e a mettere alla fine ORDER BY $ordina e dimmi se ti funziona lo stesso, perchè a me l'unica cosa che funziona è i lvalore predefinito che la pagina ha quando non è selezionato nulla. Prova e poi fammi sapere.


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.