2017-09-06 4 views
-1

私は利用可能なジムで地図を作ろうとしています。だから、次のようになります。私は多くのトレーナーを教えてくれませんが、

  • 名前ジム
  • オープンスポット:(数)ジム

  • 運動しの時間の

  • ロゴ画像。例えばdumbelの

  • 画像

  • トレーナー


一部行使時からのトレーナーは、複数を表示する必要がゴマ、私は6人のトレーナーと6つの演習のようになりました、6回と6回の異なるエクササイズ画像が表示されます。私はそれらをデータベースに保存します。しかし、彼らは現れません。

ここに私のコード:

$sql = "SELECT * FROM forts"; 
    $result = $mysqli->query($sql); 

    if ($result->num_rows > 0) { 
     echo "["; 

    $output = array(); 

    while($row = $result->fetch_assoc()) { 

     $url = preg_replace("/^http:/i", "https:", $row['url']); 

     $sqlmon = "SELECT * FROM gym_trainers WHERE fort_id = " . $row['id']; 
     $resultmon = $mysqli->query($sqlmon); 
     $mon = $resultmon->fetch_assoc(); 

     $sqlextra = "SELECT * FROM extrainfo WHERE fort_id = " . $row['id'] . " ORDER BY last_modified DESC"; 
     $resultextra = $mysqli->query($sqlextra); 
     $extra = $resultextra->fetch_assoc(); 

      array_push($output, ' 
       { 
       "id": "' . $row['id'] . '", 
       "name": "' . htmlspecialchars($row['name']) . '", 
       "image": "' . $url . '", 
       "team": "' . $team . '", 
       "spots": ' . $extra['spots'] . ', 
       "exer_time": ' . $mon['time_exerise'] . ', 
       "trainer": "' . htmlspecialchars($mon['trainer_name']) . '", 
       "exercise_id": ' . $mon['exercise_id'] . ', 
       "lat": ' . $row['lat'] . ', 
       "lng": ' . $row['lon'] . ' 

       } 
      '); 
    } 

    echo implode(",", $output); 

     echo "]"; 

私はこの部分で何かを変更する必要があるが、何か分からないと思う:特定の問題は、あなたからのみ1レコードを取得することである

"exer_time": ' . $mon['time_exerise'] . ', 
"trainer": "' . htmlspecialchars($mon['trainer_name']) . '", 
"exercise_id": ' . $mon['exercise_id'] . ', 
+0

このようにJSONを書いてはいけません。超醜いだけではなく、間違っています。 ['json_encode'](http://php.net/manual/en/function.json-encode.php)を使うと問題はありません。 – tadman

+0

**警告**:mysqliを使用する場合は、[パラメータ化されたクエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と['bind_param']( http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用してクエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'、' $ _GET'、**任意の**ユーザデータを直接クエリーに入れないでください。誰かがあなたのミスを悪用しようとすると非常に危険です。 – tadman

+0

@tadmanどういう意味ですか、それに伴う問題は、正しい方法が表示されないためです。 –

答えて

2

gym_trainersテーブル($resultmon->fetch_assoc()は別のループにはありません)。

より広い問題は、結合を使用しないことです。 3つの別々のSQLクエリを使用すると、単一のループが必要になります。この場合、

select * 
from forts f 
left join gym_trainers g on f.id=g.fort_id 
left join extrainfo e on f.id=g.fort_id 

のように書くことができ、単一のループの中に、あなたは砦が変化して追跡します。

+0

そして、どのようにレコードを増やすことができますか? 私は今、左の結合メソッドをusngしています、ありがとう:) –

+0

私はあなたの質問を理解していません。 – Shadow

+0

私はgym_trainersから1をフェッチするだけですが、どうすれば得られますか? –

関連する問題