Newsgroup: it.comp.www.php
Titolo: Troncamento varchar su mysql

Pensavo php mi desse meno problemi del solito, invece.......
Sto utilizzando mysql 5.0.67 e php 5.2.2 su win vista.
La libreria in uso e' mysqli.
Orbene, la connessione e la INSERT al db su mysql avvengono 
correttamente ma stranamente le stringhe composte (ad es: 'medico 
specializzato') vengono troncate alla prima parte della stringa 
delimitata dallo spazio, quindi su mysql mi ritrovo unicamente la parte 
'medico'.
Ho verificato la correttezza del varchar su mysql ed assicuro essere 
della giusta dimensione (anzi e' anche sovradimensionato).
Cosa e' che provoca l'alterazione dei dati sul db ?
Ho cercato in giro ma si parla solo di problemi con odbc e non sembra 
essere il mio caso.
grazie a chi potra' darmi un mano.
Alex

Alex ha scritto:

Ho riscontrato che il problema sembra essere nella $_POST.
Sembra che dall'html arrivi troncata la stringa.
Indagando meglio forse...... :-)

Alex ha scritto:
Beccato !
Il troncamento avviene solo nei campi delle select, ma non capisco 
perche'. vi posto il codice:
<?php
// Query di recupero mansioni lavorative
$sql=mysqli_query($connessione,"SELECT * FROM mansioni_lavorative");	
?>
<select name="formselect_mansion" 
style="position:absolute;left:183px;top:286px;width:200px;z-index:43">			 
 
<OPTION SELECTED VALUE="-- seleziona mansione--">-- seleziona mansione --
<?php
//-------------
while($riga=mysqli_fetch_assoc($sql))
{
		$option = $riga['mansione'];
 
		?>
		<option value=<?echo ($option)?>> <?echo ($option)?></option>
 
			<?
}			
Nella pagina seguente recupero il valore selezionato nel campo con:
$mansione=$_POST['formselect_mansion'];
ho provato anche con:
$mansione=htmlspecialchars($_POST['formselect_mansion']);
alle volte non si sa mai ma il risultato non cambia.


'medico'.
Fatti stampare a video la query di INSERT che tu CREDI stia avvenendo
correttamente.
Ancora, verifica nel sorgente HTML che *davvero* il database ti abbia
restituito "medico".
Perche' se ti restituisce "medico specializzato" e tu lo scrivi come
   <input type=text name=professione value=medico specializzato />
senza virgolette, sicuro come la morte nel campo INPUT ci vedrai solo
la prima parola, troncate alla prima parte delimitata dallo spazio...
Leonardo
-- 
Linten addie toorin addie,
Linten addie toorin ee,
Linten lowrin lowrin lowrin,
The barnyards of Delgaty

		<option value=<?echo ($option)?>> <?echo ($option)?></option>
Eccolo li'. Non hai messo le virgolette al VALUE.
	$option = AddSlashes(StripSlashes($option));
	echo "<option value=\"$option\">$option</option>";
Leonardo (mannaggia a leggere in offline...)


Grazie Leo ma non va cmq.
Sara' che pasticcio io.
Mi riscriveresti il codice completo ?
grazie.
Leonardo Serni ha scritto:


 
Ti posto il codice con le correzioni:
<?php
// Query di recupero mansioni lavorative
$sql=mysqli_query($connessione,"SELECT * FROM mansioni_lavorative");
//$num=mysqli_num_rows($sql);	
?>
<select name="formselect_mansion" 
style="position:absolute;left:183px;top:286px;width:200px;z-index:43">			 
 
<OPTION SELECTED VALUE="-- seleziona mansione--">-- seleziona mansione --
<?php
//-------------
while($riga=mysqli_fetch_assoc($sql))
{
     $option = AddSlashes(StripSlashes($option));	
	$option = $riga['mansione'];
	echo "<option value=\"$option\">$option</option>";		
 
}			
A prima vista dovrebbe essere a posto ma ancora tronca $option
a video e' tutto ok.

Leonardo Serni ha scritto:
OK e' andata.
Grazie della dritta Leo, ha volte meglio leggere prima e poi 
sperimentare. Mannaggia alla fretta :-)
Questo funziona:
<select name="formselect_mansion" 
style="position:absolute;left:183px;top:286px;width:200px;z-index:43">			 
 
<OPTION SELECTED VALUE="-- seleziona mansione--">-- seleziona mansione --
<?php
//-------------
while($riga=mysqli_fetch_assoc($sql))
{
     $option = AddSlashes(StripSlashes($option));	
	$option = $riga['mansione'];
	echo "<option value=\"$option\">$option</option>";		
 
}			
?>
</select>
Che niubbo che sono :-)
Ciao e grazie.


 	$option = $riga['mansione'];
E` abbastanza inutile elaborare $option (stringa vuota o precedente nel 
ciclo) e poi sovrascriverla coi dati dal DB...
Per favore, quota bene: Google -> Quotare bene
Bye.

 wrote:
<select name="formselect_mansion" 
 style="position:absolute;left:183px;top:286px;width:200px;z-index:43">
<option selected="selected" value="-- seleziona mansione--">-- seleziona
mansione --</option>
<!-- Qui sopra non avevi chiuso la option -->
<?php
	while($riga=mysqli_fetch_assoc($sql))
	{
		$option = AddSlashes(StripSlashes($riga['mansione']));
		echo "<option value=\"$option\">$riga[mansione]</option>";
	}
	print '</select>';
?>
A questo punto, se c'e' un errore e' nel codice che RICEVE questa form.
