Newsgroup: it.comp.www.php
Titolo: Non so più che fare, chi mi aiuta plis?

Invio questo codice sperando che qualcuno trovi cosa non va.
Form1 invia i dati a form2 tramite uno switch basato su una <select>,
il contenuto dei campi passa in tutti i casi tranne che nell'ultimo
(cioè "Interno"). Io ci sono diventato più scemo di quanto non fossi
già prima ma non riesco proprio a capire cosa non va.
Grazie per l'eventuale aiuto.
--------
form1
--------
switch($tipo_aut_mov)
	{
	case "-":
		hidden("autore_mov", "-");
		break;
	case "Mittente":
		hidden("autore_mov", "Mittente");
		break;
	case "Ns._mezzo":
		echo "<div align=\"center\"><b><font color=\"#FF0000\">AUTORE
MOVIMENTO</font></b><br><br>";
		echo "Mezzo&nbsp;<input name=\"mezzo_mov\" type=\"text\"
size=\"10\" value=\"-\">&nbsp;&nbsp;&nbsp;";
		echo "Selezionare un subvettore&nbsp;";
		$sql = "select corriere from appr_corriere order by corriere";
		$query = mysql_query($sql);
		$num_rows = mysql_num_rows($query);
		echo "<select name=\"corriere\">";
			echo "<option>-</option>";
			for($i = 1; $i <= $num_rows; $i++)
				{ $row_corriere = mysql_fetch_row($query);
				echo "<option>" . dec($row_corriere[0]) . "</option>"; }
		echo "</select>&nbsp;o inserirne uno nuovo&nbsp;";
		echo "<input name=\"corriere_new\" type=\"text\" size=\"30\"
value=\"-\"></div>";
		break;
	case "Corriere":
		echo "<div align=\"center\"><b><font color=\"#FF0000\">AUTORE
MOVIMENTO</font></b><br><br>";
		echo "Selezionare un vettore&nbsp;";
		$sql = "select corriere from appr_corriere order by corriere";
		$query = mysql_query($sql);
		$num_rows = mysql_num_rows($query);
		echo "<select name=\"corriere\">";
			echo "<option>-</option>";
			for($i = 1; $i <= $num_rows; $i++)
				{ $row_corriere = mysql_fetch_row($query);
				echo "<option>" . dec($row_corriere[0]) . "</option>"; }
		echo "</select>&nbsp;o inserirne uno nuovo&nbsp;";
		echo "<input name=\"corriere_new\" type=\"text\" size=\"30\"
value=\"-\"></div>";
		break;
	case "Interno":
		echo "<div align=\"center\"><b><font color=\"#FF0000\">AUTORE
MOVIMENTO</font></b><br><br>";
		echo "Mezzo&nbsp;<input name=\"mezzo_mov\" type=\"text\"
size=\"10\" value=\"-\">&nbsp;&nbsp;&nbsp;";
		echo "Selezionare un autista&nbsp;";
		$sql = "select autista from appr_autista order by autista";
		$query = mysql_query($sql);
		$num_rows = mysql_num_rows($query);
		echo "<select name=\"autista\">";
			echo "<option>-</option>";
			for($i = 1; $i <= $num_rows; $i++)
				{ $row_autista = mysql_fetch_row($query);
				echo "<option>" . dec($row_autista[0]) . "</option>"; }
		echo "</select>&nbsp;o inserirne uno nuovo&nbsp;";
		echo "<input name=\"autista_new\" type=\"text\" size=\"20\"
value=\"-\"></div>";
	}
--------
form2
--------
switch($_POST['tipo_aut_mov'])
	{
	case "-":
		$aut_mov = "-";
		$mezzo_mov = "-";
		break;
	case "Mittente":
		$aut_mov = "Mittente";
		$mezzo_mov = "-";
		break;
	case "Ns._mezzo" or "Corriere":
		if(($_POST['corriere_new'] == "-" or $_POST['corriere_new'] == "")
&& $_POST['corriere'] != "-")
			{ $aut_mov = enc($_POST['corriere']); }
		else
			{ $aut_mov = enc($_POST['corriere_new']); }
		if($_POST['tipo_aut_mov'] == "Ns._mezzo")
			{ $mezzo_mov = $_POST['mezzo_mov']; }
		else
			{ $mezzo_mov = "-"; }
		break;
	case "Interno":
		if(($_POST['autista_new'] == "-" or $_POST['autista_new'] == "")
&& $_POST['autista'] != "-")
			{ $aut_mov = enc($_POST['autista']); }
		else
			{ $aut_mov = enc($_POST['autista_new']); }
		$mezzo_mov = $_POST['mezzo_mov'];
	}
Praticamente queste ultime due variabili del case "Interno" ($aut_mov
e $mezzo_mov) arrivano vuote.

 e $mezzo_mov) arrivano vuote.
Hai provato con un print_r ($_POST) nella form2?
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/1
Inviare email con allegati? 
http://url.repository.biz/go/x

Hai provato con un print_r ($_POST) nella form2?
Adesso sì, e ho visto che effettivamente passano, solo che non vengono
inserite ne db.
alla fine di form2, appena sotto il pezzo che ho postato, c'è questo:
			$sql = "update appr_mov set
					sede_mittente = '$sede_mittente',
					sede_destinatario = '$sede_destinatario',
					aut_mov = '$aut_mov',
					mezzo_mov = '$mezzo_mov'
					where id = '$id_mov'";
Verrebbe da dire che l'errore è lì, ma perché negli altri casi
funziona e per "Interno" no?

 inserite ne db.
Hai impostato l'error reporting in modo da visualizzare tutti gli
errori ed i notice?
Forse l'errore risiede da qualche altra parte.


Forse l'errore risiede da qualche altra parte.
A questo punto sě.
Vabe', mi scervellerň ancora.
Grazie.

 e $mezzo_mov) arrivano vuote.
Fai un debug potente e noioso:
prima dell'if stampi le variabili
echo "POST 'autista_new': ".$_POST['autista_new']."<br>\n";
echo "POST 'autista': ".$_POST['autista']."<br>\n";
quindi dentro il *then* scrivi
echo "Sono nel then";
e cosě via. Diventa molto piů facile capire i problemi, che siano di logica
o di scrittura.
Inoltre controlla sempre il buon fine delle query e manda in output
l'errore.
Cmq in una query fatta cosě
$sql = "update appr_mov set sede_mittente = '$sede_mittente'...
rischi di avere problemi con le virgolette (se l'autista si chiama
"d'angelo", ad esempio).
Inoltre, per questa query specifica, deve esistere il record in cui il campo
id sia $id_mov.
Ludovico