Newsgroup: it.comp.www.php
Titolo: inserimento multiplo di record su db mysql

salve a tutti
vengo al quesito, sto facendo un piccolo programmino per l'associazione 
sportiva di cui faccio parte, per tener conto di chi fa gli allenamenti, ho 
una pagina
in cui inserisco la data , il tipo di allenamento , eventuali note e poi 
sulla stessa pagina carico  una table con tutti i componenti della squadra 
ricavata da un db mysql.
Dopo aver inserito i text  data, allenamento e note, devo 'spuntare' gli 
atleti presenti ( ho inserito una chekbox  'presente' sulla table).
Il tutto sta dentro una form , che invio a  'inserisci_record.php'  che 
esegue la query INSERT.
La query inserisce i 3 campi text ma non so come fare per inserire tanti 
record quanti sono gli atleti con checkbox spuntata.
Spero di essermi spiegato
grazie Roby

reds wrote:

non molto bene..
vorresti inserire n record con una sola query?
INSERT INTO table ('field0', 'field1') VALUES ('value0', 'value1')
('value2', 'value3') ('value4', 'value5')
-- 
www.iuz-lab.info

reds wrote:

non molto bene..
vorresti inserire n record con una sola query?
INSERT INTO table ('field0', 'field1') VALUES ('value0', 'value1'),
('value2', 'value3'), ('value4', 'value5')
-- 
www.iuz-lab.info

 
www.iuz-lab.info
 

> tabella degli atleti.
[..]
non capisco ancora..
WHERE (nome flag) = (valore TRUE)
potresti supportare il tuo problema con uno schema del DB ed un esempio
pratico..
-- 
www.iuz-lab.info

 
www.iuz-lab.info
 

esegue la query INSERT.
Il sistema piu' semplice mi sembra quello di chiamare la checkbox in
modo da avere il nominativo:
	$exec = SQLExec($conn, "SELECT id, nominativo FROM atleti");
	$checks	= '';
	$n	= 0;
	while($record = SQLFetchTuple($exec))
	{
		$checks .= <<<HERE
	<input type="checkbox" name="presente[$n]" value="$record[id]" />
$record[nominativo]<br/>
HERE;
		$n++;
	}
	SQLFree($exec);
	...
	Atleti presenti:
	<hr/>
	<?=$checks?>
	<hr/>
A questo punto la POST ti inviera' un array presente[], contenente tutti
i valori che ti servono. implode(',', $_REQUEST['presente']) ti fornisce
la stringa, poniamo, "12,17,21" se l'utente ha cliccato quei tre.
Controlla naturalmente di avercelo, quell'array, nella $_REQUEST. Metti,
un giorno, uno non seleziona manco una checkbox...
Poi costruisci la query di INSERT cosi':
INSERT INTO tabella_destinazione (campo1, campo2, campo3, nominativo)
SELECT valore1, valore2, valore3, nominativo FROM atleti WHERE 
atleti.id
IN (12,17,21);
...dove campo1, campo2, campo3 (...) sono i nomi dei campi e valore1...N
sono i valori che ottieni dalla POST. Cosi' fai un INSERT multiplo.
Leonardo che non ha provato -- caveat emptor
-- 
Avere studiato senza mettere in pratica e' inutile;
mettere in pratica senza avere studiato e' pericoloso.
                                                - Conphpucio

Perdonami Leonardo ma di tutto questo ho capito poco,
$checks .= <<<HERE
HERE
cosa sono ?
grazie


 
Prova cosi'.
Dove 'id' e' il flag che ti arriva dal form, ID_marca sara' il tuo 
ID_atleta.
foreach ($_POST['id'] as $key => $value){
 
$ID_marca = $value;
$query_4 = "INSERT INTO `marche_negozio` (`ID_negozio`,`ID_marca`, 
`tipo`) VALUES ('$ID_negozio', '$ID_marca', 'G');";
 
safe_query ($query_4, $link, $debug);
Fammi sapere.
Alla prossima.
	MAX

>
A quel punto il browser mi mandera', se ho checkato le caselle
	2. [x] Abbatangelo (id=17)
	3. [ ] Abbatantuono (id=22)
	4. [x] Abbondio, S.J. (id=13)
la variabile $_REQUEST['presente'] come array:
	{
		2	=> 17,
		4	=> 13,
	}
usando implode() io DOVREI condensarla nella stringa "17,13" che mi
da' l'elenco degli id degli atleti che sono stati marcati presenti.
A quel punto la INSERT ... SELECT FROM ... mi esegue una INSERT per
ogni atleta in quella lista.
Per me, numero uno! :-)))
Leonardo "...se funziona... io non ho provato..."


Ho provato quella di MAX 61 e funziona , ma la cambio cosě;
 foreach ($HTTP_POST_VARS as $key => $value) {
         echo "Key: $key; Value: $value<br>\n";
// su $key prendo id
poi INSERT INTO
}
grazie a tutti Roby