• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Tabelle mit Array , anzeige Probleme

newpower001

Mitglied
Hey,

Wollte etwas mal versuchen , könnte es auch anders machen habe es aber mal so gemacht. Jetz Frage ich mich was daran falsch ist?

Es ist ein Array aufgestellt wo paar Hamburger Namen aufgelistet sind und danach der preis mit => .
Es soll alles auf eine Tabelle stehen unter Name sollen die Namen stehen unter Preis der Preis.

PHP:
<?php
$hamburger = array("BigMac"=>3.50, "Chickenburger"=>2.50, "Cheeseburger"=>0.99, "Hamburger"=>1.00);

echo "<table border='1'>";
if($_POST["auswahl"] == "hamburger")
{
echo "<tr><td>Name</td> <td>Preis</td></tr>";
foreach($hamburger as $name=>$wert)
echo "<td> $name </td>";
echo "<td> $wert </td>";
}
else
{
echo "<td> - </td>";
echo "<td> - </td>";
}
?>

Es zeigt es mir völlig anders an. Siehe Bild.
 

Anhänge

  • bild.PNG
    bild.PNG
    4,9 KB · Aufrufe: 11
Werbung:
Du musst innerhalb der Schleife auch eine Table-Row (<tr>) erzeugen..

schau dir mal folgende Schreibweise an finde ich Persönlich viel übersichtlicher..
PHP:
<?
$burger = array(
    'BigMac' => 3.50,
    'Chickenburger' => 2.50,
    'Cheeseburger' => 0.99,
    'Hamburger' => 1.00
);
?>

<table border="1">
<? if (true) { ?>
    <tr><th>Name</th> <th>Preis</th></tr>
    <? foreach ($burger as $name => $wert) { ?>
        <tr><td><?= $name ?></td><td><?= $wert ?></td></tr>
    <? } ?>
<? } else { ?>
    <tr><td> - </td><td> - </td></tr>
<? } ?>
</table>

EDIT: Solltest du kein PHP-Short-Open-Tag aktiviert haben musst du halt jeweils beim öffnen ein <?php schreiben, sollte klar sein..
 
@bodo92
Deine PHP-Tags auf/zu, auf/zu, auf/zu ... finde ich grausaum, da würde ich alleine schon wegen der Lesbarkeit das bisschen HTML-Code per echo ausgeben
 
Werbung:
Finde es gerade gegenteilig.. es wird ja im seltensten Fall nur zwei Zellen erzeugt.

Hier als Beispiel ist es viel übersichtlicher als mit echo...
PHP:
<div class="panel panel-default">
    <div class="panel-heading">
        <b>Die letzten 5 Einsätze</b>
    </div>
    <ul class="list-group">
        <? foreach($this->data['einsaetze'] as $row){ ?>
            <a class="list-group-item" href="/einsaetze/details/<?= $row['id']; ?>">
                <span><b><?= $row['titel']; ?></b></span>
                <span class="pull-right"><b><?= $row['beginn']; ?></b></span>
                <br>
                <span><?= $row['ort']; ?></span>
                <br>
                <span><?= $row['stichwort']; ?></span>
            </a>
        <? } ?>
    </ul>
</div>
 
@bodo92
Deine PHP-Tags auf/zu, auf/zu, auf/zu ... finde ich grausaum, da würde ich alleine schon wegen der Lesbarkeit das bisschen HTML-Code per echo ausgeben
Jedem das seine. Ich persönlich bevorzuge die Methode von Bodo in der View. Von der Logik her macht es auch mehr Sinn, da man so HTML von PHP trennt. Jeden einzelnen Tag per echo auszugeben finde ich eher gesagt unschön und grausam. Aber wie gesagt, es gibt dort kein richtig oder falsch.

@bodo92:

PHP:
<table>
    <?php foreach($array as $key=>$value): ?>
    <tr>
        <td><?php echo $key; ?></td>
    </tr>
    <?php endforeach; ?>
</table>
Finde ich persönlich besser. Es geht nicht um das Beispiel von newpower sondern um das "endforeach". ;)
 
Werbung:
"Klappt nicht" ist keine Fehlerbeschreibung. Auch aus meiner Sicht sind beide o.g. Beispiele korrekt - wie sieht dein Quellcode aus, und wie die Ausgabe? Tipp: schau dir im Browser den erzeugten HTML-Code an.
 
Meinte mit "Klappt nicht" das es nicht so klappt wie ich es wollte. Es soll halt eine Tabelle mit 2 Feldern erzeugt werden bei den einen stehen Namen bei den anderen die Preise.

Habe 2 Varianten gewählt den von oben und deinen.

Von Dir:
PHP:
<?
$burger = array(
    'BigMac' => 3.50,
    'Chickenburger' => 2.50,
    'Cheeseburger' => 0.99,
    'Hamburger' => 1.00
);
?>

<table>
    <?php foreach($burger as $key=>$value): ?>
    <tr>
        <td><?php echo $key; ?></td>
    </tr>
    <?php endforeach; ?>
</table>

Ausgabe + Fehlermeldung:
Code:
3.50, 'Chickenburger' => 2.50, 'Cheeseburger' => 0.99, 'Hamburger' => 1.00 ); ?>
Notice: Undefined variable: burger in C:\xampplinux\htdocs\zzzzzzzzzzzzz\datei.php on line 11

Warning: Invalid argument supplied for foreach() in C:\xampplinux\htdocs\zzzzzzzzzzzzz\datei.php on line 11

Von Bodo:
PHP:
<?
$burger = array(
   'BigMac' => 3.50,
   'Chickenburger' => 2.50,
   'Cheeseburger' => 0.99,
   'Hamburger' => 1.00
);
?>

<table border="1">
<? if (true) { ?>
    <tr><th>Name</th> <th>Preis</th></tr>
   <? foreach ($burger as $name => $wert) { ?>
        <tr><td><?= $name ?></td><td><?= $wert ?></td></tr>
   <? } ?>
<? } else { ?>
    <tr><td> - </td><td> - </td></tr>
<? } ?>
</table>

Fehlermeldung siehe Bild
 

Anhänge

  • bod.PNG
    bod.PNG
    15,4 KB · Aufrufe: 11
Genau und darüber siehst du schon das etwas schief gelaufen ist, alleine daran das dir dein PHP Quellcode angezeigt wird. Dann kann es ja auch nicht klappen. Etwas Eigeninitiative ist auch gefragt.

Achja, das erste Beispiel kann auch ned klappen weil du dir dort lediglich den Namen ausgeben würdest. Ich glaube du solltest dir erstmal die Grundlagen aneignen und dir im klaren sein wie man eine Tabelle aufbaut.
 
Werbung:
Die Grundlagen sind mir bekannt, da ich sonst alles andere ja auch hinbekommen habe. Arbeite oft mit Tabellen.

Dann ist dir auch klar, dass das Beispiel, nicht dein Ergebnis erzeugt oder? Wie auch, bei eine Reihe mit einer Spalte...
PHP:
<table>
    <?php foreach($burger as $key=>$value): ?>
    <tr>
        <td><?php echo $key; ?></td>
    </tr>
    <?php endforeach; ?>
</table>
 
Werbung:
Ja habs aber auch anders ausprobiert mit deinem Beispiel , jedoch müsste es eig. doch so gehen. Hab die Tabellen wd mit PHP erzeugt aber das ist mir jetzt egal. Im Beispiel sind 2 Spatlten erzeugt NAME , Preis und unten ist ein <tr> eingefügt darunter 2 <td> dann wieder </tr> beendet. So muss es doch eigentlich gehen aber klappt nicht
<?php
$burger = array("BigMac"=>2.50, "Cheeseburger"=>0.99, "Hamburger"=>1.00);

echo "<table border='1'>";
foreach($burger as $name=>$wert)
echo "<tr><td>Name</td> <td>Preis</td></tr>";
echo "<tr>";
echo "<td> $name </td>";
echo "<td> $wert </td>";
echo "</tr>";
echo "</table>";
?>
 
Meine Güte, das kann doch wohl nicht so schwer sein!
PHP:
<?php
  $burger = array("BigMac"=>2.50, "Cheeseburger"=>0.99, "Hamburger"=>1.00);

   echo "<table border='1'>
           <tr>
             <td>Name</td>
             <td>Preis</td>
           </tr>";
          
    foreach($burger as $name=>$wert)
    {
       echo "<tr>
               <td> $name </td>
               <td> $wert </td>
             </tr>\n";
    }
   
    echo "</table>";
?>
 
Sieht nicht danach aus als hättest du die nötigen Grundkenntnisse.

Deine Foreach ist falsch.

Gesendet von meinem SM-G900F mit Tapatalk
 
Werbung:
Wie soll das auch klappen? Da fehlt ja auch die Hälfte...

PHP:
<?php
$burger = array(
   'BigMac' => 3.50,
   'Chickenburger' => 2.50,
   'Cheeseburger' => 0.99,
   'Hamburger' => 1.00
);
?>

<table border="1">
    <tr>
       <td>Name</td>
       <td>Preis</td>
    </tr>
   <?php foreach($burger as $name => $wert): ?>
        <tr>
          <td><?php echo $name ?></td>
           <td><?php echo $wert ?></td>
        </tr>
   <?php endforeach; ?>
</table>
 
Zuletzt bearbeitet:
Nun gebe ich meinen Senf auch dazu.
PHP:
<table border="1">
<tr>
 <th>Name</th><th>Preis</th>
</tr><?php
$burger = array(
  'BigMac' => '3.50',
  'Chickenburger' => '2.50',
  'Cheeseburger' => '0.99',
  'Hamburger' => '1.00'
);

  foreach ($burger as $name => $wert) {
  echo "\n<tr>\n <td>$name</td><td>$wert</td>\n</tr>";
  }
echo "\n";
?>
</table>
 
Wenn wir es ganz korrekt machen wollen dann doch bitte so :D
PHP:
$burger = [
  'BigMac' => 3.50,
  'Chickenburger' => 2.50,
  'Cheeseburger' =>  0.99,
  'Hamburger' =>  1.00,
];

Ist die neue Schreibweise und an das letzte Element in einem Array gehört immer noch ein Komma, auch wenn es dumm klingt. PSR-Standard.

Achja @djheke, warum setzt du Werte vom Typ Double in Anführungszeichen. Brauchst du nicht :p
 
Zuletzt bearbeitet:
Werbung:
Habe nur wegen die Nullen gequotet. Das ein Komma nach dem letzen Array kommt, habe ich nicht gewusst. Danke!
 
Zurück
Oben