Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093

    [form] select multiple e xhtml strict

    salve a tutti,
    è giunto anche per me il momento di iniziare a sviluppare codice html validato ma oggi mentre stavo scrivendo una select a selezione multipla (<select multiple="multiple" ....>) ho cozzato contro un altro problema...
    in questi casi io ho sempre scelto come id della select un nome seguito dalle parentesi quadre aperte e chiuse come diceva il mio manuale (vecchio di 5 anni ), ma con mia grande sorpresa ho scoperto che questo sistema non rispetta l'xhtml strict

    come fare?

    ho usato questo sistema anche in altri ambiti, tipo per una serie di textfield a cui davo id tipo: campo[1], campo[2], campo[3] avendo il tutto sottoforma di array lato php, ma adesso non potendo utilizzare le quadre è diventato problematico anche lui

  2. #2
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    caspita... problema non da poco

    è tutto il giorno che cerco di risolverlo. Ho trovato questa funzione nei commenti di php.net


    codice:
    function repairPost($data) {
       // combine rawpost and $_POST ($data) to rebuild broken arrays in $_POST
       $rawpost = "&".file_get_contents("php://input");
       $qform = array();
       while(list($key,$value)= each($data)) {
    	   $pos = preg_match_all("/&".$key."=([^&]*)/i",$rawpost, $regs, PREG_PATTERN_ORDER);       
    	   if((!is_array($value)) && ($pos > 1)) {
    		   $qform[$key] = array();
    		   for($i = 0; $i < $pos; $i++) {
    			   $qform[$key][$i] = urldecode($regs[1][$i]);
    		   }
    	   } else {
    		   $qform[$key] = $value;
    	   }
       }
       return $qform;
    }
    
    $_POST = repairPost($_POST);
    questa funzione fa proprio quello che mi serve, cioè mi consente di omettere le [] alla fine di un select con multiple abilitato. Il problema è che questa funzione accede ai dati grezzi inviati via post, in altre parole accede alla variabile $HTTP_RAW_POST_DATA tramite gli stream predefiniti di php. Il problema è che questa variabile non è sempre disponibile... quando il content type della mia form è multipart/form-data, obbligatorio quando si deve inviare un file, questa variabile non viene popolata.

    In altre parole con questo sistema se devo mandare un file in una form con un select messo su multiple, sono fregato

    Questa mi sembra una bella limitazione di php... dovrebbe aggiornarsi un pochino ed evitarci questi workaround su componenti così a basso livello dei programmi.

    Attendo commenti

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