problemi con funzione per stampare tendina per data

odisseo83

Nuovo Utente
14 Apr 2010
6
0
0
ciao a tutti, ho problemi con una funzione che mi stampa tre tendine coi valori per inserire la data di sottomissione di un testo.

Ho creato una funzione che stampa la form per inserire diversi valori tra cui il testo di articoli vari.
Per inserire la data, all'interno di questa form ho inserito questa funzione che ho trovato:

PHP:
function stampa_select_option_date($par, $par_giorno, $par_mese, $par_anno, $par_for_start, $par_for_end) {



	echo "<select name=\"{$par}_giorno\" style=\"width: 50px\">";

	echo "<option></option>";

	for($g = 1; $g <= 31; $g++) {

	

		if(!ereg("^([0-9]{2,2})$", $g))

			$g_value = "0" . $g;

		else

			$g_value = $g;

	

		if($par_giorno != "" && $par_giorno == $g)

			echo "<option value=\"{$g_value}\" selected=\"selected\">{$g}</option>";			

		else

			echo "<option value=\"{$g_value}\">{$g}</option>";

	}

	echo "</select>";



	echo " ";



	$array_mesi = array("Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre");



	echo "<select name=\"{$par}_mese\" style=\"width: 75px\">";

	echo "<option></option>";

	for($m = 1; $m <= 12; $m++) {

	

		if(!ereg("^([0-9]{2,2})$", $m))

			$m_value = "0" . $m;

		else

			$m_value = $m;

		

		if($par_mese != "" && $par_mese == $m)

			echo "<option value=\"{$m_value}\" selected=\"selected\">{$array_mesi[$m-1]}</option>";			

		else

			echo "<option value=\"{$m_value}\">{$array_mesi[$m-1]}</option>";

	}

	echo "</select>";



	echo " ";



	echo "<select name=\"{$par}_anno\" style=\"width: 75px\">";

	echo "<option></option>";

	for($a = date("Y") - $par_for_start; $a <= date("Y") + $par_for_end; $a++) {

		if($par_anno != "" && $par_anno == $a)

			echo "<option selected=\"selected\">{$a}</option>";			

		else

			echo "<option>{$a}</option>";

	}			

	echo "</select>";

}

il problema è : _quando voglio passare i valori al DB

PHP:
$giorno_trim = $_POST['{$par}_giorno'];
$mese_trim = $_POST['{$par}_mese'];
$anno_trim = $_POST['{$par}_anno'];
$data_DB = $anno_trim."-".$mese_trim."-".$giorno_trim;

ho fatto così ma mi dice che sono undefined index

-quando voglio inserire i valori 'value' delle select tra i parametri della funzione che stampa la form

PHP:
stampa_form($titolo, $tipo, $soggetto, $g_value, $m_value, $a, $testo);

inserendo questi valori se sbaglio a compilare la form non mi restituisce nessun valore nelle tendine della data.

come faccio?

Grazie a tutti quelli che mi risponderanno!
 
ciao
da dove provengono i $_POST

$giorno_trim = $_POST['{$par}_giorno'];
$mese_trim = $_POST['{$par}_mese'];
$anno_trim = $_POST['{$par}_anno'];
$data_DB = $anno_trim."-".$mese_trim."-".$giorno_trim;
?
e come valorizzi la variabile $par?
 
Non sono stato a leggere tutto, comunque...
PHP:
$_POST['{$par}_anno'];
non andrà mai.
Per funzionare la digitura corretta è:
PHP:
$_POST[$par . '_anno'];
, o se proprio ti piacciono le parentesi graffe:
PHP:
$_POST["{$par}_anno"];
.

L'apice singolo non parsa mai le variabili.
 
Ultima modifica:
da dove provengono i $_POST?

sono il name delle varie select all'interno della funzione che le stampa.

e come valorizzi la variabile $par?

Bella domanda. Ho semplicemente incollato la funzione senza preoccuparmene.

non andrà mai.
Per funzionare la digitura corretta è:

PHP:
$_POST[$par . '_anno'];

funziona! Inserisce i dati nel db. Grazie jan 267!
 
Ultima modifica:
ora però ho un altro problema. Avevo già detto che la funzione
PHP:
stampa_select_option_date($par, $par_giorno, $par_mese, $par_anno, $par_for_start, $par_for_end);
è dentro un'altra funzione che stampa una form. Questa funzione è la seguente:

PHP:
function stampa_form($titolo, $tipo, $soggetto, $g_value, $m_value, $a, $testo){

i valori
PHP:
 $g_value, $m_value, $a,
riguardano la data, precisamente sono i valori che nella funzione stampa_select_option_date che riportavo nel primo post della discussione indicano i value degli <option>.
devo aver sbagliato a inserire quelli come parametri perché non mi ridà i valori già digitati nella form nelle tendine della data se sbaglio ad inserire qualche valore negli altri campi della form.

Inoltre se il testo dello scritto da inserire è lungo non me lo inserisce nel DB, il testo l'avevo inserito nel DB mysql come longtext not null
 
Inoltre se il testo dello scritto da inserire è lungo non me lo inserisce nel DB, il testo l'avevo inserito nel DB mysql come longtext not null

longtext memorizza fino a 4 GB, quindi il problema non può essere nel db, non è che hai impostato un limite di lunghezza nell'area di testo?
 
no, ho scoperto ora che lo inceppavano gli apici, così ho sistemato il valore del testo con addslashes($string); e funziona.

Rimane insoluto il problema parametri.
 

Discussioni simili