piero, evidentemente le risposte sono dinamiche: una domanda, n risposte, che possono essere fornite via via nel tempo. Warrior ci confermerà se questo è il funzionamento
piero, evidentemente le risposte sono dinamiche: una domanda, n risposte, che possono essere fornite via via nel tempo. Warrior ci confermerà se questo è il funzionamento
questione di progetto. Siccome mi pare di aver capito che comunque lui propone un form leggendo dal database non so quali contenuti, direi che progettualmente il sapere se si tratta di un update oppure di nuovo inserimento si dovrebbe conoscere a priori.Originariamente inviato da optime
piero, evidentemente le risposte sono dinamiche: una domanda, n risposte, che possono essere fornite via via nel tempo. Warrior ci confermerà se questo è il funzionamento
Potrebbe lasciare due pulsanti con un aggiorna e nuovo inserimento.... ma tant'e', niente di peggio che frugare nelle tasche altrui per dire cosa potrebbe avere....![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
Le risposte sono fisse.![]()
Per ciascuna domanda si devono dare tre risposte (tabella: db_risposte):
* una da 0 a 5 (radio button)
* una da 1 a 5 (radio button)
* una di testo facoltativa (textarea)
Sono le domande (tabella: db_domande) che cambiano (ie, aumentano) nel tempo.
Per questo motivo nella pagina con il form l'utente ottiene i campi già compilati per le domande alle quali aveva già fornito una risposta, e campi da compilare per le domande nuove.
Per le domande compilate serve un update, perché potrebbe cambiare la risposte via radio-button, per ciascuna domanda mai compilata bisogna inserire una nuova riga nel database.
direi che la replace va bene. ma tu lamenti un problema di "performance": puoi spiegare?
Prima di tutto vi ringrazio per la cortesia di aiutarmi..
E' un problema un po' generico, me ne rendo conto. A volte il file post.php cui vengono passati i dati del form (e all'interno del quale c'è l'estratto che ho indicato) è piuttosto veloce, altre volte è più lento (alcuni secondi), e nella maggior parte delle volte in cui è lento il browser dopo aver "caricato" un po' rimane in blank page su post.php (pagina bianca, perché non c'è output ma solo un redirect alla fine, che non viene raggiunto) e il db *non* viene aggiornato. A quel punto facendo refresh e dicendo al browser di re-inviare i dati di solito funziona, però è una seccatura..
Ma soprattutto ho paura che con l'aumentare delle domande (tra 20 e 50 diciamo) il problema aumenti esponenzialmente..
Forse dovrei provare a togliere il redirect PHP, mettere un redirect JS e far sì che appaiano degli "output diagnostici" studiati ad hoc, per vedere se il problema è in qualche riga specifica.. mmmm
quindi non sei sicuro che il problema sia nella query di Replace...
EDIT: ho messo gli echo
diagnostici nelle {..} (non avevano senso al di fuori) visto che mi pare di ricordare che header() non si comporta bene se c'è giù output nella pagina e forse va un po' meglio.. boh vi faccio sapere!
------
Bhe dev'essere per forza lì perchè tutto il PHP è
per cui tolto il replace non rimane molto.. però che altro posso fareCodice PHP:<?php
$debug = 0;
$hash = $_POST['hash']; //hidden
include("templates/db_connect.php");
$row_autore = mysql_query("SELECT * FROM `db_autori` WHERE hash='$hash' ")
or die(mysql_error());
$data_autore = mysql_fetch_array($row_autore);
if ($debug) {print_r($data_autore);}
$st=mysql_query("SELECT COUNT(*) AS totale FROM `db_domande`") or die(mysql_error());
$count_domande=mysql_fetch_assoc($st);
for ($domanda = 1; $domanda<=$count_domande['totale']; ++$domanda) {
if ($debug) {print($domanda);}
echo "
";
$id_risposta = sprintf('%03u', $data_autore['id_autore']).'_'.sprintf('%03u', $domanda);
if ($debug) {print($id_risposta);}
echo "
";
$query = "REPLACE INTO `db_risposte` (id_risposta, id_autore, id_domanda, risposta, confid, nota) VALUES ('".$id_risposta."', '".$data_autore['id_autore']."', '".$domanda."', '".$_POST[$domanda.'_r']."', '".$_POST[$domanda.'_c']."', '".$_POST[$domanda.'_txt']."' )";
if ($debug) { echo $query; echo "
"; echo "
"; }
$end = mysql_query($query) or die (mysql_error());
}
mysql_close($connessione);
if (!$debug) {
header("Location: poll.php?hash=".$hash."&msg=succ");
}
?>![]()