2016-05-21 2 views
1

を簡素化に役立つ次のようにhttp://php.net/manual/es/mysqli-result.fetch-assoc.phpPHP mysqliの複数のクエリ&1ページにいる間 - 私はPHPの公式マニュアルを以下のよコード

は、これまでのところ、私は私のコードを持っているが、私は私はかどうかわからないんだけど私は同じページで多くの "クエリ"と "中"を使用しているので、私はPHPのすべてのコードとHTML内のコードの先頭に "エコー" PHPをいつでも開いたり閉じたりする必要がないので、このコードを簡単に入力するのに役立ちますが、それが正しいか、これが正常で「良い」かどうかを確認してください。前もって感謝します!

<?php 
    require_once("inc/header.php"); 

    $connect = new mysqli("localhost", "user", "pass", "db_name"); 
    if ($connect->connect_errno) { 
    printf("Error: %s", $connect->connect_error); 
    exit(); 
    } 
?> 
<!-- *************** show products *************** --> 
<div class="container"> 
<div class="row">  
<?php 
    $query = "SELECT * FROM product"; 
    if ($result = $connect->query($query)) { 
    while ($row = $result->fetch_assoc()) { 
?> 
    <div class="col-xs-6 col-sm-4 col-md-3 col-lg-3"> 
    <div class="thumbnail"> 
    <a href="product.php?id=<?php echo $row['product_id']; ?>"><img src="<?php echo $row['product_img']; ?>" alt="<?php echo $row['product_name']; ?>"></a> 
    <div class="caption"> 
     <a href="product.php?id=<?php echo $row['product_id']; ?>"><h6 class="truncate"><?php echo $row['product_name']; ?></h6></a> 
     <h5><?php echo "$".$row['product_price']; ?></h5> 
    </div> 
    </div> 
    </div>  
<?php 
    } 
    $result->free(); 
    } 
?> 
</div> 
</div> 

<!-- *************** Latest 10 products... *************** --> 
<div class="container"> 
<div class="row">  
<?php 
    $query = "SELECT * FROM product ORDER BY product_id DESC LIMIT 10"; 
    if ($result = $connect->query($query)) { 
    while ($row = $result->fetch_assoc()) { 
?> 
    <div class="col-xs-6 col-sm-4 col-md-3 col-lg-3"> 
    <div class="thumbnail"> 
    <a href="product.php?id=<?php echo $row['product_id']; ?>"><img src="<?php echo $row['product_img']; ?>" alt="<?php echo $row['product_name']; ?>"></a> 
    <div class="caption"> 
     <a href="product.php?id=<?php echo $row['product_id']; ?>"><h6 class="truncate"><?php echo $row['product_name']; ?></h6></a> 
     <h5><?php echo "$".$row['product_price']; ?></h5> 
    </div> 
    </div> 
    </div>  
<?php 
    } 
    $result->free(); 
    } 
?> 
</div> 
</div> 

<!-- *************** Show the categories list... *************** --> 
<?php 
    $query = "SELECT * FROM categories"; 
    if ($result = $connect->query($query)) { 
    while ($row = $result->fetch_assoc()) { 
    ?> 
    <ul> 
    <li><a href="categories.php?id=<?php echo $row['categories_id']; ?>"><?php echo $row['categories_name']; ?></a></li> 
    </ul>  
    <?php 
    } 
    $result->free(); 
    } 
    $connect->close(); 
?> 

<?php require_once("inc/footer.php");?> 

答えて

0

私は一度ロードされ、あなたがクエリを行うことができます。この

$news = DB::query("SELECT id,title WHERE title = %s","Title you want"); 
foreach ($news as $new) { 
echo $new["title"]; 
} 

のようにそれは1つのページにあまりにも多くのクエリを実行するために最適です、meekrodbと呼ばれるライブラリを使用することをお勧め。あなたは合法的に無料でダウンロードできます。MeekroDB.com

+0

完璧な、今私は読んで、コードを簡素化するための大きな助けになる! – GePraxa

+0

私はこの時間を見ているプロポーザルを持っていて、私はそれを愛し、物事をずっと簡単にしました。 – GePraxa

+0

素晴らしい!もちろん、私はそのライブラリを発見して以来、コードはより洗練されています。 – sloaxleak

0

何をしているのが技術的に間違っていることはありません。 2つのクエリを「製品」テーブルに対して組み合わせることで、データベースクエリを保存することができますが、サイトやデータベースがビジー状態でない限り、問題はありません。

コールを「簡素化」したい場合は、関数に変換してその関数の結果を使用してHTMLを描画することができますが、メモリにプルして配列を実行する必要があります。

+0

私は関数についてのドキュメントをどこで見つけることができるのでしょうか?新しい(私はできるだけ短いコードを注文したいのですが)少なくとも私はこの方法を続けることができます。私はあなたを長く取らないと、私は機能の例を教えてくれますか? – GePraxa

0

実際には、あなたはきれいなコードを書く正しい方法を採用しています。あなたが求めているのはMVCです。

考え方は、ロジックとインターフェイスを分けることです。 SmartyやTwigのような、PHPのための多くの準備が整ったテンプレートエンジンがあります。あなたのことをもっと学び、あなたのニーズに合ったものを決定することは、あなた次第です。または独自のエンジンを作成することさえできます。

これらはすべて非常に簡単です。ページに必要なすべてのデータを収集し、このデータをテンプレートエンジンに渡すコードを作成します。このコードは、選択されたテンプレートに従って表示され、簡略化されたテンプレートエンジン構文で記述されます。ような何か:

<?php 

    require_once("template_engine.php"); 
    require_once("inc/header.php"); 

    $connect = new mysqli("localhost", "user", "pass", "db_name"); 
    if ($connect->connect_errno) { 
    printf("Error: %s", $connect->connect_error); 
    exit(); 
    } 

    $products = array(); 
    $query = "SELECT * FROM product"; 
    if ($result = $connect->query($query)) { 
    while ($row = $result->fetch_assoc()) { 
    $products[] = $row; 
    } 

    $latest = array(); 
    $query = "SELECT * FROM product ORDER BY product_id DESC LIMIT 10"; 
    if ($result = $connect->query($query)) { 
    while ($row = $result->fetch_assoc()) { 
    $latest[] = $row; 
    } 

    $categories = array(); 
    $query = "SELECT * FROM categories"; 
    if ($result = $connect->query($query)) { 
    while ($row = $result->fetch_assoc()) { 
    $categories[] = $row; 
    } 

    echo $parser->parse_my_template("templatename.tpl", array(
     "products" => $products, 
     "latest" => $latest, 
     "categories" => $categories 
    )); 
?> 

、別のファイルtemplatename.tplは、(例えば、twigg構文で):

... 

    {% for product in products %} 
    <div class="col-xs-6 col-sm-4 col-md-3 col-lg-3"> 
    <div class="thumbnail"> 
    <a href="product.php?id={{ product.id }}"><img src="{{ product.image }}" alt="{{ product.name }}"></a> 
    <div class="caption"> 
     <a href="product.php?id={{ product.id }}"><h6 class="truncate">{{ product.name }}</h6></a> 
     <h5>{{ product.price }}</h5> 
    </div> 
    </div> 
    </div>  
    {% endfor %} 

    ..... 
+0

あなたの答えはありがとう、今のところ私は基本を学び始めています!Pensareとフレームワークを学んだ後haha – GePraxa

+0

私はこのコードを見てうれしかったですが、スマートなものや何かを正しくインストールしなければうまくいきませんでしたか? Smartyは見ましたが、今は非常に難しいと感じています。他のツールに頼ることなくこのコードなどを使用することは素晴らしいことでしょう。 – GePraxa

+0

Smartyだけがここにあります。ちょうどGoogleの "PHPテンプレートエンジン" - それらの何百もあります。 –

0

あなたの 'カテゴリ' セグメントは、各項目のための新しいULタグを書いているように見えますか? ulタグをPHPのそのセグメントの外側に移動する必要があります。

+0

それが正しい場合、最も基本的な例を作ろうとしますが、それを考慮に入れないでください、ありがとう! – GePraxa

0

コードは問題ありませんが、単純化したい場合は、2つの異なるクエリ(製品と最新の10製品を表示)でほとんど同じタスクを実行しているため、少ししかできません。これらのクエリを文字列配列に保存し、foreachループを開始してコードをマージすることができます。

これは次のようになります。

<?php 
$ProductQueries = array("SELECT * FROM product", "SELECT * FROM product ORDER BY product_id DESC LIMIT 10"); 

foreach ($ProductQueries as $ProductQuery) 
{ 
?> 
<div class="container"> 
<div class="row">  
<?php 
    $query = $ProductQuery; 
    if ($result = $connect->query($query)) { 
    while ($row = $result->fetch_assoc()) { 
?> 
    <div class="col-xs-6 col-sm-4 col-md-3 col-lg-3"> 
    <div class="thumbnail"> 
    <a href="product.php?id=<?php echo $row['product_id']; ?>"><img src="<?php echo $row['product_img']; ?>" alt="<?php echo $row['product_name']; ?>"></a> 
    <div class="caption"> 
     <a href="product.php?id=<?php echo $row['product_id']; ?>"><h6 class="truncate"><?php echo $row['product_name']; ?></h6></a> 
     <h5><?php echo "$".$row['product_price']; ?></h5> 
    </div> 
    </div> 
    </div>  
<?php 
} 
$result->free(); 
} 
?> 
</div> 
</div> 
<? 
} 
?> 
+0

ありがとう、これは私が自分の学習者を見ているものです、今私はあなたが新しいものを習得するために提案するものについて読むことになるでしょう!御時間ありがとうございます! – GePraxa

+0

喜んでお手伝いします。これがあなたの質問の答えであれば、これを受け入れられた回答と記入してください:) –

+0

確かに、あなたが実装できるものを知るためのすべての答えを読んでいます!よろしく! – GePraxa

関連する問題