2011-12-14 17 views
2

から多次元配列を作成することです:は私が含まれているMySQLのテーブルを持つデータベーステーブル

folder_id (int(11), auto increment) 
folder_name (varchar) 
folder_class(varchar) 
folder_link (varchar) 

私が何をしたいのか何とかテーブルをループであり、このように各列を格納します。

$packs = array(array( 'Name' => 'DarkUIPack', 
        'Class' => 'ui', 
        'Link' => 'http://graphicriver.net/item/dark-minimalist-ui-pack/662762' 
       ), 
      array( 'Name' => 'MinimalistIcons', 
        'Class' => 'min', 
        'Link' => 'http://graphicriver.net/item/small-minimalist-icons-pack/670469' 
       ), 
      array( 'Name' => 'BlueMediaIcons', 
        'Class' => 'blue', 
        'Link' => 'http://graphicriver.net/item/blue-media-icons-set/705319' 
       ), 
      array( 'Name' => 'MediaIcons', 
        'Class' => 'med', 
        'Link' => 'http://graphicriver.net/item/media-icons-set/679835' 
       ), 
      array( 'Name' => 'ToTheTopButtons', 
        'Class' => 'top', 
        'Link' => 'http://graphicriver.net/item/to-the-top-buttons/673221' 
       ), 
      array( 'Name' => 'Sunglasses', 
        'Class' => 'sun', 
        'Link' => '' 
       ), 
      array( 'Name' => 'RealEstate', 
        'Class' => 'est', 
        'Link' => 'http://graphicriver.net/item/simple-real-estate-logo/724697' 
       ), 
      array( 'Name' => 'PhotoStudio', 
        'Class' => 'std', 
        'Link' => 'http://graphicriver.net/item/photo-studio-logo/724694' 
       ), 
      array( 'Name' => 'PayDayCity', 
        'Class' => 'std', 
        'Link' => '' 
       ), 
      array( 'Name' => 'MoleculeCorp', 
        'Class' => 'mol', 
        'Link' => 'http://graphicriver.net/item/molecule-corp-logo/719307' 
       ), 
      array( 'Name' => 'ClubbGX', 
        'Class' => 'gx', 
        'Link' => '' 
       ), 
      array( 'Name' => 'AerialVision', 
        'Class' => 'aer', 
        'Link' => '' 
       ), 
      array( 'Name' => 'ServiceCompany', 
        'Class' => 'ser', 
        'Link' => 'http://graphicriver.net/item/service-company-logo/727091' 
       ), 
      array( 'Name' => 'ElectroTech', 
        'Class' => 'ele', 
        'Link' => 'http://graphicriver.net/item/electro-tech-logo/720904' 
       ), 
      array( 'Name' => 'CreativeStudio', 
        'Class' => 'cre', 
        'Link' => 'http://graphicriver.net/item/creative-studio-logo/719494' 
       ), 
      array( 'Name' => 'NanoCorp', 
        'Class' => 'nan', 
        'Link' => 'http://graphicriver.net/item/nano-corp-logo/719098' 
       ), 
      array( 'Name' => 'RehabPlace', 
        'Class' => 'reh', 
        'Link' => '' 
       ), 
      array( 'Name' => 'MyLocalMix', 
        'Class' => 'mix', 
        'Link' => '' 
       ), 
      array( 'Name' => 'SevenBySeven', 
        'Class' => 'sev', 
        'Link' => '' 
       ), 
      array( 'Name' => 'ComingSoon', 
        'Class' => 'com', 
        'Link' => '' 
       ), 
      array( 'Name' => 'AlienIcons', 
        'Class' => 'aln', 
        'Link' => 'http://graphicriver.net/item/alien-icons-set/698515' 
       ), 
      array( 'Name' => 'PreloaderPortfolio', 
        'Class' => 'pre', 
        'Link' => '' 
       ), 
      array( 'Name' => 'BioTech', 
        'Class' => 'bio', 
        'Link' => '' 
       ), 
      array( 'Name' => 'ConstructionCompany', 
        'Class' => 'con', 
        'Link' => '' 
       ), 
      array( 'Name' => 'EagleMedia', 
        'Class' => 'egl', 
        'Link' => '' 
       ), 
      array( 'Name' => 'ElectronicWays', 
        'Class' => 'elw', 
        'Link' => '' 
       ), 
      array( 'Name' => 'EnvironmentalCompany', 
        'Class' => 'env', 
        'Link' => '' 
       ), 
      array( 'Name' => 'SecureData', 
        'Class' => 'sec', 
        'Link' => 'http://graphicriver.net/item/secure-data-company-logo/907334' 
       ), 
      array( 'Name' => 'ConstructSimple', 
        'Class' => 'cns', 
        'Link' => 'http://graphicriver.net/item/simple-construction-company-logo/907538' 
       ), 
      array( 'Name' => 'ConstructRoof', 
        'Class' => 'cnr', 
        'Link' => 'http://graphicriver.net/item/construction-company-logo/907549' 
       ) 
     ); 

ここで 'Name'はfolder_nameに対応し、 'Class'はfolder_classに、 'Link'はfolder_linkに対応します。

私はクラス内でこれを使用していますし、クラスは今までのようになります。

class folder 
{ 
private $connect; 

public function __construct() { 

    $this->connect = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 

    if (mysqli_connect_errno()) { 
     $error = true; 
     $message['error'] = true; 
     $message['message'] = mysqli_connect_error(); 
     return json_encode($message); 
    } 
     else { 
      return true;  
     } 

} 

    public function crtFolder($fldName,$fldClass,$fldLink,$fldPath) { 

    $fldName = preg_replace('/\s+/', '', $fldName); 

    $fldPN = $fldPath."\\".$fldName; 

    $modArray = array(array('1')); 

    if ((!is_dir($fldPN))) { 
     if(mkdir($fldPN,0777,true)) { 

      $sql = "INSERT INTO folders (folder_name,folder_class,folder_link) VALUES (?, ?, ?)"; 

      if($stmt = $this->connect->prepare($sql)) { 
       $stmt->bind_param("sss", $fldName, $fldClass, $fldLink); 
       $stmt->execute(); 
       $stmt->close(); 
       $error = false; 
       $message['error'] = false; 
       $message['message'] = "Folder Created | Data Successfuly Inserted"; 
       return json_encode($message); 
      } 
       else { 
        $error = true; 
        $message['error'] = true; 
        $message['message'] = "Folder Created | Data Failed To Insert"; 
        return json_encode($message); 
       } 
     } 
      else { 
       $error = true; 
       $message['error'] = true; 
       $message['message'] = "Folder Failed To Create"; 
       return json_encode($message); 
      } 
    } 
     else { 
      $error = true; 
      $message['error'] = true; 
      $message['message'] = "Folder Already Exists"; 
      return json_encode($message); 
     } 
} 

public function __destruct() { 

    $closeConnection = $this->connect->close(); 

    if($closeConnection) { 
     return true; 
    } 
} 

}

を私が作成するために、同じ方法を維持したいので、私はクラスを示しています他のメソッドと同じように配列が作成されます。私はGoogle上で何かを見つけたが、複数のテーブルから配列を作成していたからだ。私は1つのテーブルしか持っていません。それが動作するはずです

if($stmt = $this->connect->prepare($sql)) { 
    $stmt->bind_param("sss", $fldName, $fldClass, $fldLink); 
    $stmt->execute(); 

    $result = array(); 

    while ($stmt->fetch()) { 
     $result[] = array('Name' => $fldName, 'Class' => $fldClass, 'Link' => $fldLink); 
    } 

    print_r($result); 
} 

$result = SOMETHING_FROM_QUERY; 
$packs = new array(); 
while ($row = mysql_fetch_assoc($result)) { 
    array_push($packs,array('Name' => $row['folder_name'], 'Class' => $row['folder_class'], 'Link' => $row['folder_link'])); 
} 
+0

あなたは複数のArrayを作成するMySQLの応答を残したいと思いますか? –

+0

だから私はそれを行う方法を見つけた、私はそれが正しいかどうかわからない...ここでコード '$ sql =" SELECT folder_name、folder_class、folder_link FROM folders "; if($ stmt = $ this-> connect-> prepare($ sql)){ \t \t $ stmt-> bind_result($ fldName、$ fldClass、$ fldLink); $ stmt-> execute(); $ final = array(); while($ row = $ stmt-> fetch()){ \t \t $ stmt-> bind_result($ fldName、$ fldClass、$ fldLink); $ final [] = array( '名前' => $ fldName、 'クラス' => $ fldClass、 'リンク' => $ fldLink ); } $ stmt-> close(); print_r($ final); } ' – Roland

+0

私がそれをしているかどうか教えてくださいライト:D – Roland

答えて

3

以下の関数をクラスに記述します。これが物事を助けることを願っています。

public function getTableData(){ 

$sql = "SELECT * FROM folders"; 
if($stmt = $this->connect->prepare($sql)) { 

    $stmt->execute(); 
    $stmt->close(); 
    $arrFinalArray = array(); 
    while ($arrFolder = $stmt->fetch()){ 

     $arrFinalArray[] = array(
        'Name' => $arrFolder['folder_name'], 
        'Class' => $arrFolder['folder_class'], 
        'Link' => $arrFolder['folder_link'] 
     ); 


    } 
    } 
} 
+0

良い答え、+1! –

+0

は、そこに「as」を持っているべきではありません。私がDreamweaverに貼り付けると、構文エラーがあることがわかりますか? – Roland

+0

オハイオ州私の間違い...私は私のポストを更新しました。その後、whileループを変更することを忘れてしまいました......私のポストをもう一度見てください。 –

1

はこのような何かを試してみてください。

+0

いいえ、データベースにはすでに約30行が移入されています。今はテーブルからそのデータをすべて取り出し、$ packsのように配列に入れたいと思っています。 – Roland

+0

それは試してください。 '$ pack'はあなたのコードから貼り付けた連想配列の配列です。だからあなたのコードがあなたの仕様を尊重しているなら、このコードも同様です。 –

+0

コードを編集して '$ row'の値を​​もうハードコードしないようにしました –

1

あなたの形式を次に示します。

+0

これはうまくいかず、' $ sql = 'SELECT * FROM folders''それは私に準備されたステートメントのフィールドの数を持っていないことを教えてくれます... – Roland

+0

'SELECT folder_name、folder_class、folder_link FROM folders'を試してください。同じことを私に言いたいのなら、同じことを –

+0

としましょう。どこにfolder_name =を追加すればいいですか? ..何も起こらない... – Roland

関連する問題