2016-12-12 82 views
1

感謝一些幫助我有一個工作的PHP文件。我現在正在調整它,所以當數據庫中沒有數據時,它會給我一定的文字。如果沒有結果顯示文本(但只有一次)

問題是,我想我得到了邏輯,只是不知道代碼它。讓我從顯示代碼開始:

<?php 
$dbhost = 'localhost'; 
$dbuser = '**********'; 
$dbpass = '**********'; 
$database = '**********'; 
    ini_set('display_errors', 1); 
    ini_set('display_startup_errors', 1); 
    error_reporting(E_ALL); 
    if (isset($_GET['zoeknummer'])) { 
     $pdo = new PDO("mysql:host=$dbhost; dbname=$database", $dbuser, $dbpass); 
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 
     $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
     $sql = "SELECT lead_content 
    FROM wp_wgbsupicrm_leads"; 
     $res = $pdo->query($sql);  // where $pdo is your db connection 

    while ($lead = $res->fetchColumn()) { 

     $data = json_decode($lead); 

    if ($data->zoeknummer == $_GET['zoeknummer']) { 
     echo "Uw plaats voor " ; 
     echo $data->wachtlijstkomplex . ' : ' . $data->wachtlijstplaats . '<br>'; 
     }  
    else { 
     echo 'Geen resultaat gevonden met opgegeven nummer. <br> Kijk na of U het nummer correct heeft ingevuld.'; 
     } 
    } 
}?> 

我明白'while'會搜索整個數據庫,if會顯示找到的結果。

我也明白,當沒有在該列中找到數據時,其他人將顯示文本,我知道這將爲每列找不到數據,並且存在問題。

我只希望它顯示文本顯示一次。沒有mather它搜索了多少列。此代碼現在還顯示所有espty搜索的文本,並將在所有否定結果之間顯示結果。

我得到的邏輯是,我需要從''時間'取得'其他',但就是這樣。任何幫助將不勝感激,我仍然試圖瞭解這種PHP語言,並正在學習,我知道解決方案可能就像打破雞蛋一樣簡單..但如果你不知道雞蛋是什麼.. ;-)

在此先感謝!

+0

事實上,打破東西的一部分解決方案,雖然不是雞蛋,但[打破循環](http://php.net/manual/en/control-structures.break.php):)閱讀並[繼續](http://php.net) /manual/en/control-structures.continue.php)在這裏閱讀。 –

+0

你不應該從你的數據庫中獲取所有行,並循環遍歷它們以找到一個特定的數字。相反,向您的查詢添加一個「WHERE」子句,只獲取所需的行(如果有的話)。 – jeroen

+0

嗨Alon_A。 我明白'你的邏輯'在這裏是什麼意思。但是,一旦找到結果,是不是會「斷開」循環?對於1個查詢可以有更多的結果,並且數據庫沒有固定的大小,所以它應該讀取所​​有規則並'echo'每個結果有一個命中,但是如果根本沒有,那麼我想要看到其他文字。 –

回答

0

感謝所有幫助下,它的工作現在,我將發佈結果代碼,所以它是有幫助的人有同樣的問題:

if (isset($_GET['zoeknummer'])) 
           { 
            $pdo = new PDO("mysql:host=$dbhost; dbname=$database", $dbuser, $dbpass); 
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
            $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 
            $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
            $sql = "SELECT lead_content 
             FROM wp_wgbsupicrm_leads"; 
            $res = $pdo->query($sql);  // where $pdo is your db connection 
            $flag=false; 

            while ($lead = $res->fetchColumn()) 
            {    
             $data = json_decode($lead); 
             if ($data->zoeknummer == $_GET['zoeknummer']) 
             { 
              echo "Uw plaats voor " ; 
              echo $data->wachtlijstkomplex . ' : ' . $data->wachtlijstplaats . '<br>'; 
              $flag=true; 
             } 

            } 

            if ($flag==false) 
            { 
             echo 'Geen resultaat gevonden met opgegeven nummer. <br> Kijk na of U het nummer correct heeft ingevuld.'; 
            } 

           } 
0

你可以這樣做:

<?php 
    $dbhost = 'localhost'; 
    $dbuser = '**********'; 
    $dbpass = '**********'; 
    $database = '**********'; 
    ini_set('display_errors', 1); 
    ini_set('display_startup_errors', 1); 
    error_reporting(E_ALL); 
    if (isset($_GET['zoeknummer'])) { 
     $pdo = new PDO("mysql:host=$dbhost; dbname=$database", $dbuser, $dbpass); 
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 
     $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
     $sql = "SELECT lead_content FROM wp_wgbsupicrm_leads"; 
     $res = $pdo->query($sql);  // where $pdo is your db connection 
     $foundResult = false; 


    if(mysqli_num_rows($res) > 0)    // <------ here 
    { 
     while ($lead = $res->fetchColumn()) { 

       $data = json_decode($lead); 

      if ($data->zoeknummer == $_GET['zoeknummer']) { 
       echo "Uw plaats voor " ; 
       echo $data->wachtlijstkomplex . ' : ' . $data->wachtlijstplaats . '<br>'; 
       }  
    } else { 
      echo 'Geen resultaat gevonden met opgegeven nummer. <br> Kijk na of U het nummer correct heeft ingevuld.'; 
    } 
+0

你的意思是我應該更換 (isset($_GET['zoeknummer'])) { $pdo = new PDO("mysql:host=$dbhost; dbname=$database", $dbuser, $dbpass); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); .....if ($res)? –

+0

我編輯了它。看一看。 – deChristo

+0

不需要使用$ foundResult = false; – deChristo

0

只是工作,你有代碼的,我只想設置一個標誌,以表明您是否真正找到了while循環的結果。事情是這樣的:

<?php 
    $dbhost = 'localhost'; 
    $dbuser = '**********'; 
    $dbpass = '**********'; 
    $database = '**********'; 
    ini_set('display_errors', 1); 
    ini_set('display_startup_errors', 1); 
    error_reporting(E_ALL); 
    if (isset($_GET['zoeknummer'])) { 
     $pdo = new PDO("mysql:host=$dbhost; dbname=$database", $dbuser, $dbpass); 
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 
     $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
     $sql = "SELECT lead_content FROM wp_wgbsupicrm_leads"; 
     $res = $pdo->query($sql);  // where $pdo is your db connection 
     $foundResult = false; 

     while ($lead = $res->fetchColumn()) { 

      $data = json_decode($lead); 

      if ($data->zoeknummer == $_GET['zoeknummer']) { 
       echo "Uw plaats voor " ; 
       echo $data->wachtlijstkomplex . ' : ' . $data->wachtlijstplaats . '<br>'; 
       $foundResult = true; 
      } 
     } 
     if (!$foundResult) { 
      echo 'Geen resultaat gevonden met opgegeven nummer. <br> Kijk na of U het nummer correct heeft ingevuld.'; 
     } 
    }?> 
+0

嘿,我試過了,它一直顯示更多然後1(未找到)的消息。 –