MVC-Controllo Inserimento Dati

  • Creatore Discussione Creatore Discussione lorenza
  • Data di inizio Data di inizio

lorenza

Nuovo Utente
13 Lug 2009
4
0
0
Ciao a tutti!
Mi sono appena avvicinata sia a php sia alla programmazione in MVC.
Per questo motivo la mia domanda sembrerà banale ma io non riesco a venirne a capo.
Ho un pagina di inserimento dati che è legata al controller con la seguente funzione:
public function nuovo()
{
$this->registry->template->clienti_heading = 'Sezione Clienti: ';
$this->registry->template->clienti_content = 'Nuovo';
$cliente = new Cliente();
if (isset($_REQUEST['cognome']))
{

$this->registry->template->cognome=$cliente->insertCliente(($_POST['cognome']),($_POST['nome']),($_POST['dob_nascita']),($_POST['dob_regione']));
}

$this->registry->template->show('clienti_nuovo');
}
ed è legato al modella alla classe:
public function insertCliente($sCognome,$sNome, $dDob, $sCitta, $sRegione)
{
$db = db::getInstance();
$res1 = db::getInstance()->query("SELECT cognome FROM cliente WHERE cognome='".$sCognome."'");
$NumRow=db::getInstance()->affected_rows;
if ($NumRow==0 )
$res = db::getInstance()->query("INSERT INTO cliente(cognome,nome,dob, dob_citta, regione)VALUES ('".$sCognome."','".$sNome."',".$dDob.",'".$sCitta."','".$sRegione."')");
return $NumRow;
}

La mia domanda è questa.
Io vorrei che se le righe fossero superiori a zero non eseguisse la query di inserimento(e fin qui è ok) ma facesse comparire un confirm in javascript dove informa l'utente della presenza di un record simile e chiedesse se vuole inserire lo stesso il record.
Ho gia creato il javascript che informa l'utente ma non riesco a far richiamare nuovamente la funzione di inserimente se la risposta fosse positiva.

Spero di essermi spiegata al meglio
Grazie tutti
 
ciao.. se usi javascript che ti visualizza un alert e quindi una scelta devi nuovamente fare una request. in altre parole, a meno di usare ajax l'opzione che tu vuoi realizzare prevede un'interazione differente.
visualizzato l'alert js devi sottomettere nuovamente il form passando un parametro aggiuntivo, preso da un campo hidden che indicherà l'intensione dell'utente a sovrascrivere il record.
ovviamente è solo un esempio..

se hai bisogno di supporto sn qui.
ciro
 
Ciao!
grazie per la risposta!
infatti la mia idea era di valorizzare una variabile e aggiungerla nell'if dell'inserimento
if($numrows==0 or $scrivi==1)
eseguo l'insert

però il mio problema è che non so con quale istruzione rilanciare il il "submit" per l'inserimento.

Grazie mille!!
 
ciao, non so te ti serva, io per tornare al form dovo vari controlli utilizzo questa


PHP:
//......
}else{
echo "<meta http-equiv='Refresh' content='3; URL=pag_form.php'>";
}
//...................

dove pag_form è il nome della pagina del form (che può essere anche la stessa) e contetnt='3... i secondi prima di essere reindirizzato (può essere 0).
puoi uso i cookie per non costringere l'utente a riscrivere tutti i campi
 
Ciao!
Grazie, si mi puo servire quell'istruzione se l'utente preme annulla allora lo indirizzo alla pagina di edit del record.
Quello che non mi è chiaro è come richiamare la funzione di inserimento dopo aver premuto il pulsante inserisci.. e non riesco a venirne a capo..
La soluzione di usare una variabile o un campo hidden è ottima ma dopo averlo valorizzato come richiamo in automatico la funzione di inserimento?

Grazie a tutti per l'aiuto!!
 
Ciao (se non ho capito male) io farei così (ti scrivo pseudo codice)

Form_1 inserimento dati
Invio con submit


If subimit_inserimento
Ricerca se i dati esistono con una query=”select….where campi=inseriti”
If esistono == NO
Fai l’insert e torni al form_1 vuoto
Else == SI
Salvi i dati inseriti in sessione o coockies
Altro form_2 con solo pulsante di conferma o esci
testo di avviso esistenza
If conferma==SI inserisci i dati provenienti dalla sessione o dai cookies
Torni al form_1 iniziale
Else==NO
Torni al form_1 iniziale avendo utilizzato la sessione o i cookies puoi riempire i campi con i dati inseriti in modo da correggerli solamente e non riscriverli
Fine if /else conferma
Fine if/else esistono
Fine if submit_inserimento

Tutto può essere fatto in una stessa pagina, utilizzando i css puoi disporla come vuoi, visualizzando il form_2 solo in caso dati esistenti (es style= hidden o visible)
 

Discussioni simili