function process_fid_dir($fulldirname, $dirname)
{
    global $fulldir;
    global $fullstudyid;
    list($protocol, $runno) = split('[_.]', $dirname);
    // e.g.: epidw _ 01
    // skip spuls; note that most sems are just setting power and so aren't useful
    //if ($protocol != 'epidw' && $protocol != 'gems' && strncmp($protocol, 'T1map2', 6) && $protocol != 'sems')
    //  return;
    $dataname = $protocol . "_" . $runno;
    // rebuild last part without 'data/' prefix
    //print_r($a);
    $procparname = $fulldirname . "/procpar";
    //$fulldir."/".$a['DATA'].".fid/procpar";
    $fd = fopen($procparname, "r");
    if ($fd == false) {
        //echo "could not open: ".$procparname; return;
    } else {
        /* echo "opened: ".$procparname; */
    }
    $procvals = read_procpar($fd);
    fclose($fd);
    // make sure row not already uploaded first:  use studyid (s_200xxxxx/mark) and dataname (epidw_xx)
    // DECISION: for now, allow same study (same studyid+dataname) to be uploaded (which means one uploaded
    // from 'Upload Fid' and one from 'Discover Data'.  So, a duplicate would be same studyid+dataname and
    // also fulldir is not blank, which means this data has been discovered before:
    // REMINDER: studyid field in database is constructed from procpar studyid + '/' + operator !!!
    $fullstudyid = $procvals['studyid'] . "/" . $procvals['operator'];
    $check = "SELECT id,pathname FROM fid_files WHERE deleted='N' AND studyid=\"" . $fullstudyid . "\" AND dataname=\"" . $dataname . "\"";
    $q = mysql_query($check) or die("discover_this: mysql select error: " . mysql_error());
    if (mysql_error() != "") {
        echo "mysql select error: " . mysql_error();
        exit;
    }
    if (mysql_num_rows($q) > 0) {
        //echo "discover data found that studyid=".$procvals['studyid'].", dataname=".$dataname." is already in the database... ";
        while ($row = mysql_fetch_array($q, MYSQL_ASSOC)) {
            if ($row['pathname'] != "") {
                //echo "skipping because fulldir is not blank\n";
                return;
            }
        }
        //echo "adding again.\n";
    }
    $sql = "INSERT INTO fid_files (when_uploaded,exp_date,shots,consecutive,num_images,num_slices,time_run,comment,studyid,dataname,pathname,run_type,run_no,n_no,tr_s,te_s,orient,slice_thickness,slice_offset,gap,mtx_ro,mtx_pe,fov_ro,fov_pe,ms_intlv,gain,power,rfcoil,fatsat,ky_order,fract_ky,epi_pc) VALUES (";
    $sql .= "NOW()";
    $sql .= ", \"" . $procvals['exp_date'] . "\"";
    $sql .= ", " . $procvals['nseg'];
    $sql .= ", \"" . $procvals['consec'] . "\"";
    $sql .= ", " . $procvals['num_images'];
    $sql .= ", " . $procvals['num_slices'];
    $sql .= ", \"" . $procvals['time_run'] . "\"";
    $sql .= ", \"" . mysql_escape_string($procvals['comment']) . "\"";
    $sql .= ", \"" . $fullstudyid . "\"";
    // no subject in procpar! : $sql .= ", \"" . $procvals['subject'] . "\"";
    $sql .= ", \"" . $dataname . "\"";
    $sql .= ", \"" . $fulldir . "\"";
    $sql .= ", \"" . $protocol . "\"";
    $sql .= ", \"" . $runno . "\"";
    $sql .= ", \"" . $procvals['actionid'] . "\"";
    //a['ID'] . "\"";
    $sql .= ", " . $procvals['tr'];
    $sql .= ", " . $procvals['te'];
    $sql .= ", \"" . $procvals['orient'] . "\"";
    $sql .= ", " . $procvals['thk'];
    $sql .= ", " . $procvals['pss0'];
    $sql .= ", " . $procvals['gap'];
    $sql .= ", " . $procvals['np'];
    $sql .= ", " . $procvals['nv'];
    $sql .= ", " . $procvals['lro'];
    $sql .= ", " . $procvals['lpe'];
    $sql .= ", \"" . $procvals['ms_intlv'] . "\"";
    $sql .= ", " . $procvals['gain'];
    $sql .= ", " . $procvals['tpwr1'];
    $sql .= ", \"" . $procvals['rfcoil'] . "\"";
    $sql .= ", \"" . $procvals['fatsat'] . "\"";
    $sql .= ", \"" . $procvals['ky_order'] . "\"";
    $sql .= ", " . (int) $procvals['fract_ky'];
    $sql .= ", \"" . $procvals['epi_pc'] . "\"";
    $sql .= ")";
    //echo "\n".$sql."\n";
    //echo $n." = "; print_r($a); echo "\n";
    $q = mysql_query($sql) or die("discover_this: mysql insert error : " . mysql_error());
    $errstr = mysql_error();
    if ($errstr != "") {
        echo "mysql insert error: " . $errstr;
        exit;
    } else {
    }
    //echo "insert successful ? " . mysql_insert_id() . "\n\n";
    // make sure studies table has this study
    $d["studyid"] = $fullstudyid;
    $dirparts = explode("/", $fulldir);
    $d["description"] = $dirparts[count($dirparts) - 1];
    $d["subject"] = "";
    $d["notes"] = "";
    $data = read_study_table($fullstudyid);
    if ($data["notfound"] == 0) {
        if (strlen($data["description"])) {
            $d["description"] = $data["description"];
        }
        $d["subject"] = $data["subject"];
        $d["notes"] = $data["notes"];
    }
    add_or_update_study($d);
}
<?php

require "shared.inc";
$host = strlen($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
if (isset($_POST["studyid"])) {
    $data["studyid"] = $_POST["studyid"];
    $subj = $_POST["subject"];
    if (strlen($subj) < 1) {
        $subj = $_POST["newsubject"];
    }
    $data["subject"] = $subj;
    $data["description"] = $_POST["description"];
    $data["notes"] = $_POST["notes"];
    $conn = @mysql_connect("localhost", "root", "mysqlrootpassword") or die("error: could not connect to db");
    mysql_select_db("cdfi", $conn) or die("error: could not select db: " . mysql_error());
    //update_study_table($data);
    add_or_update_study($data);
    if (strlen(mysql_error())) {
        echo mysql_error();
        exit;
    }
    header("Location: http://{$host}/mri_analysis/index_study.php?studyid=" . $_POST["studyid"]);
    exit;
}
header("Location: http://{$host}/mri_analysis/index.php");
exit;