PHP - 在同一个文件上多次运行相同的php函数

时间:2014-07-04 02:52:26

标签: php

我目前正在创建一个数据库/表列表系统,它将显示用户当前喜欢/不喜欢的内容。获取用户的喜欢/不喜欢,并通过名为displayRating()的单独文件中的函数进行管理。我使用require_once来调用它所在的单独文件,在我的列表的开头,然后开始工作。

然后继续我的

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 (我用来动态获取值和诸如此类的东西 - 警告,包含一些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>

对于那些热衷于此的人来说,这是一个确切的错误 - 我已经对这里的一些内容进行了混淆,因为我正在通过实时安装工作:

致命错误:无法重新声明/ home / ** / public_html中的displayRating()(之前在/home/**/public_html/**/vote.php:2中声明)第68行/ ///strong>/vote.php

3 个答案:

答案 0 :(得分:0)

这似乎是在发生这种情况,因为在你的test.php代码中,你包括了带有

的vote.php

需要(&#39; vote.php&#39);

并且您还需要&#39; displayCodes.php&#39;在test.php中

这里的问题是你也打电话给'displayCodes.php&#39;在vote.php里面,所以函数被声明了两次。尝试在test.php中注释这一行

需要(&#39; displayCodes.php&#39);

这样你只需要包含一次这个功能。

希望这有帮助

答案 1 :(得分:0)

displayCodes.php和test.php都需要vote.php,后者没有执行require_once。将test.php切换到require_once(&#39; vote.php&#39;);

答案 2 :(得分:0)

尝试删除displayRating()方法中的require_once('medoo.min.php');。你将displayRating()调用到一个循环中,所以它可能会多次包含medoo.min.php。