Problemi con select multipla

piero60

Utente Attivo
26 Gen 2015
71
2
8
Salve a tutti, mi sono appena iscritto e saluto tutti i membri.
chiedo un aiuto:

ho un form perfettamente funzionante nel quale esiste una select per singola voce, questa:

PHP:
<label class="left_label">Categoria attività:</label>
<select name="competenze">
<option value="">Selezionare</option>     
<option value="voce1">Voce1</option>
<option value="voce2">Voce2</option>
<option value="voce3">Voce3</option>
<option value="voce4">Voce4</option>
<option value="voce5">Voce5</option> 
<option value="voce6">Voce6</option>     
</select>
    <?php 
$_POST['competenze'];
    echo('<br>');
        
    echo('Categoria attuale:&nbsp;<font size="2" color="#008000">');
    print "$competenze";
echo('</font><br><br>');    
    ?>

devo sostituire questa select singola con una select multipla, e l'ho modificata così:

PHP:
<select multiple="multiple" name="competenze[]">
<option value="">Selezionare</option>     
<option value="voce1">Voce1</option>
<option value="voce2">Voce2</option>
<option value="voce3">Voce3</option>
<option value="voce4">Voce4</option>
<option value="voce5">Voce5</option> 
<option value="voce6">Voce6</option>
</select>

<?php
if (isset($_POST['competenze'])) {
$competenze = $_POST['competenze'];
foreach ($competenze as $competenze)
{
echo $competenze."
";
}
}
?>

Accade che nella echo trovo e visualizzo le selezioni effettuate
Invece nel database mi viene scritta la parola "Array", qualsiasi numero di voci io abbia selezionato.

Qualcuno sa darmi qualche lume ?

Grazie in anticipo a tutti.
 
Ultima modifica di un moderatore:
Ciao, hai usato la stessa variabile nel foreach
PHP:
foreach ($competenze as $competenze)
non ho provato ma probabilmete il problema è quello
PHP:
foreach ($competenze as $valore)
{
echo $valore;
}
 
Ciao Criric,
Grazie per la risposta, ma non cambia assolutamente nulla, continua a scrivere nel database la parola "Array" invece ciò che visualizza la echo è esattamente la selezione multipla effettuata.
Mistero, non riesco a capire.
Buona serata.
 
Ciao, hai usato la stessa variabile nel foreach
PHP:
foreach ($competenze as $competenze)
non ho provato ma probabilmete il problema è quello
PHP:
foreach ($competenze as $valore)
{
echo $valore;
}

Ciao Criric,
grazie per la risposta, ho provato ma niente da fare nel database continua a scrivere "Array" invece la echo
visualizza correttamente la selezione effettuata.
Misteroooooooo !

Buona serata.
 
Ecco la query:

PHP:
	$competenze = $_POST['competenze'];

	$sqlUpdate = mysql_query("UPDATE professional SET categoria='$categoria', lingue_parlate='$lingue_parlate', lingue_scritte='$lingue_scritte', spostamenti='$spostamenti', competenze='$competenze' WHERE id='$mioid' ");
	if ($sqlUpdate) {
			$successo = "Informazioni aggiornate";
		} else{
			$errore= "Errore nell'aggiornamento dei dati, riprova di nuovo";
		}

Il campo del database è un semplice varchar
Ripeto se io utilizzo una select singola tutto funziona perfettamente.
Grazie
 
Ultima modifica di un moderatore:
ciao
se non erro il problema può essere qui: competenze[]
da cui la variabile $competenze = $_POST['competenze'] è un array di array per cui
PHP:
<?php
//....
foreach ($competenze as $arr){//echo $arr output 'Array'
	foreach($arr as $valore){
		echo $valore;
	}
}
//...
?>
eventualmente prova al massimo non funziona
 
ciao
metti un var_dump
PHP:
<?php
//....
$competenze = $_POST['competenze'];
var_dump($competenze );
//....
?>
e riporta cosa risulta

ps
quindo scrivi del codice usa gli appositi bcccode (seconda riga formattazione del post ultime tre iconcine, nell'ordine HTML, CODE, PHP)
 
Ciao Borgo Italia, grazie ma non funziona ugualmente anzi compare un altro errore, questo:

CAPT_010.jpg

Credo che il problema sia un altro, probabilmente devo utilizzare in qualche modo l'istruzione implode() prima di effettuare il salvataggio sul database.
come è strutturato il form il campo dove si va a scrivere è un campo text, presumo quindi
che bisogna in qualche modo trasformare l'array di selezione multipla in stringa di testo.
 
ciao
scusa una cosa, per capirsi meglio
tu dalla select selezioni es voce1, voce2, voce 3
nel campo competenze vuoi trovare tutte e tre le voci?
se è cosi come dici devi usare l'implode
PHP:
<?php
$competenze = implode(",",$_POST['competenze']); //o altro separatore. con "," risulta voce1,voce2,voce3
//....
?>
 
ciao
come ti avevo detto metti un var_dump così si capisce che tipo è la variabile e cosa contiene
PHP:
 <?php
//....
$competenze = $_POST['competenze'];
var_dump($competenze );
//....
?>
 
ciao
ho sumulato il $_POST come proveniente da una selezione multipla
se provi questo miniscript funziona
PHP:
<?php
$_POST['competenze'][0]="pinco";
$_POST['competenze'][1]="pallo";
echo "<pre>";
var_dump($_POST['competenze']);
$competenze = implode(",",$_POST['competenze']); //o altro separatore. con "," risulta voce1,voce2,voce3
var_dump($competenze);
echo "</pre>";
?>
output
array(2) {
[0]=>
string(5) "pinco"
[1]=>
string(5) "pallo"
}
string(11) "pinco,pallo"
il problema può essere che il $_POST['competenze'] non sia un array cioè non prende la selezione multipla
 

Discussioni simili