Rumah  >  Soal Jawab  >  teks badan

Mencari cara yang cekap untuk mengendalikan sebilangan besar semakan penyata If berulang

Apabila saya cuba mencipta alat carian untuk pangkalan data yang saya cipta untuk tesis sarjana saya, saya perlu melakukan banyak penyemakan nilai yang dimasukkan pengguna dan menjana serta melaksanakan yang sesuai MySQL查询 berdasarkan nilai tersebut. Contohnya seperti berikut:

HTML代码

(part of the whole table)
<tr id="tablerow" class="">
              <th id="selectth">
                <select class="selection" name="Attributes" id="Attributes">
                  <!-- List of all the available attributes for the user to select for the searching queries -->
                  <option disabled>Options</option>
                  <option value="Name" id="p_Name">Name</option>
                  <option value="ID" id="p_Id">Patient ID</option>
                  <option value="Sex" id="p_Sex">Sex</option>
                  <option value="Email" id="p_Email">Patient Email</option>
                  <option value="Age" id="p_Age">Age ></option>
                  <option value="Agesmaller">Age < </option>
                  <option value="Race" id="p_Race">Race</option>
                  <option value="PhoneNumber" id="p_Phonenum">Phone Number</option>
                  <option value="Comorbidities" id="p_Comorbidities">Comorbidities</option>
                  <option value="EDSS" id="p_eddsscore">EDSS Score</option>
                  <option value="Pregnant" id="p_Pregnant">Is Pregnant</option>
                  <option value="Onsetlocalisation" id="p_Onsetlocalisation">Onset Localisation</option>
                  <option value="Smoker" id="p_Smoker">Is a Smoker</option>
                  <option value="onsetsymptoms" id="p_onsetsymptoms">Onset Symptoms</option>
                  <option value="MRIenhancing" id="p_MRIenhancing">MRI Enhancing Lesions</option>
                  <option value="MRInum" id="p_MRInum">MRI Lesion No.</option>
                  <option value="MRIonsetlocalisation" id="p_MRIonsetlocalisation">MRI Onset Localisation</option>
                </select>
              </th>

Sebagai bahagian lain dalam jadual yang sama, saya mempunyai butang yang membolehkan pengguna membuat baris kedua input untuk carian yang lebih khusus, dengan 2 atribut, menggunakan pernyataan DAN atau ATAU. <button type="button" id="new_row_btn" onclick="addRow()" name="new_row">添加额外行</button>

Saya ingin memastikan siaran ini teratur untuk menerima jawapan, jadi saya tidak akan memasukkan fungsi JavaScript addRow(), tetapi jika perlu sila komen dan saya akan mengeditnya secepat mungkin.

Masalah saya adalah seperti berikut, saya mempunyai dua input ini dan saya ingin menyemak sama ada pengguna memasukkan apa-apa pada baris kedua (dalam input "Lanjutan") dan kemudian melakukan tindakan yang sesuai berdasarkan nilai baharu pertanyaan.

Kod PHP semasa kelihatan seperti ini:

PHP代码

if($option == 'Name' && $newoption == 'Email' && !empty($newEmail)){
                $sql = "SELECT patients.Patient_id,patients.Patient_name,patients.DOB,patients.Phonenum,patients.Email,MSR.Sex FROM patients,MSR WHERE patients.Patient_id = MSR.NDSnum AND Doctor_ID = $usersid AND patients.Email = '$newEmail' $and_or patients.Patient_name LIKE '%$entry%' ORDER BY Patient_id";
                $result = $pdo->query($sql);
                if ($result->rowCount() > 0) {
                  while ($row = $result->fetch()) { ?>
                    <table id="standard">
                      <tr>
                        <th>Patient ID</th>
                        <th>Name</th>
                        <th>Date of Birth</th>
                        <th>Phone Number</th>
                        <th>Email</th>
                        <th>Sex</th>
                        <th>Previous Visits</th>
                      </tr>
                      <tr>
                        <td><?php echo $row['Patient_id']; ?></td>
                        <td> <?php echo $row['Patient_name']; ?> </td>
                        <td><?php echo $row['DOB']; ?></td>
                        <td><?php echo $row['Phonenum']; ?></td>
                        <td><?php echo $row['Email']; ?></td>
                        <td><?php echo $row['Sex']; ?></td>
                        <td><?php echo "<a href='/application/previousvisit-bootstrap.php?id=" . $row['Patient_id'] . "'>Previous Visits</a>"; ?></td>
                      </tr>
                    </table>
                    <div class="line"></div>
                  <?php }
                 } else {
                  echo "No patient exists with this information. Name+Email";
                }
              } if ($option == 'Name' && $newoption == 'Age' && !empty($newAge)){
                $sql = "SELECT * FROM patients WHERE timestampdiff(year,dob,curdate()) > '$entry' $and_or patients.Patient_name LIKE '%$entry%' AND Doctor_ID = $usersid ORDER BY Patient_id";
                $result = $pdo->query($sql);
                if ($result->rowCount() > 0) {
                  while ($row = $result->fetch()) { ?>
                    <table id="standard">
                      <tr>
                        <th>Patient Id</th>
                        <th>Patient Name</th>
                        <th>Date of Birth</th>
                        <th>Phone Number</th>
                        <th>Email</th>
                        <th>Previous Visits</th>
                      </tr>
                      <tr>
                        <td><?php echo $row['Patient_id']; ?></td>
                        <td> <?php echo $row['Patient_name']; ?> </td>
                        <td><?php echo $row['DOB'] ?></td>
                        <td><?php echo $row['Phonenum']; ?></td>
                        <td><?php echo $row['Email']; ?></td>
                        <td><?php echo "<a href='/application/previousvisit-bootstrap.php?id=" . $row['Patient_id'] . "'>Previous Visits</a>"; ?></td>
                      </tr>
                    </table>
                    <div class="line"></div>
                  <?php }
                } else {
                  echo "No patient exists with this information. Name+Age";
                }

Pernyataan if di atas akan bertahan kira-kira 20 kali... setiap kali ia akan menyemak hubungan satu harta dengan harta yang lain.. cth. Name+newIDID+newNameEmail+newSex Jelas sekali saya tahu saya belum selesai dan terdapat beratus-ratus kemungkinan gabungan sifat-sifat ini, tetapi saya tertanya-tanya jika ada cara untuk mengelakkan semua ini dan menjadikannya lebih mudah...

Maaf kerana bertanya soalan yang panjang! Sebarang komen tentang cara membuat soalan ini lebih baik adalah dialu-alukan.

Terima kasih terlebih dahulu atas masa anda.

P粉421119778P粉421119778181 hari yang lalu339

membalas semua(1)saya akan balas

  • P粉239089443

    P粉2390894432024-04-04 15:29:02

    Mungkin menggabungkan keadaan JIKA yang sama bersama-sama?

    Inilah yang saya cadangkan:

    if ($option == 'Name') {
        if ($newoption == 'Email' && !empty($newEmail)) {
            //...
        }
        if ($newoption == 'Age' && !empty($newAge)) {
            //...
        }
    }

    Kurang ulangan:

    if ($option == 'Name') {
        // use this 'if', if $newoption correlates to which child if is populated...
        if ($newoption == 'Email' || $newoption == 'Age') {
            if (!empty($newEmail)) {
                //...
            }
            if (!empty($newAge)) {
                //...
            }
        }
    }

    balas
    0
  • Batalbalas