2014-03-13 1 views
0

내 PHP에이 기능이 있습니다PHP 양식

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++; 
     } 
} 

을 그리고 내 양식입니다 : 내가 쇼 nbmatch 시간을 위해 할 수있는 방법

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'); 

사람이 내 테이블을 원하는 ? 내가 지금 할 때 아무 일도 일어나지 않습니다. 도움을 주셔서 감사합니다.

추신 : 예를 들어 테이프 5의 경우, 필자는 제 기능을 수행 한 시간을 5 번 볼 수 있습니다.

+1

사람들이 내 테이블을 보여 주려면 어떻게해야합니까? 그게 무슨 뜻 이죠? –

+0

편집, 변경했습니다 – user3414480

답변

0

방문자가 숫자를 입력하고 표시 한 데이터와 일치하는 항목을 제출할 수 있도록하기 위해 내포 한 내용 (지금까지 이해 한대로). 방문자 수는 리미터로 사용됩니다.

1. POST 변수는 어디서 얻습니까? 입력 값이 'nbmatchs'인 양식 아래에 함수를 배치했습니다. 폼을 제출하고 'nbmatches'값을 얻고 필터링을 위해 SQL 쿼리에 적용하기를 원했던 것 같습니다. 당신이 해낸 방식은 효과가 없습니다. 폼 요소에 action 속성이 index.php로 설정되어 있습니다. 그것이 우리가 양식 데이터를 제출할 곳입니다. 따라서 제출 된 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