2014-03-13 41 views
0

我有我的PHP這樣的功能:PHP形式與SQL請求

function getLastMatchs($nb) { 
    try 
    { 
    $db = new PDO(DBHOST, DBUSER, DBPASS); 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } 
    catch(PDOException $e) 
    { 
     die('connexion failed: '.$e->getMessage()); 
    } 
    $i=0; 
     $get5tmatchs = $db->query('SELECT wid, lid, date, cwid, clid FROM `match`'); 
     while ($nb<$i) 
     { 
      $data5matchs = $get5tmatchs->fetch(); 
      echo '<tr> 
        <td>'.$data5matchs['wid'].'</td>'; 
        echo '<td>'.$data5matchs['lid'].'</td>'; 
        echo '<td>'.$data5matchs['cwid'].'</td>'; 
        echo '<td>'.$data5matchs['clid'].'</td>'; 
        echo '<td>'.$data5matchs['date'].'</td> 
        <br> 
       </tr>'; 
     $i++; 
     } 
} 

我的形式是:

echo '<form action="index.php" method="post"> 
       <h3>My question......</h3> 
       <p> 
        <input type="text" name="nbmatchs" /> 
        <input type="submit" value="ok" /> 
       </p> 
       </form>'; 
     echo getLastMatchs('nbmatchs'); 

我如何作秀nbmatch時間做的傢伙想我的表? 當我現在做,沒有發生。 感謝您的幫助

PS:例如,我爲磁帶5,我可以看到5次我把我的功能放在tabe。

+1

我該怎麼辦才能顯示男生想要我的表?那是什麼意思 ? –

+0

編輯,我已更改 – user3414480

回答

0

你想要完成什麼(據我所知)允許訪問者輸入一個數字,然後在它顯示的一些「匹配」數據之後提交它。所輸入的訪客數量是限制者。

1.您在哪裏獲得POST變量?你已經在表單下面放置了一個輸入值爲'nbmatchs'的函數。我想你想提交表單並獲取'nbmatches'的值,然後將其應用於SQL查詢進行過濾。你做到這一點的方式是行不通的。你的表單元素設置爲index.php的action屬性。這就是我們要提交表單數據的地方。所以我們需要有一種方法來獲取提交的POST變量。我們這樣做是這樣的:

$nbmatchs = $_POST['nbmatchs']; 

決不信任數據客戶給你。我們知道,它必須在數量,讓我們做一次檢查就可以了:

$nbmatches = is_numeric(trim($_POST['nbmatchs'])) ? $_POST['nbmatchs'] : 1; 

上面我們檢查,如果數據的客戶端已經給確實是一個數字。如果是這樣,我們將把這個nubmer賦值給變量$ nbmatches。如果數據客戶端給出的不是數字(例如一些字符串),我們將數字1指定給該變量。在這一點上,我們可以結束腳本執行,讓訪問者知道他必須輸入一個數字,但如果有任何可疑的情況,我們只給變量賦值1。之後,我們可以將此變量提交給函數getLastMatchs,該函數接受變量並將其作爲結果限制器分配給SQL查詢。假設所有的代碼將在一個文件「的index.php」你應該有下面的代碼:

<?php 

function getLastMatchs($nbmatches) { 

    try{ 
     $db = new PDO(DBHOST, DBUSER, DBPASS); 
     $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } catch(PDOException $e) { 
     die('connexion failed: '.$e->getMessage()); 
    } 

    try { 
     $select = $db->prepare('SELECT wid, lid, date, cwid, clid FROM `match` LIMIT '.$nbmatches.';'); 
     $select->execute(); 
     $results = $select->fetchAll(PDO::FETCH_ASSOC); 
    } catch(PDOException $ex) { 
     echo "<span style='color:red'>".$ex->getMessage()."</span></p>"; 
    } 

    echo '<table>'; 

    foreach($results as $result){ 
     $output = '<tr>'; 
     $output .= '<td>'.$result['wid'].'</td>'; 
     $output .= '<td>'.$result['lid'].'</td>'; 
     $output .= '<td>'.$result['cwid'].'</td>'; 
     $output .= '<td>'.$result['clid'].'</td>'; 
     $output .= '<td>'.$result['date'].'</td>'; 
     $output = '</tr>'; 

     echo $output; 
    } 

    echo '</table>'; 

} 

if(isset($_POST['nbmatchs'])){ 
    $nbmatches = is_numeric(trim($_POST['nbmatchs'])) ? $_POST['nbmatchs'] : 1; 
    getLastMatchs($nbmatches); 
} 

?> 

<form action="index.php" method="post"> 
    <h3>My question......</h3> 
    <p> 
     <input type="text" name="nbmatchs" /> 
     <input type="submit" value="ok" /> 
    </p> 
</form> 

讓我知道這是否你想要的方式。

+0

iget此錯誤:調用未定義的函數isNumeric()在 – user3414480

+0

我很抱歉,我的錯誤。我寫錯了PHP的函數名。而不是'isNumeric'它應該是'is_numeric'。我將修補程序應用於上面的代碼。 – Robert

+0

如果您有解決問題的方法,請點擊相應的按鈕,接受該帖子作爲答案。 – Robert