Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- function aggiunta_risultati_sanger(PDO $pdo){
- require_once 'endloggedin.php';
- //recupero i dati
- $codice_paziente = recuperaPost('Codice_Paziente');
- $gene_sanger = recuperaPost('Gene');
- $esone_sanger = recuperaPost('Esone');
- $posizione = recuperaPost('Posizione');
- $copertura = recuperaPost('Copertura');
- $conferma_vus = recuperaPost('Conferma_VUS');
- $conferma_patogenetica = recuperaPost('Conferma_Patogenetica');
- $conferma_segregazione = recuperaPost('Conferma_Segregazione');
- $altro = recuperaPost('Altro');
- //controllo la pienezza delle variabili (ulteriore controllo in quanto nell'html e' gia' stato inserito
- //l'attributo 'required' solo che, dopo alcuni test, ha dato dei problemi di compatibilita')
- if(empty($codice_paziente)){
- die('Codice paziente non inserito, prego riprovare.<br>');
- }
- if(empty($posizione)){
- die('Posizione non inserita, prego riprovare.<br>');
- }
- if(empty($copertura) and empty($conferma_vus) and empty($conferma_patogenetica) and empty($conferma_segregazione)){
- die('Non è stata inserita né copertura né conferme, prego riprovare.<br>');
- }
- //preparo ed eseguo la query per recuperare l'id che viene generato nella tabella con gene ed esone
- $query_sanger = $pdo->prepare('SELECT ID_Gene_Esone FROM Geni_Esoni WHERE Gene = ? AND Esone = ?');
- $query_sanger->execute(array($gene_sanger, $esone_sanger));
- //grazie al fetch il ritorno di funzione consisterà in un array in cui ogni elemento e' presente sia con
- //la chiave letterale (nome della colonna usata nel DB) che con chiave numerica
- $risultato_sanger = $query_sanger->fetch(PDO::FETCH_ASSOC);
- $query_sanger->closeCursor();
- $id_gene_esone = $risultato_sanger['ID_Gene_Esone'];
- //preparo la query e successivamente la eseguo per inserire i dati nella tabella Risultati_Sanger
- //il metodo prepared statements (che consiste nel prepare prima ed execute dopo)
- //garantisce migliori prestazioni ed evita SQL Injection
- $query_risultato_sanger = $pdo->prepare('INSERT INTO Risultati_Sanger VALUES (?, ?, ?, ?, ?, ?, ?, ?)');
- $query_risultato_sanger->execute(array($codice_paziente, $id_gene_esone, $posizione, $copertura, $conferma_vus, $conferma_patogenetica, $conferma_segregazione, $altro));
- //controllo il numero di record coinvolti nella query, se non ci sono vuol dire che e' avvenuto un errore
- //nella query
- if(!$query_risultato_sanger->rowCount()){
- var_dump($copertura, $conferma_vus, $conferma_patogenetica, $conferma_segregazione);
- die('Errore nell\'inserimento dati, prego ricontrollare i dati inseriti. I dati sono corretti? Contatta l\'amministratore di sistema');
- }
- else {
- echo 'Risultati Sanger inseriti correttamente';
- }
- //preparo la query per recuperare i dati appena inseriti sempre con il metodo prepared statements
- //il metodo prepared statements (che consiste nel prepare prima ed execute dopo)
- //garantisce migliori prestazioni ed evita SQL Injection
- $query_finale = $pdo->prepare('SELECT Risultati_Sanger.Codice_Paziente,
- Geni_Esoni.Gene, Geni_Esoni.Esone,
- Risultati.Posizione, Risultati.Copertura, Risultati.Conferma_VUS, Risultati.Conferma_Patogenetica,
- Risultati.Conferma_Segregazione, Risultati.Altro
- FROM Risultati_Sanger
- LEFT JOIN Geni_Esoni ON Risultati_Sanger.ID_Gene_Esone = Geni_Esoni.ID_Gene_Esone
- WHERE Risultati_Sanger.Codice_Paziente = ? AND Risultati_Sanger.ID_Gene_Esone = ? AND Risultati_Sanger.Posizione = ?');
- $query_finale->execute(array($codice_paziente, $id_gene_esone, $posizione));
- //grazie al fetch il ritorno di funzione consisterà in un array in cui ogni elemento e' presente sia con
- //la chiave letterale (nome della colonna usata nel DB) che con chiave numerica
- $risultato_finale = $query_finale->fetch(PDO::FETCH_ASSOC);
- $query_finale->closeCursor();
- return $risultato_finale;
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement