Inviare variabili da menu a tendina a pagina php con post

  • Creatore Discussione Creatore Discussione Max61
  • Data di inizio Data di inizio

Max61

Utente Attivo
2 Mar 2014
760
4
18
Buongiorno, ho trovato in rete uno script per prendere due parametri dal DB con un menu a tendina, ora il problema nasce nell'invio dati ad una pagina php con post, perchè nella pagina che dovrebbe recuperare il dato non so quale variabile passargli visto che è un dato composto da due variabili.
Ho fatto alcune prove ma è sempre vuoto
PHP:
Seleziona l'auto
<BODY>
<?php
require "Connessione.php";

mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES utf8");
function removeslashes ( $modelloauto )
{
$modelloauto = implode ( "" , explode ( "\\" , $modelloauto ));
return stripslashes ( trim ( $modelloauto ));
}

$query = "SELECT * FROM tblauto";
$result = mysql_query ($query);

// qui ti prepari il codice della select
$select_code = '<FORM NAME="myForm"><SELECT NAME="mySelect" onChange="changePopup(this.selectedIndex)">';

// qui invece il codice con tutti i dati
$div_code = '';

// acquisisci i dati
$count = 0;
$select_code .= "<option value =''>Seleziona</OPTION>";
while ($line = mysql_fetch_array ($result))
{


   // aggiungi i dati che preferisci in $select_code
        $modelloauto=$line['modelloauto'];
        $modelloauto = iconv('UTF-8', 'windows-1252', $modelloauto);
        $modelloauto= addslashes($line['modelloauto']);
        mysql_query("SET CHARACTER SET utf8");
        mysql_query("SET NAMES utf8");
        
   $select_code .= '<OPTION>' . $line['modelloauto'] . ' - ' . $line['targa_auto'] . '</OPTION>';

   // ... e qui tutti i dati del relativo cliente
   $div_code .= '<DIV ID="layer' . $count++ . '" STYLE="display:none"></DIV>';
}

// chiudi la select e stampa
$select_code .= '</SELECT></FORM>';
echo ($select_code);
echo ($div_code);
?>
a questo punto recuperati i dati 'modelloauto e targa_auto' li vorrei inviare tramite post, ma non li invia...dove sbaglio?
Grazie per l'aiuto
Max61
 
dove sbaglio?

PHP:
<?php
/**********************************
* DA INSERIRE NEL FILE UTILITY
*/
function operation_string($params=[],$type='concat',$t_concat='_'){
    switch($type){
        case 'concat':return join($t_concat,$params);
                break;
        default: return explode($t_concat,$params);
    }
}
?>
<!-- QUESTO É IL TEMPLATE DA GENERARE -->
<select name="nome_select">
    <?php
        foreach($mysql_result as $k=>$v){
            ?>
            <option value="<?php echo operation_string([$v['marca'],$v['modello'])?>"><?php echo $v['marca'].' '.$v['modello'];?></option>
            <?php
        }
    ?>
</select>
<?php
/******************PAGINA POST*/
    if($_POST['name_select']){
      
        list($marca,$modello)=operation_string($_POST['name_select'],'');
      
    }
 
Ciao Macus_Adi e grazie per la risposta, ti chiedo cosa vuol dire 'DA INSERIRE NEL FILE UTILITY', che devo fare un'altra pagina con questo codice? Oppure va inserito nella select del menu a tendina? Oppure...
Grazie e scusa per la mia inesperienza
Max61
 
Nella pagina dove stampi la select includi il file Connessione.php, allo stesso modo dovresti includere uno o più file utility (naturalmente se ne hai) che "altro non sono dei coltellini svizzeri di codici".... detto questo:
File utility.php
PHP:
/**********************************
* DA INSERIRE NEL FILE UTILITY
*/
function operation_string($params=[],$type='concat',$t_concat='_'){
    switch($type){
        case 'concat':return join($t_concat,$params);
                break;
        default: return explode($t_concat,$params);
    }
}
Il tuo file di select
Codice:
<?php
include_once "COnnessione.php";
include_once "utility.php"
?>
<!-- QUESTO É IL TEMPLATE DA GENERARE -->
<select name="nome_select">
    <?php
        foreach($mysql_result as $k=>$v){
            ?>
            <option value="<?php echo operation_string([$v['marca'],$v['modello'])?>"><?php echo $v['marca'].' '.$v['modello'];?></option>
            <?php
        }
    ?>
</select>

pagina post:
PHP:
if($_POST['name_select']){
      
        list($marca,$modello)=operation_string($_POST['name_select'],'');
      
    }
 
Grazie, ho provato lo script, ma la select è vuota, non recupera nessun dato dal DB, ho aggiunto una parentesi ] in questa riga altrimenti non funzionava, mica sarà per questo?
PHP:
<option value="<?php echo operation_string([$v['marca'],$v['modello'])?>"><?php echo $v['marca'].' '.$v['modello'];?></option>
il codice completo
PHP:
include_once "Connessione.php";
include_once "utility.php";
   
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES utf8");
function removeslashes ( $modelloauto )
{
$modelloauto = implode ( "" , explode ( "\\" , $modelloauto ));
return stripslashes ( trim ( $modelloauto ));
}

$query = "SELECT * FROM tblauto";
$result = mysql_query ($query);

?>
<!-- QUESTO É IL TEMPLATE DA GENERARE -->
<select name="nome_select">
    <?php
        foreach($result as $k=>$v){
   ?>
<option value="<?php echo operation_string([$v['modelloauto'],$v['targa_auto']])?>"><?php echo $v['modelloauto'].' '.$v['targa_auto'];?></option>
   <?php
        }
    ?>
</select>
 
ma l'avevo già messo, almeno mi sembra che vada bene
PHP:
$query = "SELECT * FROM tblauto";
$result = mysql_query ($query);
mentre il codice che mi hai suggerito
PHP:
$result=mysqli_fetch_all($query,MYSQLI_ASSOC);
da questo errore
Warning: mysqli_fetch_all() expects parameter 1 to be mysqli_result, string given in C:\xampp\htdocs\prenotazioneauto\views\SelezioneAuto.php on line 149
 

Discussioni simili