2016-03-30 13 views
0

Dizim hastayı [6] eşittir nasıl doğrudur (doğrudur, demek ki veri var, eğer hasta içinde veri varsa [ 0] sonra hasta [6] "ONAYLI" çıkışına sahip olmalı ve hasta [0] 'da bir veri yoksa hasta [6] "DISAPPROVED" çıkışına sahip olmalıdır.Dizim hastası [6] nasıl doğru yapılır ve çıkış Onaylanmalıdır

Bu benim kodlarım ...

$sql = "select patientid, firstname, lastname, gender, patienttype, philhealth, status from patients where lastname LIKE '%" . $_POST["key"] . "%' or philhealth LIKE '%" . $_POST["key"] . "%' "; 
    $result = mysql_query($sql, $connection); 
    $rownum = 0; 
    $bgcolor = ""; 
    while($patient = mysql_fetch_array($result)) 
    { 
     $rownum += 1; 
     if($rownum == 2) 
     { 
      $bgcolor = "#FFF"; 
      $rownum = 0; 
     } 
     else 
     { $bgcolor = "#f9f9f9"; } 

     echo " 
     <tr id='" . $patient[0] . "' style='background: " . $bgcolor . "' onclick='openphilhealthapproval() '> 
       <td id='td27_cell1' style='height: 25px;'>" . $patient[5] . " </td> 
       <td id='td27_cell2' style='height: 25px;'>" . $patient[0] . "</td> 
       <td id='td27_cell3' style='height: 25px;'>" . $patient[1] . " " . $patient[2] . "</td> 
       <td id='td27_cell4' style='height: 25px;'>" . $patient[3] . "</td> 
       <td id='td27_cell5' style='height: 25px;'>" . $patient[4] . "</td> 
       <td id='td27_cell6' style='height: 25px;'>" . $patient[6] . "</td> 
      </tr> 
     "; 
    } 
+0

sen, kullanımdan kaldırıldı mysql kullanıyoruz izlemek gerekiyor başka şeyler denemek ve mysqli kullanmalısınız. Ayrıca sql enjeksiyonuna karşı savunmasızsınız. (= veya daha iyisi hazırlanmış bir deyimi kullanarak) posta çıktısında doğrudan değişken ekleme ekliyorsunuz, – Jester

+0

Ayrıca, geçersiz html veya XSS güvenlik açığı – Phil

+0

neden olabilir çıkış çıkış herhangi bir formu kullanmıyorsunuz Onu [Kod Gözden Geçirme] (http://codereview.stackexchange.com/). –

cevap

0

Bu kullanabilirsiniz ... Ben burada yapacak: ($ hastayı [0] = "!"):? $ hasta [6] = "onaylanmış": $ hasta [6] = "İYİLEŞTİRİLMİŞ"

+0

* Eğer hasta [0] 'da veri varsa, hasta [6] "ONAYLANDI" * çıkışına sahip olmalıdır, bu yüzden üçüncül hastanın [0] 'üzerinde olması gerektiğini ve sonucu hastaya [6] kaydetmeliyim. – Sean

+0

Evet, haklısın! – Ash

+0

Temiz bir sürüm, $ hasta [6] = trim ($ hasta [0]) olur! = ""? "ONAYLANDI": "DISAPPROVED"; – Sean

0

Bu hile yapmak gerekir:

if(empty($patient[0])) { 
    $patient[6] = "DISAPPROVED"; 
else { 
    $patient[6] = "APPROVED"; 
} 

bir değer mevcut olmayabilir, ya boş iken fonksiyonu geri yanlış veren değer boş olduğunda (null, 0, yanlış "" [] ve benzeri) . bkz: http://php.net/manual/en/function.empty.php

+0

Bu kod soruya cevap verebilirken, sağlamasının _why_ ve/veya _how_ ile ilgili ek bağlamı yanıtı uzun vadeli değerini önemli ölçüde artıracaktır. Lütfen bazı açıklama eklemek için cevabınızı [düzenleyin]. –

+0

@TobySpeight biraz açıklama ekledim. Ben gelecekteki için akılda tutulacağım ^^ – Jester

0

Bunu [6] hasta assign değeri üçlü operatörünü kullanabilirsiniz:

$ hasta [6] = ($ hasta [0] 'ONAYLI':? 'Reddedildi');

0

Sorunuz için, değeri üçlü operatörle veya deyim ile atayabilirsiniz. Zehirini seç.

Üçlü: $patient[6] = !empty($patient[0]) ? "APPROVED" : "DISAPPROVED";

ifadesi ise:

if(!empty($patient[0])) 
{ 
    $patient[6] = "APPROVED"; 
} 
else 
{ 
    $patient[6] = "DISAPPROVED"; 
} 

Ya PHP'nin MySQL fonksiyonları herhangi birini kullanarak olmamalıdır, bunlar mysqli veya PDO kullanın kaldırılmış ve güvensiz ediyoruz.

+0

Ben mysql 'mysqli değil demek olduğunu düşünüyorum düşünüyorum – Sean

+0

Haklısın. Değiştirildi. –

0

bu deneyin:

$sql = 'SELECT patientid, firstname, lastname, gender, patienttype, philhealth, status FROM patients WHERE lastname LIKE \'%' . $_POST['key'] . '%\' or philhealth LIKE \'%' . $_POST['key'] . '%\''; 
$result = mysql_query($sql, $connection); 
$rowstyle = false; 
while($patient = mysql_fetch_array($result)) { 
    if($rowstyle) 
     $bgcolor = '#fff'; 
    else 
     $bgcolor = '#f9f9f9'; 

    $rowstyle = !$rowstyle; 

    echo 
     '<tr id="', htmlspecialchars($patient[0]), '" style="background: ', $bgcolor, ';" onclick="openphilhealthapproval()">', "\n", 
     '<td id="td27_cell1" style="height: 25px;">', htmlspecialchars($patient[5]), '</td>', "\n", 
     '<td id="td27_cell2" style="height: 25px;">', htmlspecialchars($patient[0]), '</td>', "\n", 
     '<td id="td27_cell3" style="height: 25px;">', htmlspecialchars($patient[1]), '</td>', "\n", 
     '<td id="td27_cell4" style="height: 25px;">', htmlspecialchars($patient[3]), '</td>', "\n", 
     '<td id="td27_cell5" style="height: 25px;">', htmlspecialchars($patient[4]), '</td>', "\n", 
     '<td id="td27_cell6" style="height: 25px;">', (!isset($patient[0][0]) ? 'DIS' : ''), 'APPROVED', '</td>', "\n", 
     '</tr>', "\n"; 
} 

PHP bir bayt dizisi olarak dizeleri kullanır, böylece bunun yerine "boş", denetimi veya dize uzunluğu 0'a eşitse, sadece eğer kontrol ediyoruz dizenin ilk baytı ayarlandı.

$patient[6] = (isset($patient[0][0]) ? 'DIS' : '') . 'APPROVED'; 

veya

if(isset($patient[0][0])) 
    $patient[6] = 'DIS'; 
else 
    $patient[6] = ''; 
$patient[6] .= 'APPROVED'; 
İlgili konular