2010-08-24 152 views
1

我想一次循環與$cat_id抓住其idcategory值的$url值,然後添加idcategory值的$parent_cat_id$sub_cat_name數組,然後循環的$parent_cat_id值只是添加到數組中以查找其值idcategory的值,並將它們添加到數組中,直到所有$url值已循環。但我只能得到第一個$url值循環,而不是其餘的$url值循環可以有人幫我糾正這個問題?PHP和MySQL循環問題

PHP代碼。

$parent_cat_id = array(); 
$sub_cat_name = array(); 
$cat_id = 23; 

for ($i = 1; isset($_GET['sub'.$i]); ++$i) { 
    $url[$i] = '&sub' . $i . '=' . $_GET['sub'.$i]; 
    if(isset($cat_id)){ 
     $dbc = mysqli_query($mysqli, "SELECT id, category FROM categories WHERE url = '" . $url[$i] . "' AND parent_id = '" . $cat_id . "'"); 
     if (!$dbc) { 
      print mysqli_error($mysqli); 
     } else { 
      while($row = mysqli_fetch_array($dbc)){ 
       $parent_cat_id[] = $row['id']; 
       $sub_cat_name[] = $row['category']; 
      } 
     } 
    } else { 
     $dbc = mysqli_query($mysqli, "SELECT id, category FROM categories WHERE url = '" . $url[$i] . "' AND parent_id = '" . $parent_cat_id[$i] . "'"); 
     if (!$dbc) { 
      print mysqli_error($mysqli); 
     } else { 
      while($row = mysqli_fetch_array($dbc)){ 
       $parent_cat_id[] = $row['id']; 
       $sub_cat_name[] = $row['category']; 
      } 
     } 
    } 
} 

電流輸出。

$parent_cat_id Array ([0] => 77) 

$sub_cat_name Array ([0] => A1) 

預期輸出。

$parent_cat_id Array ([0] => 77 [1] => 78 [2] => 97 [3] => 100) 

$sub_cat_name Array ([0] => A1 [1] => A2 [2] => B4 [3] => CD) 
+1

你究竟用'i Cam 2010-08-24 05:19:23

+0

因爲我不知道有多少個子類別有'PHP_INT_MAX'只有多少子類別循環,因此它的完美。 – g4tv 2010-08-24 05:21:39

+0

此外,您是否可以編輯此代碼,使其儘可能簡單,同時仍能展現您遇到的問題?我不認爲任何數據庫的東西都與你的問題有關。 – Cam 2010-08-24 05:21:58

回答

0

如果我正確理解問題,你基本上說循環只運行一次,但你希望它運行多次。

但是,請查看下面的代碼(從您的簡化版)。爲了清楚我已經刪除大部分的循環的內容,所以你可以看到什麼是實際發生的情況...

<?php 
    $_GET=array('sub1'=>'val_sub1','sub2'=>'val_sub2','sub3'=>'val_sub3','sub4'=>'val_sub4'); 
    print_r($_GET); 
    /* 
    Array 
    (
     [sub1] => val_sub1 
     [sub2] => val_sub2 
     [sub3] => val_sub3 
     [sub4] => val_sub4 
    ) 
    */ 

    $url=array(); 

    for ($i = 1;isset($_GET['sub'.$i]); $i++) { 
     $url[$i] = '&#038;sub' . $i . '=' . $_GET['sub'.$i]; 
    } 

    print_r($url); 
    /* 
    Array 
    (
     [1] => &#038;sub1=val_sub1 
     [2] => &#038;sub2=val_sub2 
     [3] => &#038;sub3=val_sub3 
     [4] => &#038;sub4=val_sub4 
    ) 
    */ 
?> 

正如你所看到的,循環工作正常。所以,要麼...

  1. 您遇到的問題是因爲事情是怎麼回事可怕的錯誤與數據庫的東西,你的腳本是一個循環(不太可能),或

  2. 在$後剛剛崩潰_GET參數只有一個'sub'值,所以它實際上應該只是循環一次(可能)

  3. 也許我只是不明白你的問題,以及我認爲我做的。

+0

我是試圖抓住每個url $的parent_id – g4tv 2010-08-24 05:39:40

+0

@ g4tv:好的 - 這個怎麼樣:你能給我們介紹一些輸出(例如print_r)嗎?我們需要:**實際輸出**(實際打印的是什麼)和**期望的輸出**(如果腳本按照你想要的方式工作,將會打印什麼) – Cam 2010-08-24 05:41:51

+0

@ g4tv:啊。你確定你的數據庫中有正確的行嗎?你的代碼看起來很好因爲我可以看到 – Cam 2010-08-24 05:51:53