2016-08-24 3 views
0

Ich habe eine Weile daran gearbeitet und ich mache es vielleicht schwieriger als es ist. Irgendein geteiltes Wissen würde sehr geschätzt werden. Mein Code ruft Daten über eine API auf, ich konnte sie als geordnete Liste anzeigen, aber ich wollte sie mithilfe eines Tabellenformats besser darstellen. Idealerweise werden die Ergebnisse nach Tag gruppiert angezeigt. Im Folgenden finden Sie, was ich bisher erstellt haben, aber es ist noch nichts ausgibt:Wie erstelle ich eine Tabelle aus api-Daten

echo "<table>"; 
echo "<tr>"; 
echo "<th>Date</th>"; 
echo "<th>Number of Asteroids</th>"; 
echo "</tr>"; 

echo "<tr>"; 
foreach ($near_earth_object->close_approach_data as $close_approach) { 

      echo "<td>" . $close_approach->close_approach_date . "</td>"; 

foreach ($data->near_earth_objects as $date => $count) { 

    echo"<td>" . sizeof($count) . "</td></tr>"; 

} 
} 

echo "<tr>";  
echo "<th>Asteroid Name</th>"; 
echo "<th>Asteroid Size</th>"; 
echo "<th>Velocity</th>"; 
echo "<th>Passing Earth By</th>"; 
echo "</tr>"; 

echo "<tr>"; 
    foreach ($data->near_earth_objects->$date as $near_earth_object) { 
echo "<td>" . $near_earth_object->name . " <a href='" . $near_earth_object->nasa_jpl_url . "'>" . $near_earth_object->nasa_jpl_url . "</td>"; 
echo "<td>" . $near_earth_object->estimated_diameter->meters->estimated_diameter_min . " metres</td>"; 
    } 

foreach ($near_earth_object->close_approach_data as $close_approach) { 
echo "<td>" . $close_approach->relative_velocity->kilometers_per_hour . " km/h " . "</td><td>". $close_approach->miss_distance->kilometers . " km</td></tr> "; 
     } 



echo"</table>"; 

Antwort

1

sollten Sie vermeiden HTML-Code Echo, wann immer möglich. Sie können PHP Short tags<?= und ?> verwenden, um PHP in Ihren HTML-Code einzufügen. Diese Linie

echo "<td>" . $close_approach->close_approach_date . "</td>"; 

kann dann weiterhin

<td><?=$close_approach->close_approach_date?></td> 

geändert werden Ich sehe keine PHP Öffnen und Schließen-Tags (<?php und ?>) zu starten und Ihre PHP-Code zu beenden (obwohl dies nur in Ihrem Beispiel fehlt)

Sie sind nur durch Ihre Tabelle Daten <td> Tags nicht Ihre Tabelle Zeile <tr> Tags. Sie müssen diese in der Schleife enthalten eine neue Tabellenzeilen für jedes Element in der Schleife zu halten zu schaffen:

foreach ($near_earth_object->close_approach_data as $close_approach) { 
echo "<tr>"; 

Schließlich PHP bietet eine alternative Syntax für Kontrollstrukturen. Schauen Sie sich die PHP documentation

PHP bietet eine alternative Syntax für einige seiner Kontrollstrukturen; nämlich, wenn, für, foreach, und wechseln. In jedem Fall besteht die Grundform der alternativen Syntax darin, die öffnende Klammer in einen Doppelpunkt (:) und die schließende Klammer in endif ;, endwhile ;, endfor ;, endforeach; bzw. endswitch; zu ändern.

diese Weise können Sie Ihre vorhandenen Code zu verbessern:

foreach ($data->near_earth_objects->$date as $near_earth_object) { 
    echo "<td>" . $near_earth_object->name . " <a href='" . $near_earth_object->nasa_jpl_url . "'>" . $near_earth_object->nasa_jpl_url . "</td>"; 
    echo "<td>" . $near_earth_object->estimated_diameter->meters->estimated_diameter_min . " metres</td>"; 
    } 

und machen es zu so etwas wie dieses

foreach ($data->near_earth_objects->$date as $near_earth_object): ?> 
    <td><?=$near_earth_object->name?> <a href='<?=$near_earth_object->nasa_jpl_url?>'><?=$near_earth_object->nasa_jpl_url?></td> 
    <td><?=$near_earth_object->estimated_diameter->meters->estimated_diameter_min?> metres</td> 
    <? endforeach; ?> 
0

ich den Tisch empfehlen erstellen, wie Sie es möchten, dass nur mit HTML sehen, und dann mit PHP dynamisch zu füllen. Was hilfreich ist, ist, dass PHP nicht den gesamten HTML-Code zurückgibt, sondern einfach PHP verwendet, um die Daten zu füllen (d. H. Separate Daten von der Anzeige). Nur als Beispiel aus here genommen:

<?php foreach ($things as $thing): ?> 
    <li><?php echo $thing; ?></li> 
<?php endforeach; ?> 
Verwandte Themen