Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [php]: i campi radio se nulli non passano dalla querystring

    Ho realizzato un applicativo in php per la mia collezione di films, in questo ho realizzato una maschera di ricerca. La maschera di ricerca contiene i seguenti campi:
    box per il titolo
    box per il genere e due
    radio per il tipo di disco.

    Ecco il problema, se faccio la ricerca per titolo o per genere, la query ha esito positivo, ovvero mi restituisce i films in archivio, ma insieme al risultato della query mi da anche un'errore:

    Notice: Undefined index: tipo_disco in c:\www\fermon\rs_films.php on line 49

    questo perché non ho compilato il campo tipo_disco, se invece faccio una ricerca per solo tipo_disco o tipo_disco + titolo o categoria, allora tutto funziona perfettamente.

    I campi radio se sono nulli non figurano nella barra degli indirizzi, compaiono solo se uno dei due viene checcato.


    Come posso fare per risolvere il problema?

    Grazie,
    ciao.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    46
    Se ti vai a vedere le specifiche HTML per i form noterai che le variabili post il browser deve spedirle SOLO se hanno successo. Ciò significa per i radio input o per i checkbox che devono essere checkati altrimenti non hai la variabile.

    http://www.w3.org/TR/REC-html40/interact/forms.html

    Un modo per risolvere il problema potrebbe essere questo:
    nello script che riceve i POST sai già che variabili dovrebbero arrivarti, quindi ipotizzando che in $_POST ci siano 'var1' e 'var2':

    codice:
    // copio post
    $in = $_POST;
    
    // se non esiste la chiave la setto come vuota.
    if (!array_key_exists('var1' $in)) $in['var1'] = null;
    if (!array_key_exists('var2' $in)) $in['var2'] = null;
    oppure sapendo tutte le chiavi che ti arrivano:

    codice:
    // array che contiene tutte le variabili che dovrebbero arrivare
    $dummy = array('var1', 'var2);
    
    // copio post
    $in = $_POST;
    
    //ciclo i nomi delle variabili
    foreach($dummy as $key)
    {
        if (!array_key_exists($key, $in)) $in[$key] = null;
    }
    oppure ancora potresti risolvere la cosa lato HTML.
    Nel form PRIMA dell'input radio metti un input hidden con lo stesso nome:

    codice:
    <input type="hidden" name="var1" value="default"...>
    <input type="radio" name="var1" ...>
    Se selezioni il radio la variabile POST var1 è sovrascritta altrimenti ha il valore di value che hai settato nell'input hidden.

    Ciao
    Yuri

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    534

    Re: [php]: i campi radio se nulli non passano dalla querystring

    Originariamente inviato da Bartjsp
    I campi radio se sono nulli non figurano nella barra degli indirizzi, compaiono solo se uno dei due viene checcato.


    Come posso fare per risolvere il problema?

    ciao.
    codice:
    $tipo_disco = isset($_GET['tipo_disco']) ? $_GET['tipo_disco'] : '' ;

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.