Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29

Discussione: Problema con un select

  1. #1

    Problema con un select

    Salve a tutti, ho un problema con questa select, anche se a dire il vero il problema si manifesta qualsiasi cosa faccia:

    Codice PHP:
    $scelta = array ( "Recenti" "Più venduti" "Più votati" ) ;
    foreach ( 
    $scelta as $ordina )
       {
          
    $select.='<option value="' $_SERVER['PHP_SELF'] . '?Ordina per=' $ordina '"' . ($ordina==$scelta ' selected="selected" ' ' ') . ">".$ordina."</option>";
       }
    $select.='</select>';

    $scelta=' ' $select ' <input type="submit" name="command" value="Vai"/>'
    Adesso il problema è che quando si seleziona il comando desiderato mi ritrovo con un link risultante così:

    ?cerca=&Ordina=Recenti&command=Vai

    La mia domanda è ovviamente: in che cosa sbaglio?
    Da notare che non ho mai inserito il comando cerca, visto che la pagina ha 2 parole di ricerca fisse... Da dove viene presa la parola? Inoltre quel comando è vuoto e non sò a cosa si riferisca.
    Vorrei semplicemente creare una select per quei campi. Grazie in anticipo.


  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    "mi ritrovo" cosa vuol dire esattamente? ti direi...

    - posta le intestazioni del form (tag apertura FORM completo)
    - apri l'html generato e posta qui il tag OPTION completo generato (uno di esempio)

    in generale consiglierei di modificare l'impostazione, perchè passare direttamente un url come valore di un option non è la cosa più opportuna: sarebbe meglio passare i parametri necessari a costruire l'indirizzo da richiamare, da comporre però direttamente in php

  3. #3
    Ciao, garzie per la risposta, comunque lo stavo provando in una pagina vuota, ovvero stavo solo verificando il funzionamento è c'è poco php, comuquq ti posto quello che non ho postato, così lo vedi:
    Codice PHP:
     //configurazioni per l'accesso al database (username, password, ecc)
    $Trova "'%".mysql_escape_string(prova). "%'";
    $ordina = isset($_REQUEST['ordina']) ? $_REQUEST['ordina'] : "Recenti";
    //query per estrarre i dati
    $scelta = array ( "Recenti" "Più venduti" "Più votati" ) ;
    foreach ( 
    $scelta as $ordina )
       {
          
    $select.='<option value="' $_SERVER['PHP_SELF'] . '?Ordina per=' $ordina '"' . ($ordina==$scelta ' selected="selected" ' ' ') . ">".$ordina."</option>";
       }
    $select.='</select>';

    $scelta=' ' $select ' <input type="submit" name="command" value="Vai"/>'
    E' questo è tutto il php della pagina. Come si può vedere ancora non dò un valore ai nomi della select, se non quello di configurarli come un semplice link di riferimento. Visto che però il link me lo sbaglia e io non conosco l'errore, non gli assegno un vero e propio valore.


  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    però ti dicevo di aprire il file e visualizzare il codice dal browser e postare l'html generato, non il php generatore... vedi un po'...

    posta anche l'url della pagina (eventualm. maschera solo il dominio, ma lascia il path completo)

  5. #5
    Ok, scusa non avevo capito. Ecco qui quello che stampa la pagina:
    codice:
    <select name="scelta"><option value="Recenti" selected="selected">Recenti</option><option value="PIù venduti">Più venduti</option><option value="Più votati">Più votati</option></select><input type="submit" name="command" value="Vai"/>

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    mah... provando non mi succede nulla di strano: completa i tag con FORM e con l'opportuna action e dovrebbe funzionare

  7. #7
    Il problema non è che non mi fà l'action, ma che mi porta ad una pagina che porta il link del sito e poi un '?cerca=', che non esiste nemmeno. A te non succede? Se ad esempio io ho nella pagina 5 record, quando clicco per ordinarli mi segna 0 record.
    Farò qualche ricerca su google, vediamo se mi trova magari una soluzione.

  8. #8
    Guardando un pò qua e là ho pensato di sistemare magari inserendo il tutto direttamente nella query di ricerca:
    Immagino che aggiungendo alla query " ORDER BY ' " . $ordina . " ' " ottengo fin da subito una query di ricerca con un filtro sull'ordine. Il vero problema è che non sò come impostare esattamente il tutto. Ad esempio, grazie alla select il valore $ordina cambierà a seconda della scelta, quindi se seleziono Recenti, la query diventerà ORDER BY data DESC , così facendo prenderà i valori con data più recente, giusto?
    Ma questa è veramente la strada giusta? Fatemi sapere!


  9. #9
    Ok, ho sistemato un pochino, e adesso funziona ogni tipo di filtro, ma se voglio cambiarlo mi ritrovo sempre il solito errore, il link risultante è questo:
    ?cerca=&scelta=Data&command=Vai, il che appare molto strano, non riesco a capire cosa c'è ch enon và. Questo in vece e l'array per la scelta del filtro:
    Codice PHP:
    $select='<select name="scelta">';
    $scelta = array ( "Recenti""Più votati" );
    foreach ( 
    $scelta as $ordina )
       {
          
    $select.='<option value="' $ordina '"' . ($ordina==$scelta ' selected="selected" ' '') . '">'.$ordina.'</option>';
       }
       
    $select.='</select>'
    Cosa ha di sbagliato questa select? Per quale motivo non mi fà cambiare il tipo di filtro, ma se inverto l'ordine fra recenti e più votati in questo modo: '$scelta = array ( "Più votati", "Recenti" );' mi cambia correttamente il tipo di filtro iniziale? Insomma, per quale motivo questa select non mi cambia il tipo di filtro? Avete un select che funzioni, oppure sapete dirmi cosa sbaglio? Grazie!


  10. #10
    Originariamente inviato da _Marco_87
    Ok, ho sistemato un pochino, e adesso funziona ogni tipo di filtro, ma se voglio cambiarlo mi ritrovo sempre il solito errore, il link risultante è questo:
    ?cerca=&scelta=Data&command=Vai, il che appare molto strano, non riesco a capire cosa c'è ch enon và. Questo in vece e l'array per la scelta del filtro:
    Codice PHP:
    $select='<select name="scelta">';
    $scelta = array ( "Recenti""Più votati" );
    foreach ( 
    $scelta as $ordina )
       {
          
    $select.='<option value="' $ordina '"' . ($ordina==$scelta ' selected="selected" ' '') . '">'.$ordina.'</option>';
       }
       
    $select.='</select>'
    Cosa ha di sbagliato questa select? Per quale motivo non mi fà cambiare il tipo di filtro, ma se inverto l'ordine fra recenti e più votati in questo modo: '$scelta = array ( "Più votati", "Recenti" );' mi cambia correttamente il tipo di filtro iniziale? Insomma, per quale motivo questa select non mi cambia il tipo di filtro? Avete un select che funzioni, oppure sapete dirmi cosa sbaglio? Grazie!

    Veramente non comprendo ciò che stai dicento
    In ogni caso cos'è questo?

    Codice PHP:
    ... $ordina==$scelta ... 
    Stai confrontando un elemento dell'array con l'array che lo contiene?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.