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

function() in php/html

syuam

Neues Mitglied
die Funktion wird nicht im vorgegebenen Bereich ausgeführt:
PHP:
  function my_function()
  {
    $states = array('schwarz', 'rot', 'blau');

    $path = '';

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

        if (file_exists($testPath)) {
          $path = $testPath;
          echo $path;
        }
        else {
          $defaultPath = "inventory_images/8.jpg";
          echo $defaultPath;
        }
    }
  }


  $imagesPerLine = array(1=>2, 2=>3); $default = 4;
  $lines = array(1, 2, 3);
  $html="";
  foreach ($lines as $line) {
    if (!isset($imagesPerLine[$line])) {
      $imagesPerLine[$line] = $default;
    }
    $html.= "<tr>\n";
    for ($i = 1; $i <= $imagesPerLine[$line]; $i++) {
      $html.=sprintf("<td>%s</td>\n", my_function());
    }
    $html.="</tr>\n";

  }
  echo $html;
was ist den nun hier falsch in der Funktion'? Es wird werder der eine "path" noch der andere "defaultPath" ausgegeben...lg
 
Zuletzt bearbeitet:
Also wenn ich deine Funktion so aufrufe, dann wird mir folgendes paar mal ausgegeben

inventory_images/8.jpg

Da ich aber denke, dass du die pfade in den <td> tag drin haben willst, ändere in deiner function mal die echo's in return.

Sprich

PHP:
function my_function()  {
    $states = array('schwarz', 'rot', 'blau');


    $path = '';


    foreach ($states as $state) {
        $testPath = sprintf('transactions/Ordner/%s.png', $state);
        
        if (file_exists($testPath)) {
          $path = $testPath;
          return $path;
        }
        else {
          $defaultPath = "inventory_images/8.jpg";
          return $defaultPath;
        }
    }
  }
 
Ein return in einer Schleife ist meiner Meinung nach schlechter Stil. Außerdem würde die Funktion beendet, wenn "schwarz" nicht vorhanden ist. Ist das gewollt? Ich tippe eher auf
PHP:
function my_function()  
{
    $states = array('schwarz', 'rot', 'blau');

    $result = 'inventory_images/8.jpg';

    foreach ($states as $state) 
    {
        $testPath = sprintf('transactions/Ordner/%s.png', $state);
        
        if (file_exists($testPath)) 
        {
          $result = $testPath;
          break;
    }
    
    return $result;
}
 
Stimmt daran hab ich gar nicht gedacht, dass er mit return ja die funktion verlässt. Danke für die Richtigstellung bdt600.
 
habe es nun so:
PHP:
  function my_function()
  {
    $states = array('schwarz', 'rot', 'blau');
    $result = '<img src="inventory_images/8.jpg" />';
    foreach ($states as $state) {
      $testPath = sprintf('transactions/Ordner1/%s.png', $state);
      if (file_exists($testPath)) {
        $result = $testPath;
        break;
      }
      return $result;
    }
  }
Ich bin mir absolut sicher, dass die Datei transactions/Ordner1/rot.png existiert.
Jedoch ergibt file_exists=false und gibt die urpsrüngliche $result aus.
wieso?
lg
 
Ich bin mir absolut sicher, dass die Datei transactions/Ordner1/rot.png existiert.
Und ich bin mir absolut sicher, dass ich PHP mehr glaube als dir.

Eventuell ein Problem mit dem relativem Pfad? Versuche es mal mit

PHP:
'./transactions/Ordner1/%s.png'

Groß/Kleinschreibung korrekt?
 
Haaalllooo? Das muss doch wohl so korrigiert werden:
PHP:
$testPath = sprintf('./transactions/Ordner1/%s.png', $state);
 
Dann kommt in der Schleife aber diese html-Ausgabe:
PHP:
<tr> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> </tr>
weder der eine Pfad noch der andere Pfad werden dargestellt.
 
Keine Ahnung, was du da anstellst, aber diese Ausgabe kann auf keinen Fall sein, denn irgendetwas liefert die Funktion immer.
PHP:
function my_function()
  {
    $states = array('schwarz', 'rot', 'blau');
    
    $result = '<img src="inventory_images/8.jpg" />';
    
    foreach ($states as $state) {
    
      $testPath = sprintf('./transactions/Ordner1/%s.png', $state);
      
      if (file_exists($testPath)) {
        $result = '<img src="' . $testPath . '" />';
        break;
      }
      
      return $result;
    }
  }
 
der ganze code:
PHP:
  function my_function()
  {
    $states = array('schwarz', 'rot', 'blau');
    $result = '<img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.1" />';
    foreach ($states as $state) {
      $testPath = sprintf('./transactions/Ordner1/%s.png', $state);
      if (file_exists($testPath)) {
        $result = $testPath;
        break;
      }
      return $result;
    }
  }

  $imagesPerLine = array(1=>2, 2=>3); $default = 4;
  $lines = array(1, 2, 3);
  $html="";
  foreach ($lines as $line) {
    if (!isset($imagesPerLine[$line])) {
      $imagesPerLine[$line] = $default;
    }
    $html.= "<tr>\n";
    for ($i = 1; $i <= $imagesPerLine[$line]; $i++) {
      $html.=sprintf("<td>%s</td>\n", my_function());
    }
    $html.="</tr>\n";

  }
  echo $html;
ich finde meinen Fehler nicht.
 
ich finde meinen Fehler nicht.
Klar findest du den nicht, weil du nicht suchst, sondern suchen lässt.

Fakt ist, dass im entstehendem HTML-Code entweder
Code:
<img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.1" />
oder (je nach vorhandener Farbe)
Code:
./transactions/Ordner1/rot.png
stehen muss.

<edit>So eine Sch..., ein Crossposter. Bin dann mal weg</edit>
 
Zurück
Oben