2012-04-02 8 views
-1

コードは部門を選択し、その部門のコースを一覧表示します。リンクされたコース(親コースと子コース)の合計リソース量もエコーされます。合計合計カウントPHP配列のforeachカウント

私はphp配列のforeachカウントから合計を取得しようとしています。 誰か助けてくれますか?ここで

が私のコードです:

$categoryid = $_POST['dept']; 

//get course codes from department 
$get_dept_codes = mysql_query("SELECT id, name FROM course_categories WHERE parent = 0 order by name asc"); 


    echo "<form method='POST' action='gsb_by_department.php'><p>"; 
    echo "<select size='1' name='dept'>"; 
    //loop through and list department names in drop down box 
    while($row = mysql_fetch_array($get_dept_codes)) 
     { 
     $catid = $row['id']; 
     $catname = $row['name']; 
     echo "<option name='category' value=$catid>$catname</option>"; 

     //echo $catid; 
     //echo $catname; 
     echo "<br />"; 
     } 



echo "</select><input type='submit' value='Submit' name='submit'></p></form>"; 


//get course codes from department 

$get_dept_codes = mysql_query("SELECT course.id, course.shortname, course.fullname, gsb_content.gsb 
FROM _course INNER JOIN gsb_content ON course.id = gsb_content.courseid 
WHERE (((course.category)=$categoryid)) AND course.metacourse = 0 
ORDER BY course.id;"); 

//loop through and process for courses 

while($row = mysql_fetch_array($get_dept_codes)) 
    { 

$childcourse = $row['id']; 

//Get the $parentcourses 

    $parentcourses= mysql_query("SELECT parent_course FROM course_meta where child_course = $childcourse"); 

//for each of the $parentcourses count FROM resource where course=$theparentcourse 

    foreach($parentcourses as $parentcourse)) { 
    $thenewid = $parentcourse['parent_course']; 
    $thecount = mysql_query("SELECT count(*) FROM resource where course=$thenewid"); 
    } 

//I want to be able to add up all the counts from the above and store in variable 

    $allcountstandardslinknum = array_sum($countstandardslinknum); 
} 

誰もが任意のアイデア/指針を持っています。 非常に高く評価されるでしょう。

+0

をあなたのforeachとのstaches( '{')を使って..... – Nanne

+0

なぜこれはマイナス2を持っていますか?ガイダンス/助けを求めてマークされていますか? – Codded

+0

それは明らかではありませんでした。あなたが望むものを述べ、現在のコードを追加し(可能な限り最小限に抑えて)、何がうまくいかないかを教えてくれることを期待しています。現在のところ、それは疑問のないコードの大きな塊です。それはものがどのように機能するかではありません。もはや疑問符はありません。そうであったように、それはそれほどうまく述べられていない問題であったが、そのままでは、近い投票を正当化する可能性がある。 PLeaseは実際に質問をします:あなたがしたいものから始め、あなたのコードとあなたのコードを教えてください。 – Nanne

答えて

1

上記が擬似コードであるが、mysql_queryメソッドが結果オブジェクトを返すかどうかわからないので、mysql_fetch_arrayのような処理が必要です。あなたがちょうどそうのようなあなたのループにまとめることができ、合計を取得するためとして

$total = 0; 
foreach($parentcourse as $parentcourses)) { 
    $thenewid = $parentcourse['parent_course']; 
    $thecountrow = mysql_fetch_array(mysql_query("SELECT count(*) FROM resource where course=$thenewid")); 
    $thecount = $thecountrow[0]; 
    $total += $thecount; 
} 
echo "Total is $total"; 

また、正気をチェックするなど、あまりにも追加することができます。

編集: はまた、ちょうどあなたのforeachループは、変数に間違った方法を持って気づいた、それは次のようになります。

foreach($parentcourses as $parentcourse){ 

私は常に文としてこれを覚えている:「$の各項目は、名前の$をparentcoursesため「

EDIT2をparentcourse: あなたの$変数は、あなたの外側に同様の方法で各行を取得する必要があり、実際の配列ではありませんparentcourses whileループのようなもの:

$parentcoursesres= mysql_query("SELECT parent_course FROM course_meta where child_course = $childcourse"); 
$total = 0; 
while($parentrow = mysql_fetch_assoc($parentcoursesres)){ 
    $thenewid = $parentrow['parent_course']; 
    $thecountrow = mysql_fetch_array(mysql_query("SELECT count(*) FROM resource where course=$thenewid")); 
    $thecount = $thecountrow[0]; 
    $total += $thecount; 
} 
echo "Total is $total"; 
+0

これは私の後に何のように、それは0を返しているようです。私は$ parentcoursesのmysql_queryは何も返さないと思うが、phpmyadminでSQLコマンドを実行すると19行が得られる。 $ parentcoursesのmysql_queryがwhileループにある場合は違いがありますか? \t \tながら($行=は、mysql_fetch_array($ getcoursedivs))を介して、および部門のコースのためのプロセス//ループ \t {\t $ childcourse = $行[ 'ID']。 – Codded

+0

'$ parentcourse'はどこに定義されていますか? – MichaelRushton

+0

$ parentcourseを取得するコードも変更する必要があります。答えを更新します。 – Jim

2

私は、これは何が必要だと思う:警告の

$sql = "SELECT 
    course_meta.parent_course, 
    COUNT(DISTINCT resource.id) AS count 
FROM 
    course_meta 
INNER JOIN resource ON course_meta.parent_course = resource.course 
WHERE 
    course_meta.child_course = $childcourse 
GROUP BY course_meta.parent_course"; 

$query = mysql_query($sql); 

while ($result = mysql_fetch_assoc($query)) 
{ 
    echo 'Course "' . $result['parent_course'] . '" has " . $result['count'] . " resources.<br />'; 
} 

は、Word、$childcourseはあなたがここに一重引用符で囲む必要があります文字列である場合。

また、ここの名前は正しいですか?確かに、子供コースは親コースが1つしかありません(親コースには潜在的に多くの子供コースがあります)。

+0

ガイダンスのおかげで。私はジムを最初に試してみるつもりです。私は命名を継承しましたが、どちらかと言えば意味がありますが、彼らはそれを反転させました。 – Codded

0

このお試しください:私はそれだけでファンキーなコード、またはバグだかはわからないが、 `$ thecount`で始まる行は、このようなあなたのforeachであるためのではないではありません

$result= mysql_query("SELECT parent_course FROM course_meta where child_course = $childcourse"); 

$parentcourses = mysql_fetch_array($result); 
関連する問題