Newsgroup: it.comp.www.php
Titolo: form ... piccolo problemino

salve
ho un piccolo "blocco dello scrittore" (probabilmente e' la stanchezza)
sto girando invano intorno al problema da stamani (vabbe', ho fatto 
anche altro nel frattempo :D )
in pratica la situazione e' la seguente:
pag_1 e' un form con 12 domande (checkbox differenti)
le domande sono dom_a, dom_b, dom_c, dom_d etc
pag_2 riceve i dati via post da pag_1
controlla che non siano state scelte piu' di 5 voci (xe' altrimenti 
deve segnalare l'errore e tornare indietro)
per fare questo controllo ho semplicemente messo come value per 
ciascuna checkbox il valore "1"
in modo che, su pag 2 sia sufficiente fare una "somma" delle var 
ricevute per vedere se siamo nel caso > o < di 5 (e' un metodo forse un 
po' spartano ma funziona)
il fatto che abbia messo value="1" mi e' necessario anche per fare 
delle statistiche su pag 2 (vedere quanta % di risposte di tipo a 
piuttosto che b etc etc)
il fatto e' che adesso dovrei memorizzare queste 5 voci nel db pero'...
il db contiene i campi dom_1, dom_2, dom_3, dom_4, dom_5 nei quali devo 
inserire il valore "a", "b", "c" etc che sarebbero le corrispettive 
etichette delle domande scelte
pertanto io mi troverei
dom_a = 1 che deve andare su dom_1 ma con valore ="a"
e devo fare questo "giochetto" per tutte e 12 le domande di pag 1 per 
inserirle nelle 5 variabili di pag_2
spero abbiate capito... :-?
grazie
-- 
Umin
n. p.: Sting - Shadows In The Rain

 spero abbiate capito... :-?
Vediamo se ho capito...ogni domanda ha più risposte del tipo dom1_a, dom1_b,
ecc e tu nel db hai un campo per ogni domanda e vuoi inserire il valore
della risposta. Ho capito qualcosa? ;-)
Mauro

 della risposta. Ho capito qualcosa? ;-)
allora...
su pag 1 ho qualcosa come
a) mi piace andare al manre (checkbox name="dom_a" value="1")
b) mi piace sciare (checkbox name="dom_b" value="1")
c) mi piace cosare (checkbox name="dom_c" value="1")
d) mi piace programmare
e) ...
f) ...
...
SUBMIT
su pag 2 ho il controllo che non siano state scelte piu' di 5 voci, in 
tal caso da errore e mi fa tornare a pag_1 qualora sia tutto ok (per 
controllare il <5 faccio la somma di dom_a + dom_b + dom_c + etc ... 
essendo tutti int="1" se somma>5 errore e torna indietro)
nel database pero' ho i campi dom_1, dom_2, dom_3, dom_4 e dom_5 che 
devono memorizzare l'etichetta delle domande di pag 1 (se ho scelto: 
"mi piace sciare" dom_1 dovra' avere valore ="b" mentre io gli ho 
passato un value="1")
e questo xe' altrimenti sarei costretto ad implementare, nel db, 12 
campi (1 per ogni domanda) quando non e' assolutamente necessario (e 
visto che questa cosa comporterebbe anche un notevole spreco di 
"spazio" visto che verrebbe generata una tabella piu' grande del 
necessario ovvero una tabella di 12 campi di cui almeno 7 sarebbero 
sempre nulli)
percio' il db deve risultare cosi'
ID   dom_1   dom_2   dom_3 ...
1      a       c       g     // questi sono le "etichette" delle 
domande di pag_1
2      b       d       h
3      a       f       j
etc etc
forse ora si e' capito qualcosa di piu'...?
lo spero
:-?
-- 
Umin
n. p.: Sting - Moon Over Bourbon Street

 :-?
Credo di aver capito :-)
Prima di tutto inserirei tutte le risposte all'interno di un array:
$domande = array($dom_a, $dom_b,....);
Quindi elemento 0=a (dom_a), 1=b (dom_b), 2=c, ecc
e poi
$index=0;
for($i=0; $i<12; $i++){
    if ($domande[$i]==1){
         switch($i){
                case 0: $domdb[$index]="a";
                            break;
                case 1: $domdb[$index]="b";
                            break;
                    ......
            }//end switch
        $index++;
    }
}
Spero sia chiaro ;-)
Mauro

Sembra che Mixboy abbia detto :

in realta' avevo pensato anche io ad un ciclo ed a un case (cioe' 
switch) pero' mi sfuggiva qualcosa...
probabilmente stanchezza = cervello fuso = poca lucidita'
cmq mi pare possa andare
provo e poi casomai faccio sapere
grazie intanto!
:)
-- 
Umin
n. p.: Sting - Low Life

 :)
Non assicuro il funzionamento alle 22.00 ;-)
Mauro

inserirle nelle 5 variabili di pag_2
Prova, io non ho un PHP sottomano adesso:
	$campi = array('dom_a', 'dom_b', 'dom_c', 'dom_d', 'dom_e');
	foreach($_REQUEST as $key => $value)
	{
		list($dom, $valore) = explode('_', $key . '_');
		if ('dom' != $dom)
			continue;
		// S'era detto che $value e' sempre 1, controlliamo
		// if (1 != $value)
		//	continue;
		if (0 == count($campi))
			die("5 risposte soltanto!");
		$campo	= array_unshift($campi);
		print "Nel campo $campo ci metto $valore.<br/>";
	}
	if (0 != count($campi))
		die("Servono tutte e 5 le risposte!");
Leonardo
-- 
Avere studiato senza mettere in pratica e' inutile;
mettere in pratica senza avere studiato e' pericoloso.
                                                - Conphpucio

 		die("Servono tutte e 5 le risposte!");
non avevo pensato a questa soluzione... cmq ho risolto grazie a Mixboy 
ma terro' presente, in futuro, anche questa soluzione
grazie mille ad entrambi!
:)
-- 
Umin
n. p.: Sting - Mariposa Libre

 Non assicuro il funzionamento alle 22.00 ;-)
non ti preoccupare.. sei stato comunque meglio del mio stordimento 
odierno...
cmq l'ho fatto ed adesso va
ho aggiunto un'altro for+switch per fare l'opposto...
cioe', una volta inseriti i dati nelle variabili e messe, con lo 
switch, le corrispettive lettere, ho fatto lo switch per assegnarli 
alle variabili finali che erano
s4_1, s4_2, s4_3, s4_4, s4_5 (i nomi delle var fanno pieta', lo so, ma 
se il committente li impone cosi'.. che ce posso fa? :)
adesso sto andando incontro, invece, ad un nuovo problema...
tutto il sito in locale funziona
in remoto.. no!
la query, perfetta in locale (controllata 100 volte), in remoto mi da 
un errore e con phpmyadmin non riesco ad andare oltre ad un
#1064 - You have an error in your SQL syntax near 'VALUE(  '11/5/2005 
00:02',
'ENG',
'5',
'<30',
'3-10',
'NM',
'2',
'1',
'2' at line 1
che non mi dice assolutamente niente di niente visto che devo lavorare 
con una tabella di parecchi campi...
detesto questi errori... anche xe' trovarli e' difficilissimo... 
specialmente se in locale tutto funziona! (ed, aggiungo, i php.ini sono 
identici...)
:'(
-- 
Umin
n. p.: Sting - Mariposa Libre

 
VALUES ('
invece di..
VALUE(  '
-- 
www.iuz-lab.info

 VALUE(  '
non ci posso credere....
io ho cercato, spulciato nella query in lungo e in largo...
e allora, domanda, come mai in locale, con easyphp 1.7 non dava 
assolutamente errori mentre in remoto la stessa pagina mi dava errore?
bah
cmq grazie, mi hai restituito qualche giorno di vita e di ... vista!
-- 
Umin
n. p.: Sting - Prologue (If I Ever Lose My Faith In You)