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

    la select per prendere dati da un campo ENUM va all'infinito

    Ciao a tutti, ho una tabella su un DB mySql con un campo ENUM. Ho usato una funzione trovata in rete per andare a prendere i valori del suddetto campo, ma poi quando ho creato la select in maniera molto ingarbugliata come risultato mi dà ogni valore dell'enum ripetuto due volte nella tendina e tutti i valori insieme ripetuti una dozzinadi volte. in più mi si impalla il browser, non riesce a caricare del tutto la pagina e va in crash. Probabilmente mi suggerirete di studiarmi il php su una guida, ma l'ho già fatto e non ci ho capito granché di più ....

    ecco il codice, aspetto le vostre legnate e i vosti suggerimenti :-)

    codice:
    function enum_select($table,$field) {
        $result=mysql_query("SHOW COLUMNS FROM `$table` LIKE '$field'");
        if(mysql_num_rows($result)>0){
            $row=mysql_fetch_row($result);
            $options=explode("','", preg_replace("/(enum|set)\('(.+?)'\)/","\\2", $row[1]));
            $options2 = array();
            foreach ($options as $value) {
                $options2[] = array(
                    'value' => $value,
                    'display' => htmlentities($value)
                );
            }
            echo "
    
    ";
            print_r($options2);
    	#echo $options2;
        } else {
            $options=array();
        }
        return $options2;  
    }
    
    echo "
    			<select name=\"scegli_tipo\">
    		";
    while ($matrioshka_tipo = enum_select("opera","opera_tipo")){
    		 foreach ($matrioshka_tipo as $array_interno)
    			foreach ($array_interno as $valore)
    		if (isset($_POST["scegli_tipo"]) && $_POST["scegli_tipo"] == $valore)
    		 echo "<option value='{$valore}' selected='selected'>{$valore}</option>";
    		else
    		 echo "<option value='{$valore}'>{$valore}</option>";*/
    		}
    echo "</select>";

  2. #2
    mi rispondo da solo

    eliminando il while si elimina la continua ripetizione dei valori.

    I valori rimanevano però ripetuti due volte ognuno, a quel problema ho ovviato modificando l'array $options2 nella funzione: ho tolto la chiave 'display' e ogni valore è dato solo una volta.

    ecco il codice:

    Codice PHP:
    function enum_select($table,$field) {
        
    $result=mysql_query("SHOW COLUMNS FROM `$table` LIKE '$field'");
        if(
    mysql_num_rows($result)>0){
            
    $row=mysql_fetch_row($result);
            
    $options=explode("','"preg_replace("/(enum|set)\('(.+?)'\)/","\\2"$row[1]));
            
    $options2 = array();
           foreach (
    $options as $value) {
                
    $options2[] = array(
                    
    'value' => $value
                
    );
            }
            echo 
    "

    "
    ;
            
    print_r($options2);
        
        foreach (
    $options as $value
        echo 
    $value;
        
        } else {
            
    $options=array();
        }
        return 
    $options2;  
    }

            
    $matrioshka_tipo enum_select("opera","opera_tipo");
             foreach (
    $matrioshka_tipo as $array_interno)
                foreach (
    $array_interno as $valore)
            if (isset(
    $_POST["scegli_tipo"]) && $_POST["scegli_tipo"] == $valore)
             echo 
    "<option value='{$valore}' selected='selected'>{$valore}</option>";
            else
             echo 
    "<option value='{$valore}'>{$valore}</option>"

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.