PDA

View Full Version : [PHP] - Stringa binaria ---> "parole" ...


PhoEniX-VooDoo
18-07-2008, 16:18
Scusate il titolo, non mi veniva in mente qualcosa di meglio :fagiano:

Cmq sia, ho il seguente problema:

Devo far scegliere al utente, per mezzo di checkbox, da 1 a 7 opzioni, quindi:

[ ] opzione 1
[ ] opzione 2
[ ] opzione 3
[ ] opzione 4
[ ] opzione 5
[ ] opzione 6
[ ] opzione 7



L'utente mette le sue crocette, preme il bottone, e io in base alla selezione o meno concateno il tutto e lo inserisco in un campo database, ad esempio "1101001".

[B]PROBLEMA

Qual'e il modo piu facile, seza fare una comparazione di 7! volte ( :asd: ) per far si che una volta recuperata la stringa binaria dal DB (mySQL) io possa visualizzare a schermo le scelte?

Prendendo l'esempio sopra, ricevando dal DB "1101001" io devo poter visualizzare: Opzione 1, Opzione 2, Opzione 4, Opzione 7


Idee? :mc:

kk3z
18-07-2008, 17:35
Intendi davvero 7 fattoriale? Te ne bastano 7:
if ($stringa_da_database[0] == "1")
//opzione 1 checkata
else
//opzione 1 noncheckata
ripetuto per 7

PhoEniX-VooDoo
18-07-2008, 18:27
Intendi davvero 7 fattoriale? Te ne bastano 7:
if ($stringa_da_database[0] == "1")
//opzione 1 checkata
else
//opzione 1 noncheckata
ripetuto per 7


Grazie della risposta, di questo passo dovrò offrirti da bere prima o poi :D

Cmq ho adottato una soluzione del genere, però con un passaggio in piu.


Per capire, $stringa_da_database[0] significa di considerare il primo carattere della stringa?

john_revelator
18-07-2008, 21:20
Io farei così ma sicuramente esistono soluzioni più eleganti.
Apprezza la buona volontà. :)


$opz = array();
$str = '1101001';
for ($i=0;$i<strlen($str);$i++) {
if($str[$i]==1)
$opz[] = 'Opzione '.($i+1);
}
$opz = implode(', ',$opz);
echo strlen($opz) > 0 ? $opz : 'Nessun elemento';

thehuge
19-07-2008, 14:56
L'utente mette le sue crocette, preme il bottone, e io in base alla selezione o meno concateno il tutto e lo inserisco in un campo database, ad esempio "1101001".
Scusa la curiosità: ma perchè non usi 7 campi booleani nel DB?

Leo_SR
19-07-2008, 20:44
Io farei così:
Il form deve avere un array (o almeno, consideriamolo tale :D) di checkbox, quindi

<input type="checkbox" name="opzione[0]" value="valore1" /> Opzione 1
<input type="checkbox" name="opzione[1]" value="valore2" /> Opzione 2
<input type="checkbox" name="opzione[2]" value="valore3" /> Opzione 3

etc...

Lato server potresti fare:
$stringa_db = "000"; //Considero 3 posizioni, tu mettine quante ne servono
foreach($_POST['opzione'] as $k => $v) {
$stringa_db{$k} = '1';
}

A questo punto avrai la tua stringa da inserire nel DB :)