0

mysql クエリから出力される 2 つの結果ごとにツイートを出力する必要があります。問題のページは、私が達成しようとしていることをよりよく説明するためにここにあります。

これは私がこれまでに使用しているコードですが、機能していません...

 foreach($multi_array as $key => $value ){

// start tweet output for loop. twitter authentication is before this foreach loop

 ?>
<div id="masonry-container">
<?php 

$dbleads = new mysqli('localhost','****','*****','******'); 

$query = mysqli_query($dbleads, "SELECT * FROM plugin_blog ORDER BY date_added DESC LIMIT 0,10");
$i = 0;
$j = 0;
while ($row=mysqli_fetch_array($query)){
    preg_match('/(<img[^>]+>)/i', $row['html'], $matches);
    $img = $matches[1];
    ++$i;
    ++$j;
    if ($i%2 == 0){
            if($j%10==0){
             echo "<div class='masonryImage tweets' style='width:300px; height:175px;'><div class='tweet-content'>" . $value['text'] . "</div></div>";
            }
    }
    else{
        echo "<div class='masonryImage blogImage' style='width: 300px; height:250px;'>" . $img . " </div>";
    }
  }
}

私が間違っているアイデアはありますか?

更新: ツイートを適切な場所に配置することができましたが、表示されているツイートは 1 つだけで、そのツイートの最初の 5 文字がエコーされています。使用したコードは次のとおりです。

foreach($multi_array as $key => $value ){
// printing each tweet wrapped in a <li> tag
$tweets = $value['text'];
}

$dbleads = new mysqli('********','***********','**********','************'); 

$query = mysqli_query($dbleads, "SELECT * FROM plugin_blog WHERE published = 1 ORDER BY date_added DESC LIMIT 0,10");
$i = 0;
$j=-1;
while ($row=mysqli_fetch_array($query)){
    preg_match('/(<img[^>]+>)/i', $row['html'], $matches);
    $img = $matches[1];
    ++$i;
    if ($i%2 == 0){
        ++$j;
        echo "<div class='masonryImage tweets' style='width:300px; height:175px;'><div class='tweet-content'>" . $tweets[$j] . "</div></div>";
        echo $j; // here only for debugging, checking the counter works
    }
    else{
        echo "<div class='masonryImage blogImage' style='width: 300px; height:200px;'>" . $img . " </div>";
    }
}
4

3 に答える 3

0

次の結果が得られた場合:

while ($row=mysqli_fetch_array($query)){
var_dump($row);

次に、あなたは失敗しています

if ($i%2 == 0) {

            if($j%10==0){

クエリの制限は 10 で、2 ごとに、次に 10 ごとに 2 番目の if には決して入らないと思います。あなたが最初に入るかどうかを確認してくださいif ($i%2 ==0) {echo 'i am in';}

于 2013-10-04T12:09:04.570 に答える