2012-02-14 14 views
2

私はこのスクリプトがうまく動作するようになったので、同じページで複数回使用する必要があります。しかし、私はそれを2回使用するとエラーが発生します。致命的なエラー:get_names()を再宣言できません(以前宣言されていますが、私は答えを見回しましたが、 getでここにスクリプトされています。?>再コールできないための回避策はありますか?

<?php 
$db = mysql_connect('localhost', 'username', 'pass') or die("Database error"); 
mysql_select_db('dbname', $db); 

$query = "SELECT pool FROM winners"; 
$result = mysql_query($query) or die(mysql_error()); 

while($row = mysql_fetch_array($result)) 
if ($row['pool'] % 2) { 
    echo "<h4>Result 1</h4>"; 
    $names = get_names(1); 
    foreach($names as $name) { 
     echo $name . "<br/>"; 
    } 
} else { 
    echo "<h4>Result 2</h4>"; 
    $names = get_names(0); 
    foreach($names as $name) { 
     echo $name . "<br/>"; 
    } 
} 

function get_names($pool_result) 
{ 
$name_array = array(); 

$query = "SELECT * FROM comments WHERE commentid % 2 = $pool_result"; 
$result = mysql_query($query); 

while ($row = mysql_fetch_array($result)) { 
    array_push($name_array, $row['name']); 
} 

return $name_array; 

}

答えて

1

は、それ自身のファイルや呼び出しに関数定義を置き、そのファイルにページの上部に一度含める(または必要)

get_namesが複数回定義されているため、2回目の昇格致命的なエラー。

EDIT:はそれ自身のファイルにあることがを必要としていること

一部だけは、関数の定義である:あなたの場合

function get_names($pool_result) 
{ 
    $name_array = array(); 

    $query = "SELECT * FROM comments WHERE commentid % 2 = $pool_result"; 
    $result = mysql_query($query); 

    while ($row = mysql_fetch_array($result)) 
     array_push($name_array, $row['name']); 

    return $name_array; 
} 

けれども、私と確かに他の人には、コードの更なる組織を提唱うその関数をlibrary.phpなどのファイルに入れてからrequire_once('path/to/library.php')とすると、残りの部分を複数回実行できるはずです。

+0

私はこれを試してみました、私はまだ同じエラーを取得しています。 include_onceを使用しているPHPファイルに入れる必要がある部分はどれですか? – user1206214

+0

私はそこにいくつかのコードを投げました。 – quickshiftin

2

それは醜いハックですが、あなたは機能の周りにこれを置くことができます。

if (!function_exists("get_names")) { 

/// the function 

} 

もちろんのより良い方法がincludefile.php質問(ノートで関数を含むと、include_once("includefile.php");にある:includefile.phpも開閉を必要とします<?php ?>タグ)。

+0

私はこれを試しましたが、私はまだ同じエラーが発生しています。 include_onceを使用しているPHPファイルに入れる必要がある部分はどれですか? – user1206214

+0

'function get_names($ pool_result){...}'の部分です。あるいは、スクリプトを複数回含むファイルにその関数を置くこともできます。 – mvds

2

あなたはif(!function_exists('get_names'))で関数をラップする、またはファイルではなくincludeを含めるか二度(またはそれ以上)、それを含まないように、あなたの呼び出し元のスクリプトを修正するためにinclude_onceまたはrequire_onceを使用することができます。

0

あなたは試みることができる:

<?php 
$db = mysql_connect('localhost', 'username', 'pass') or die("Database error"); 
mysql_select_db('dbname', $db); 

$query = "SELECT pool FROM winners"; 
$result = mysql_query($query) or die(mysql_error()); 

while($row = mysql_fetch_array($result)) 
if ($row['pool'] % 2) { 
    echo "<h4>Result 1</h4>"; 
    $names = get_names(1); 
    foreach($names as $name) { 
     echo $name . "<br/>"; 
    } 
} else { 
    echo "<h4>Result 2</h4>"; 
    $names = get_names(0); 
    foreach($names as $name) { 
     echo $name . "<br/>"; 
    } 
} 
if(!function_exists("get_names")) { 

    function get_names($pool_result) 
    { 
    $name_array = array(); 

    $query = "SELECT * FROM comments WHERE commentid % 2 = $pool_result"; 
    $result = mysql_query($query); 

    while ($row = mysql_fetch_array($result)) { 
     array_push($name_array, $row['name']); 
    } 

    return $name_array; 
} 
+0

私はこれを試したが、それでも私には同じエラーが出る – user1206214

関連する問題