2016-11-03 18 views
-1

私はDBからデータを取り出して、それを私のHTMLページに表示しています。私は以下のコードがうまくいくと思っていましたが、データを取得して変数に入れることはできません。変数をHTMLタグに挿入しようとすると、ブレークダウンします。私は、おそらく間違って、PHPのforeachループの中にHTMLタグを置くことによって、返される行の数に応じて必要なすべてのタグを動的に生成すると仮定していました。データが配列なので、配列を調べる必要がある各レコードを取得するためにforeachが必要です。PHPのforeachをHTMLタグ

私は、このコードを配置したい要素のbodyタグに置いています。

要素が存在するセクションの上のbodyタグのPHP関数。

     <?php 
 
          function db_connect() { 
 

 
           // Define connection as a static variable, to avoid connecting more than once 
 
           static $connection; 
 

 
           // Try and connect to the database, if a connection has not been established yet 
 
           if(!isset($connection)) { 
 
            // Load configuration as an array. Use the actual location of your configuration file 
 
            $config = parse_ini_file('\assets\con_config.ini'); 
 
            $connection = mysqli_connect('localhost',$config['username'],$config['password'],$config['dbname']); 
 
           } 
 

 
           // If connection was not successful, handle the error 
 
           if($connection === false) { 
 
            // Handle error - notify administrator, log to a file, show an error screen, etc. 
 
            return mysqli_connect_error(); 
 
           } 
 
           return $connection; 
 
          } 
 

 
          function db_query($query) { 
 
           // Connect to the database 
 
           $connection = db_connect(); 
 

 
           // Query the database 
 
           $result = mysqli_query($connection,$query); 
 

 
           return $result; 
 
          } 
 

 
          function db_select($query) { 
 
           $rows = array(); 
 
           $result = db_query($query); 
 

 
           // If query failed, return `false` 
 
           if($result === false) { 
 
            return false; 
 
           } 
 

 
           // If query was successful, retrieve all the rows into an array 
 
           while ($row = mysqli_fetch_assoc($result)) { 
 
            $rows[] = $row; 
 
           } 
 
           return $rows; 
 
          } 
 

 
          $rows = db_select("select CONCAT_WS(' ', fname, mname, lname) as author_name, title, image_location, rating, review, (Select mid(date_reviewed,1,2) from reviews where reviews.book_id = books.id) as day, (Select mid(date_reviewed,4,3) from reviews where reviews.book_id = books.id) as month, (Select mid(date_reviewed,8,2) from reviews where reviews.book_id = books.id) as year, sellers_site, twitter_site, fb_site, twitter_id, fb_id, genre from authors, books, book_genre, book_link, reviews, social_media where books.author_id = authors.id and book_genre.book_id = books.id and book_link.book_id = books.id and reviews.book_id = books.id and social_media.author_id = authors.id group by ireviews.reviews.date_reviewed ASC"); 
 
          if($rows === false) { 
 
           $error = db_error(); 
 
           // Handle error - inform administrator, log to file, show error page, etc. 
 
          } 
 

 
           //foreach($rows as $value){ 
 

 
            //echo $value['author_name'] . "<br />\n"; 
 
            //echo $value['title'] . "<br />\n"; 
 
            //echo $value['rating'] . "<br />\n"; 
 
           //} 
 

 
         ?> 
 
         
 
         <? php foreach($rows as $value); ?>

返されたデータを表示するためのHTML部分。

<? php foreach($rows as $value); ?> 
 
        
 
        <div class="block"> 
 
         <div class="row"> 
 
          <div class="col-md-4 col-md-8"> 
 
           <div class="widget-block"> 
 
            <input id="rate1" value="<?php echo $value['rating']?>" type="number" class="rating" data-max="5" data-min="0" data-size="sm" data-show-clear="false" readOnly="readOnly"> 
 
            <a href="<?php echo $value['sellers_site']?>" target="#"><img class="img-responsive wow fadeInLeftBig animated" data-wow-duration="1.5s" src="<?php echo $value['$image_location']?>" alt="<?php echo $value['$author_name']?>"></a> 
 
            <br> 
 
            <a href="<?php echo $value['sellers_site']?>" class="btn btn-success" target="_blank">Buy this book</a> 
 
           </div> 
 
          </div> 
 
          <div class="col-md-6 col-md-8"> 
 
           <div class="section-sub-title"> 
 
            <article class="section-title-body white"> 
 
             <h1 class="head-title">Author: <span><?php echo $value['$author_name']?> -</span> <?php echo $value['$title']?></h1> 
 
             <span class="point-line hidden-xs hidden-sm"></span> 
 
             <p> 
 
              <?php echo $value['$review']?> 
 
             </p> 
 
            </article> 
 
           </div> 
 
          </div> 
 
         </div> 
 
        </div> 
 
        <?php } ?>

ありがとうございます!

+0

に等しいですか? php'は実際に '<?php'を実際のコードに置き換えてください。 –

+0

使用 '' – Phylogenesis

+0

、これは 'foreachの($値として$行)何をするかを推測;' <<<すぐそこ。それについての詳細な説明をしたいのですか、答えをつかんで行きたいですか? –

答えて

3

また、あなたが同じ行の最後にブラケットやコロンを開いていなかった、あなたのforeachに「<」とphpキーワード間のスペースを持っていました。私も、おそらく間違って、それはすべて動的 タグを作成することをPHPのforeachループ内で私のhtmlタグ を配置することによって、返される行の数に応じて、必要があると想定していた

<?php foreach($rows as $value): ?> 
    .... 
<?php endforeach; ?> 
+0

感謝を拡大して見ています。投稿のタグにコピーされていることを確認してください。 – tylerbarton

+0

私はダミーであった。私はHTMLファイルでそれを実行していました。私はそれをPHPにリネームし、それは少なくとも半作業です。 – tylerbarton

+0

今、問題は変数がhtmlタグ内にある方法と思われます。レンダリングされた唯一の変数は、「に<?php echo $値[ 『評価』]?>」=ループ値の各反復の最初の1であることの後に他のすべての変数が未定義エラーで予定されています。それはPHP 5.4+でのみ利用可能だとして、 '<=':? – tylerbarton

0

はにあなたのforeachを変更してみてください:

foreach($rows as $value) { ?> 
1

:ような何かを試してみてください。

1:あなたが作ったいくつかのsintaxミスを除いて、それが動作します正確にどのようだ

<? php 

<?php 

2のようになります。

foreach($rows as $value); ?> 
あなたは短いPHPタグと短い出力を使用することができますPHPのやや現代版(5.4+)を使用している場合

は、また、この

foreach($rows as $value){ ?> 

でなければなりません。

この

value="<?php echo $value['rating']?>" 

は< `

value="<?=$value['rating']?>" 
+1

は、短いタグの構文に注意してください。 – divix