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

dynamisches Darstellung von Inhalten erweitern

syuam

Neues Mitglied
hier das main-script:
PHP:
  <?php
  function getTransactionStatusImagePath($transactionId)
  {
    $states = array('schwarz', 'rot', 'blau');

    $path = '';

    foreach ($states as $state) {
      $testPath = sprintf('transactions/Ordner%s/%s.png', $transactionId, $state);

        if (file_exists($testPath)) {
          $path = $testPath;
          break;
        }
    }
    return $path;
  }

  $transactionIds = array(1,2,3,4,5)
  ?>
  <tr>
    <?php foreach ($transactionIds as $transactionId) : ?>
    <?php
    $path = getTransactionStatusImagePath($transactionId);

    $imageHtml = ('' !== $path)
        ? '<img src="' . $path . '" />'
        : '<img name="nummer.' . $transactionId . '" src="inventory_images/8.jpg" onclick="changecolor(this)" />' ;
    ?>
    <td><?php echo $imageHtml; ?></td>
    <?php endforeach; ?>
  </tr>
erzeugt folgende Ausgabe(wie es auch sein soll):
PHP:
<tr>     <td><img name="nummer.1" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>     <td><img name="nummer.2" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>     <td><img name="nummer.3" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>     <td><img name="nummer.4" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>     <td><img name="nummer.5" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td> </tr>
Nun möchte die Schleife aber um einen tr-tag erweitern, damit folgendes ausgebeben wird:
PHP:
<tr>     <td><img name="nummer.1" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>     <td><img name="nummer.2" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>     <td><img name="nummer.3" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>     <td><img name="nummer.4" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>     <td><img name="nummer.5" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td> </tr> <tr>     <td><img name="nummer.6" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>     <td><img name="nummer.7" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>     <td><img name="nummer.8" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>     <td><img name="nummer.9" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td>     <td><img name="nummer.10" src="inventory_images/8.jpg" onclick="changecolor(this)" /></td> </tr>
Könnte mir da jmd helfen?
lg
 
Das ist ein reines Logikproblem. Und da Du nicht mal ansatzweise versuchst es zu lösen, habe ich zumindest keine Lust Dir da helfend unter die Arme zu greifen.

Aber mal ein kleiner Denkansatz. In der Schleife werden pro Tabellenzeile x Bilder ausgegeben. Also musst Du nur feststellen ob Du schon x Bilder ausgegeben hast. Wenn ja, dann musst Du ein "</tr><tr>" ausgeben und das bei jedem Schleifendurchlauf prüfen und evtl. ausgeben.
 
ich hatte schon Ansätze, hier:
PHP:
<?php
  function getTransactionStatusImagePath($transactionId)
  {
    $states = array('schwarz', 'rot', 'blau');

    $path = '';

    foreach ($states as $state) {
      $testPath = sprintf('transactions/Ordner%s/%s.png', $transactionId, $state);

        if (file_exists($testPath)) {
          $path = $testPath;
          break;
        }
    }
    return $path;
  }

  $transactionIds = array(1,2,3,4,5);
  ?>
  <tr>
    <?php foreach ($transactionIds as $transactionId) : ?>
    <?php
    $path = getTransactionStatusImagePath($transactionId);

    $imageHtml = ('' !== $path)
        ? '<img src="' . $path . '" />'
        : '<img name="nummer.' . $transactionId . '" src="inventory_images/8.jpg" onclick="changecolor(this)" />' ;
    ?>
    <td><?php echo $imageHtml; ?></td>
    <?php endforeach; ?>
  </tr>
  <tr>
    <?php
    $transactionIds = array(5,6,7,8,9);
    foreach ($transactionIds as $transactionId) : ?>
    <?php
    $path = getTransactionStatusImagePath($transactionId);

    $imageHtml = ('' !== $path)
        ? '<img src="' . $path . '" />'
        : '<img name="nummer.' . $transactionId . '" src="inventory_images/8.jpg" onclick="changecolor(this)" />' ;
    ?>
    <td><?php echo $imageHtml; ?></td>
    <?php endforeach; ?>
  </tr>
wäre das richtig geschrieben?
ich wollte ja erst eure Vorschläge hören? und dann schauen, ob ich von vorne hinein richtig gehandelt habe.
lg
 
Das wäre doppelt gemoppelt und ist somit unnötig. Wie thuemmy schon schrieb, ist das ein rein logisches Problem und nicht wirklich schwer zu lösen. Aber weil heute Sonntag ist ...
PHP:
<?php
  function getTransactionStatusImagePath($transactionId)
  {
    $states = array('schwarz', 'rot', 'blau');

    $path = '';

    foreach ($states as $state) {
      $testPath = sprintf('transactions/Ordner%s/%s.png', $transactionId, $state);

        if (file_exists($testPath)) {
          $path = $testPath;
          break;
        }
    }
    return $path;
  }

  $imagesPerLine = 5;
  $transactionIds = range(1,10);

  foreach ($transactionIds as $transactionId) :

    if (($transactionId % $imagesPerLine) == 1)
      echo "<tr>\n";

    $path = getTransactionStatusImagePath($transactionId);

    $imageHtml = ('' !== $path)
        ? '<img src="' . $path . '" />'
        : '<img name="nummer.' . $transactionId . '" src="inventory_images/8.jpg" onclick="changecolor(this)" />' ;

    echo "<td>$imageHtml</td>\n";

    if (! ($transactionId % $imagesPerLine))
      echo "</tr>\n";
      
  endforeach; 
 ?>
Sowas sollte man als "Programmierer" eigentlich alleine hinbekommen.
 
Zuletzt bearbeitet von einem Moderator:
ich wollte ja erst eure Vorschläge hören? und dann schauen, ob ich von vorne hinein richtig gehandelt habe.
lg
Ne, ne, das Prinzip eines Hilfeforums, zumindest bei vielen die ich kenne, isses umgekehrt. Du zeigst, was Du versucht hast und fragst dann, ob es nicht vielleicht noch besser geht. Da Du ja jetzt Deinen Ansatz gezeigt hast, kann ich sagen, ja, es geht besser.

Wenn ich das jetzt richtig aus dem Code rausgelesen habe, hast Du 10 Werte, wenn die ersten 5 Werte abgearbeitet sind, dann soll die aktuelle Tabellenzeile geschlossen werden, und eine neue geöffnet werden.

Frage zuerst, können auch mehr als 10 Werte kommen, oder bleibt es bei diesen 10 Werten? (ich kann mich glaub ich daran erinnern, das da jemand in einem anderen Forum nach 1000 Unterordnern gefragt hat). Wenn ja, dann muss das komplett anders angegangen werden.
 
ja stimmt, wäre einfacher es so zu schreiben:)
ergebnis das gleiche, aber mein quellcode ist wenigestens kürzer...
hättest du ein Tipp, wie ich vorgehen sollte, wenn die Anzahl der Bilder pro Tabellenreihe(tr) unterschiedlich sein soll?
edit: @thuemmy: selbst wenn mehr als 10 Werte kommen,ändere ich einfach die Angaben bei "range" und gut ist, oder?
lg
 
Zurück
Oben