1
Gestione Form / Aggiornare contemporaneamente campi tabella con lo stesso nome
« il: 05 Feb 2011, 12:51:10 »
Ciao ragazzi,
Anzitutto volevo ringraziare vales per tutte le sue guide utilissime su questo meraviglioso componente che aiuta anche chi (come me) non sa molto di php, html e java a crearsi qualche form utile per il proprio sito.
A forza di leggere e cercare sui vari forum sono riuscito a mettere insieme - con chronoforms e chronoconnectivity - dei form per gestire le iscrizioni ad una manifestazione e crearne le classifiche per ogni gara...
Ora però, per creare la classifica generale, dovrei aggiornare le tabelle con alcuni dati.
I dati sono distribuiti su due tabelle una con i dati degli enti partecipanti e l'altra con i dati delle persone che gareggiano.
Per esempio: I primi 10 classificati ad una gara portano dei punteggi all'ente a cui appartengono (1° classificato = 100 punti, 2° classificato = 75 punti, 3° classificato = 65 punti ecc...).
Quindi se il sig. "MARIO ROSSI" è arrivato 1° e appartiene all'ente "ESEMPIO" vorrei che il campo "classifica_generale" della tabella contenente i dati dell'ente venga aggiornata con i 100 punti.
Per arrivare a questo, pensavo di aggiornare prima la tabella dei partecipanti inserendo in un campo i punteggi e poi sommare i punteggi totalizzati dalle persone, a seconda dell'ente di appartenenza, e inserirli nella tabella con gli enti.
Ho letto che per aggiornare i record esistenti bisgona inserire nel form il cf_id già esistente quindi ho provato a farlo in questo modo:
1) Con l'array_combine il numero dei dati contenuti nei due array da combinare ho letto che deve essere uguale quindi se avessi per caso solo otto persone in classifica e 10 punteggi non potrei combinare i valori (nel codice ho inserito solo 3 punteggi proprio perchè so che sono 3 i cf_id da aggiornare);
2) Aprendo il form con il codice qui sopra, a video, mi mostra proprio i dati che volevo però quando clicco sul submit mi aggiorna solo il primo record presente nella tabella del db;
3) Come posso fare a far si che non venga cambiato il cf_user_id?
Grazie in anticipo...
Federico
Anzitutto volevo ringraziare vales per tutte le sue guide utilissime su questo meraviglioso componente che aiuta anche chi (come me) non sa molto di php, html e java a crearsi qualche form utile per il proprio sito.
A forza di leggere e cercare sui vari forum sono riuscito a mettere insieme - con chronoforms e chronoconnectivity - dei form per gestire le iscrizioni ad una manifestazione e crearne le classifiche per ogni gara...
Ora però, per creare la classifica generale, dovrei aggiornare le tabelle con alcuni dati.
I dati sono distribuiti su due tabelle una con i dati degli enti partecipanti e l'altra con i dati delle persone che gareggiano.
Per esempio: I primi 10 classificati ad una gara portano dei punteggi all'ente a cui appartengono (1° classificato = 100 punti, 2° classificato = 75 punti, 3° classificato = 65 punti ecc...).
Quindi se il sig. "MARIO ROSSI" è arrivato 1° e appartiene all'ente "ESEMPIO" vorrei che il campo "classifica_generale" della tabella contenente i dati dell'ente venga aggiornata con i 100 punti.
Per arrivare a questo, pensavo di aggiornare prima la tabella dei partecipanti inserendo in un campo i punteggi e poi sommare i punteggi totalizzati dalle persone, a seconda dell'ente di appartenenza, e inserirli nella tabella con gli enti.
Ho letto che per aggiornare i record esistenti bisgona inserire nel form il cf_id già esistente quindi ho provato a farlo in questo modo:
Codice: [Seleziona]
<?php
//creo l'array con i punti
$punti = array(100, 75, 65);
//seleziono i primi dieci classificati in questa gara
$db =& JFactory::getDBO();
$query = "
SELECT `cf_id`
FROM `#__chronoforms_iscrizioni_partecipanti`
WHERE `check2` != '' AND `radio0` = 'M' AND `cat_cerchi` = 'D' AND `rifiuto_cerchi` = ''
ORDER BY somma_pts_cerchi DESC, date_int ASC
LIMIT 10
";
$db->setQuery($query);
$cf_ids = $db->loadResultArray();
$prova = array_combine ($cf_ids, $punti);
foreach($prova as $k=>$v) { echo "
<input type='text' name='cf_id' id='cf_id' value='$k' />
<input type='text' name='class_gen_cerchi' id='class_gen_cerchi' value='$v' /> <br/>"; }
?>
Ma mi trovo davanti a qualche problema che non riesco proprio a risolvere:1) Con l'array_combine il numero dei dati contenuti nei due array da combinare ho letto che deve essere uguale quindi se avessi per caso solo otto persone in classifica e 10 punteggi non potrei combinare i valori (nel codice ho inserito solo 3 punteggi proprio perchè so che sono 3 i cf_id da aggiornare);
2) Aprendo il form con il codice qui sopra, a video, mi mostra proprio i dati che volevo però quando clicco sul submit mi aggiorna solo il primo record presente nella tabella del db;
3) Come posso fare a far si che non venga cambiato il cf_user_id?
Grazie in anticipo...
Federico