2014-07-04 74 views
0

我目前正在創建一個數據庫/表的列表排序系統,它將顯示當前用戶的喜好/不喜歡。用戶喜歡/不喜歡被取出,並由來自單獨文件的功能管理,該文件被稱爲displayRating()。我使用require_once在我的列表開始處調用它所在的單獨文件,然後開始工作。PHP - 在同一個文件上多次運行相同的php函數

我然後繼續前進,有我

foreach(...){ 
... 
displayRating($id); 
... 
} 

但是我得到一個錯誤,這似乎是在告訴我,我不能調用一個函數在同一個頁面中多次。這是我確切的(未優化)代碼:

vote.php

<?php 
function displayRating($id){ 
    if(isset($id)){ 
     require_once('medoo.min.php'); 
     // Start up the D.B. Connection 
     $database = new medoo([ 
     // required 
     'database_type' => 'mysql', 
     'database_name' => '****', 
     'server' => 'localhost', 
     'username' => '****', 
     'password' => '****', 
     'charset' => 'utf8', 
     // driver_option for connection, read more from http://www.php.net/manual/en/pdo.setattribute.php 
     'option' => [ 
     PDO::ATTR_CASE => PDO::CASE_NATURAL 
     ]]); 
     // xf_user_field_value DB. Amount of ratings: 506c617965725f7261746573 Current Score: 706c617965725f726174696e67 
     $accountinfo = $database->select('xf_user_field_value', ['field_value'], ["user_id"=>$id]); 
     $vScore = $accountinfo[5]['field_value']; 
     // Processing Time 
     $phrase = '<div class="bc"><div data-hint="%1$s" class="hint--right vote %2$s"></div></div>'; 
     if($vScore == 0){ 
      printf($phrase, 'Neutral Score', 'v_equal'); 
      return; 
     } elseif ($vScore > 0){ 
      // Positive Here 
      switch($vScore){ 
       case 1: 
        printf($phrase, '1 Like', 'v_p1 hint--success'); 
        break; 
       case 2: 
        printf($phrase, '2 Likes', 'v_p2 hint--success'); 
        break; 
       case 3: 
        printf($phrase, '3 Likes', 'v_p3 hint--success'); 
        break; 
       case 4: 
        printf($phrase, '4 Likes', 'v_p4 hint--success'); 
        break; 
       case 5: 
        printf($phrase, '5 Likes', 'v_p5 hint--success'); 
        break; 
       case 6: 
        printf($phrase, '6 Likes', 'v_p6 hint--success'); 
        break; 
       case 7: 
        printf($phrase, '7 Likes', 'v_p7 hint--success'); 
        break; 
       default: 
        printf($phrase, $vScore . ' Likes', 'v_p7 hint-success'); 
        break; 
      } 
     } elseif ($vScore < 0){ 
      // Negative Here 
      switch($vScore){ 
       case -1: 
        printf($phrase, '1 Dislike', 'v_m1 hint--error'); 
        break; 
       default: 
        if($vScore < -7){ $vClass = 7; } else { $vClass = abs($vScore); } 
        printf($phrase, abs($vScore) . ' Dislikes', 'v_m' . $vClass . ' hint--error'); 
      } 
     } 
    } else { 
     return; 
    } 
} 
?> 

displayCodes.php

<?php 
function displayCodesMain($page){ 
    if($page == 1){?> 
<table class="friendcodes"> 
    <tr> 
     <th>Username</th> 
     <th>Friend Code</th> 
     <th>Affinity</th> 
     <th>Level</th> 
     <th>Rating</th> 
    </tr> 
<?php 
$plisting = file_get_contents('plist.txt'); 
$plist = explode(' ', $plisting, 4); 
require_once('vote.php'); 
array_pop($plist); 
    foreach($plist as $item) { 
     $item = explode(':', $item); 
     echo '<tr class="fc_premium">'; 
     $item[3] = substr($item[3], 0, 3) . '-' . substr($item[3], 3, 7); 
     $item[1] = str_replace('&', ' ', $item[1]); 
     echo '<td>' . $item[1] . '</td><td>' . $item[3] . '</td><td style="text-transform:capitalize;">' . $item[4] . '</td><td>' . $item[5] . '</td><td> <div class="bc"><div class="vote v_p7"> </div></div> </td>'; 
     echo '</tr>'; 
    } 
$listing = file_get_contents('list.txt'); 
$list = explode(' ', $listing, 26); 
array_pop($list); 
    foreach($list as $item) { 
     $item = explode(':', $item); 
     echo '<tr class="fc_regular">'; 
     $item[3] = substr($item[3], 0, 3) . '-' . substr($item[3], 3, 7); 
     $item[1] = str_replace('&', ' ', $item[1]); 
     echo '<td>' . $item[1] . '</td><td>' . $item[3] . '</td><td style="text-transform:capitalize;">' . $item[4] . '</td><td>' . $item[5] . '</td><td>'. displayRating($item[0]) .'</td>'; 
     echo '</tr>'; 
    } 

    echo '</table>'; 
} else if($page == 2) { 
// Start page #2 management 
?> 
<table class="friendcodes"> 
    <tr> 
     <th>Username</th> 
     <th>Friend Code</th> 
     <th>Affinity</th> 
     <th>Level</th> 
    </tr> 
<?php 
$listing = file_get_contents('list.txt'); 
$list = explode(' ', $listing, 51); 
$list = array_slice($list, 25, 25); 
array_pop($list); 
    foreach($list as $item) { 
     $item = explode(':', $item); 
     echo '<tr class="fc_regular">'; 
     $item[3] = substr($item[3], 0, 3) . '-' . substr($item[3], 3, 7); 
     $item[1] = str_replace('&', ' ', $item[1]); 
     echo '<td>' . $item[1] . '</td><td>' . $item[3] . '</td><td style="text-transform:capitalize;">' . $item[4] . '</td><td>' . $item[5] . '</td>'; 
     echo '</tr>'; 
    } 
?> 
    </table> 
    <?php 
} 
} // Close the function 
?> 

test.php的(我正在使用動態獲取值和whatnot - 警告,包含一些CSS,您可以安全地跳過。

<?php 
/*include('newUser.php'); 
addNewUser('1', 'true', 'Spitfire', '8JX-UKR8', 'Spirit', '90');*/ 
require('displayCodes.php'); 
displayCodesMain(1); 
?> 
<head> 


<style> 
/*! Hint.css - v1.3.2 - 2014-05-18 
* http://kushagragour.in/lab/hint/ 
* Copyright (c) 2014 Kushagra Gour; Licensed MIT */ 

.hint,[data-hint]{position:relative;display:inline-block}.hint:before,.hint:after,[data-hint]:before,[data-hint]:after{position:absolute;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);transform:translate3d(0,0,0);visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;-webkit-transition:.3s ease;-moz-transition:.3s ease;transition:.3s ease;-webkit-transition-delay:0ms;-moz-transition-delay:0ms;transition-delay:0ms}.hint:hover:before,.hint:hover:after,.hint:focus:before,.hint:focus:after,[data-hint]:hover:before,[data-hint]:hover:after,[data-hint]:focus:before,[data-hint]:focus:after{visibility:visible;opacity:1}.hint:hover:before,.hint:hover:after,[data-hint]:hover:before,[data-hint]:hover:after{-webkit-transition-delay:100ms;-moz-transition-delay:100ms;transition-delay:100ms}.hint:before,[data-hint]:before{content:'';position:absolute;background:transparent;border:6px solid transparent;z-index:1000001}.hint:after,[data-hint]:after{content:attr(data-hint);background:#383838;color:#fff;text-shadow:0 -1px 0 #000;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;box-shadow:4px 4px 8px rgba(0,0,0,.3)}.hint--top:before{border-top-color:#383838}.hint--bottom:before{border-bottom-color:#383838}.hint--left:before{border-left-color:#383838}.hint--right:before{border-right-color:#383838}.hint--top:before{margin-bottom:-12px}.hint--top:after{margin-left:-18px}.hint--top:before,.hint--top:after{bottom:100%;left:50%}.hint--top:hover:after,.hint--top:hover:before,.hint--top:focus:after,.hint--top:focus:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.hint--bottom:before{margin-top:-12px}.hint--bottom:after{margin-left:-18px}.hint--bottom:before,.hint--bottom:after{top:100%;left:50%}.hint--bottom:hover:after,.hint--bottom:hover:before,.hint--bottom:focus:after,.hint--bottom:focus:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.hint--right:before{margin-left:-12px;margin-bottom:-6px}.hint--right:after{margin-bottom:-14px}.hint--right:before,.hint--right:after{left:100%;bottom:50%}.hint--right:hover:after,.hint--right:hover:before,.hint--right:focus:after,.hint--right:focus:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translateX(8px)}.hint--left:before{margin-right:-12px;margin-bottom:-6px}.hint--left:after{margin-bottom:-14px}.hint--left:before,.hint--left:after{right:100%;bottom:50%}.hint--left:hover:after,.hint--left:hover:before,.hint--left:focus:after,.hint--left:focus:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translateX(-8px)}.hint--error:after{background-color:#b34e4d;text-shadow:0 -1px 0 #592726}.hint--error.hint--top:before{border-top-color:#b34e4d}.hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.hint--error.hint--left:before{border-left-color:#b34e4d}.hint--error.hint--right:before{border-right-color:#b34e4d}.hint--warning:after{background-color:#c09854;text-shadow:0 -1px 0 #6c5328}.hint--warning.hint--top:before{border-top-color:#c09854}.hint--warning.hint--bottom:before{border-bottom-color:#c09854}.hint--warning.hint--left:before{border-left-color:#c09854}.hint--warning.hint--right:before{border-right-color:#c09854}.hint--info:after{background-color:#3986ac;text-shadow:0 -1px 0 #193b4d}.hint--info.hint--top:before{border-top-color:#3986ac}.hint--info.hint--bottom:before{border-bottom-color:#3986ac}.hint--info.hint--left:before{border-left-color:#3986ac}.hint--info.hint--right:before{border-right-color:#3986ac}.hint--success:after{background-color:#458746;text-shadow:0 -1px 0 #1a321a}.hint--success.hint--top:before{border-top-color:#458746}.hint--success.hint--bottom:before{border-bottom-color:#458746}.hint--success.hint--left:before{border-left-color:#458746}.hint--success.hint--right:before{border-right-color:#458746}.hint--always:after,.hint--always:before{opacity:1;visibility:visible}.hint--always.hint--top:after,.hint--always.hint--top:before{-webkit-transform:translateY(-8px);-moz-transform:translateY(-8px);transform:translateY(-8px)}.hint--always.hint--bottom:after,.hint--always.hint--bottom:before{-webkit-transform:translateY(8px);-moz-transform:translateY(8px);transform:translateY(8px)}.hint--always.hint--left:after,.hint--always.hint--left:before{-webkit-transform:translateX(-8px);-moz-transform:translateX(-8px);transform:translateX(-8px)}.hint--always.hint--right:after,.hint--always.hint--right:before{-webkit-transform:translateX(8px);-moz-transform:translateX(8px);transform:translateX(8px)}.hint--rounded:after{border-radius:4px}.hint--no-animate:before,.hint--no-animate:after{-webkit-transition-duration:0ms;-moz-transition-duration:0ms;transition-duration:0ms}.hint--bounce:before,.hint--bounce:after{-webkit-transition:opacity .3s ease,visibility .3s ease,-webkit-transform .3s cubic-bezier(0.71,1.7,.77,1.24);-moz-transition:opacity .3s ease,visibility .3s ease,-moz-transform .3s cubic-bezier(0.71,1.7,.77,1.24);transition:opacity .3s ease,visibility .3s ease,transform .3s cubic-bezier(0.71,1.7,.77,1.24)} 
.vote { background: url('vote.png') no-repeat top left; width: 20px; height: 20px; } 
.vote.v_m7 { background-position: 0px 0px; } 
.vote.v_p7 { background-position: 0px -30px; } 
.vote.v_p6 { background-position: 0px -60px; } 
.vote.v_m6 { background-position: 0px -90px; } 
.vote.v_m5 { background-position: 0px -120px; } 
.vote.v_p5 { background-position: 0px -150px; } 
.vote.v_p4 { background-position: 0px -180px; } 
.vote.v_m4 { background-position: 0px -210px; } 
.vote.v_m3 { background-position: 0px -240px; } 
.vote.v_p3 { background-position: 0px -270px; } 
.vote.v_p2 { background-position: 0px -300px; } 
.vote.v_m2 { background-position: 0px -330px; } 
.vote.v_m1 { background-position: 0px -360px; } 
.vote.v_p1 { background-position: 0px -390px; } 
.vote.v_equal { background-position: 0px -420px; } 
.bc { 
    display: inline-block; 
    width: 20px; 
    height: 20px; 
    padding: 1px; 
    border-radius: 12px; 
    border: 1px solid #888; 
} 
    .friendcodes { 
     border-spacing: 0; 
    } 
    .friendcodes tr > td { 
     padding: 5px 25px; 
    } 
    .fc_premium { 
     background: #ffdf8e; 
     border-spacing: 0; 
    } 
    .fc_regular { 
     border-spacing: 0; 
    } 
</style> 
</head> 
<body> 
    <h3> 
    Use form below for Adding IDs 
</h3> 
<form action="http://shortcutcentral.org/projects/friendcodes/receiveQuery.php" method="post"> 
    <input type='text' value="481" name="id" /><br> 
    <input type="submit" /> 
</form> 
    <h3> 
     Current Testing Stuff 
    </h3> 
    <p> 
<?php 
require('vote.php'); 
displayRating(481); 
?> 
    </p> 
</body> 

下面是對於那些你們誰是熱衷於它的確切的錯誤 - 我混淆這裏的一些東西爲好,因爲我從現場工作安裝:

致命錯誤:不能重新聲明displayRating ()(以前在/ home聲明/ ** /的public_html/** /vote.php:2)在/ home/** /的public_html/** /vote.php上線68

回答

0

兩個displayCodes.php和test.php的是需要vote.php,而後者是不是做一個require_once。將test.php切換到require_once('vote.php');

+0

有人在意解釋倒票嗎? – islanddave

+0

很高興幫助:) – islanddave

0

它似乎這是經常發生的,因爲在你的test.php代碼中你包括了vote.php

require('vote.php');

,你也都在test.php的

這裏的問題需要「displayCodes.php」是,你還叫「displayCodes.php」內vote.php因此函數在聲明兩次。嘗試在test.php中評論此行

require('displayCodes.php');

這樣,你只是包括功能一次。

希望這有助於

+0

我在vote.php裏面調用displayCodes.php? – muffinjello

+0

是的,您正在使用require函數調用該文件。 – Antorni

0

嘗試刪除displayRating()方法中的require_once('medoo.min.php');。你正在調用displayRating()到一個循環,所以它可能包含medoo.min.php很多次。