2016-12-12 84 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(未找到)的消息。 –