Advertisement
Guest User

Untitled

a guest
Jan 12th, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.53 KB | None | 0 0
  1. <?php
  2.  
  3.     function aggiunta_risultati_sanger(PDO $pdo){
  4.        
  5.         require_once 'endloggedin.php';
  6.        
  7.         //recupero i dati
  8.         $codice_paziente = recuperaPost('Codice_Paziente');
  9.         $gene_sanger = recuperaPost('Gene');
  10.         $esone_sanger = recuperaPost('Esone');
  11.         $posizione = recuperaPost('Posizione');
  12.         $copertura = recuperaPost('Copertura');
  13.         $conferma_vus = recuperaPost('Conferma_VUS');
  14.         $conferma_patogenetica = recuperaPost('Conferma_Patogenetica');
  15.         $conferma_segregazione = recuperaPost('Conferma_Segregazione');
  16.         $altro = recuperaPost('Altro');
  17.        
  18.         //controllo la pienezza delle variabili (ulteriore controllo in quanto nell'html e' gia' stato inserito
  19.         //l'attributo 'required' solo che, dopo alcuni test, ha dato dei problemi di compatibilita')
  20.         if(empty($codice_paziente)){
  21.             die('Codice paziente non inserito, prego riprovare.<br>');
  22.         }
  23.         if(empty($posizione)){
  24.             die('Posizione non inserita, prego riprovare.<br>');
  25.         }
  26.         if(empty($copertura) and empty($conferma_vus) and empty($conferma_patogenetica) and empty($conferma_segregazione)){
  27.             die('Non &egrave; stata inserita n&eacute; copertura n&eacute; conferme, prego riprovare.<br>');
  28.         }
  29.        
  30.         //preparo ed eseguo la query per recuperare l'id che viene generato nella tabella con gene ed esone
  31.         $query_sanger = $pdo->prepare('SELECT ID_Gene_Esone FROM Geni_Esoni WHERE Gene = ? AND Esone = ?');
  32.  
  33.         $query_sanger->execute(array($gene_sanger, $esone_sanger));
  34.  
  35.         //grazie al fetch il ritorno di funzione consisterà in un array in cui ogni elemento e' presente sia con
  36.         //la chiave letterale (nome della colonna usata nel DB) che con chiave numerica
  37.         $risultato_sanger = $query_sanger->fetch(PDO::FETCH_ASSOC);
  38.        
  39.         $query_sanger->closeCursor();
  40.        
  41.         $id_gene_esone = $risultato_sanger['ID_Gene_Esone'];
  42.        
  43.         //preparo la query e successivamente la eseguo per inserire i dati nella tabella Risultati_Sanger
  44.         //il metodo prepared statements (che consiste nel prepare prima ed execute dopo)
  45.         //garantisce migliori prestazioni ed evita SQL Injection
  46.         $query_risultato_sanger = $pdo->prepare('INSERT INTO Risultati_Sanger VALUES (?, ?, ?, ?, ?, ?, ?, ?)');
  47.        
  48.         $query_risultato_sanger->execute(array($codice_paziente, $id_gene_esone, $posizione, $copertura, $conferma_vus, $conferma_patogenetica, $conferma_segregazione, $altro));
  49.        
  50.         //controllo il numero di record coinvolti nella query, se non ci sono vuol dire che e' avvenuto un errore
  51.         //nella query
  52.         if(!$query_risultato_sanger->rowCount()){
  53.             var_dump($copertura, $conferma_vus, $conferma_patogenetica, $conferma_segregazione);
  54.             die('Errore nell\'inserimento dati, prego ricontrollare i dati inseriti. I dati sono corretti? Contatta l\'amministratore di sistema');
  55.         }
  56.         else {
  57.             echo 'Risultati Sanger inseriti correttamente';
  58.         }
  59.        
  60.         //preparo la query per recuperare i dati appena inseriti sempre con il metodo prepared statements
  61.         //il metodo prepared statements (che consiste nel prepare prima ed execute dopo)
  62.         //garantisce migliori prestazioni ed evita SQL Injection
  63.         $query_finale = $pdo->prepare('SELECT Risultati_Sanger.Codice_Paziente,
  64.                                    Geni_Esoni.Gene, Geni_Esoni.Esone,
  65.                                    Risultati.Posizione, Risultati.Copertura, Risultati.Conferma_VUS, Risultati.Conferma_Patogenetica,
  66.                                    Risultati.Conferma_Segregazione, Risultati.Altro
  67.                                    FROM Risultati_Sanger
  68.                                    LEFT JOIN Geni_Esoni ON Risultati_Sanger.ID_Gene_Esone = Geni_Esoni.ID_Gene_Esone
  69.                                    WHERE Risultati_Sanger.Codice_Paziente = ? AND Risultati_Sanger.ID_Gene_Esone = ? AND Risultati_Sanger.Posizione = ?');
  70.        
  71.         $query_finale->execute(array($codice_paziente, $id_gene_esone, $posizione));
  72.        
  73.         //grazie al fetch il ritorno di funzione consisterà in un array in cui ogni elemento e' presente sia con
  74.         //la chiave letterale (nome della colonna usata nel DB) che con chiave numerica
  75.         $risultato_finale = $query_finale->fetch(PDO::FETCH_ASSOC);
  76.        
  77.         $query_finale->closeCursor();
  78.        
  79.         return $risultato_finale;
  80.     }
  81.    
  82. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement