chris: split = umbruch?

Hallo, ich habe ein Formular, aus dem (in diesem Fall) das Feld "gast" ausgelesen wird. Reingeschrieben wird in das Feld im Format "1:0,Hans Müller".

Dazu gibt es diesem Code, der nach dem Komma den Text nimmt und guckt, ob mit dem Namen "Hans Müller" im angegebenen Verzeichnis ein Bild existiert. Wenn ja, dann wird vor dem Namen das Bild angezeigt:

$TsGast = split(',', $Gast);
   foreach($TsGast as $val)
   {
     $val = trim($val);
     $link = 'img/'.$val.'.jpg';
  if(file_exists($link)) {
   $link = 'img/'.$val.'.jpg';
   $link = ersetzen($link);
      $TsGastStr = $TsGastStr.'<img src="'.$link.'"> '.$val.'<br>';
  } else {
   $link = 'img/'.$val.'.gif';
   if(file_exists($link)) {
    $link = 'img/'.$val.'.gif';
    $link = ersetzen($link);
       $TsGastStr = $TsGastStr.'<img src="'.$link.'"> '.$val.'<br>';
   } else {
    $TsGastStr = $TsGastStr.' '.$val.'<br>';
   }
  }
   }

Nun zu meinem Problem: Die Ausgabe des Textes gefällt mir nicht. Nach dem "Split", also nach dem Komma wird ein Umbruch eingefügt. Das heißt, die Ausgabe sieht so aus:

1:0
Hans Müller

Ich möchte aber keinen Umbruch. Sonder einfach 1:0 Hans Müller.

Hoffe ihr versteht was ich meine?! Ich kann nämlich nicht erkennen, was in dem Code oben ein Umbruch erzeugt. Oder ist es immer so bei split?

Danke schonmal im Vorraus!

  1. hi,

    Ich möchte aber keinen Umbruch. Sonder einfach 1:0 Hans Müller.

    Hoffe ihr versteht was ich meine?! Ich kann nämlich nicht erkennen, was in dem Code oben ein Umbruch erzeugt.

    Und dass an jeder Stelle, wo dem Ausgabestring $TsGastStr etwas hinzugefügt wird, am Ende ein '<br>' steht, macht dich gar nicht stutzig ...?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Und dass an jeder Stelle, wo dem Ausgabestring $TsGastStr etwas hinzugefügt wird, am Ende ein '<br>' steht, macht dich gar nicht stutzig ...?

      Hi, ja das schon, aber das ist doch dahinter! Also nach dem kompletten string oder?
      Also so:

      1:0 Hans Müller <--Hier kommt jetzt der Umbruch für die nächste Zeile
      2:0 Olaf Müller ...usw. oder?

      Danke Dir.

    2. Also ich habe das Problem nun ersteinmal gelöst.

      Nun noch was anderes: Wenn ich 2 Namen habe, bei denen auch ein Bild vorhanden ist, wird mir trotzdem nur bei dem letzten Namen das Bild angezeigt.

      Heißt also:

      1:0 Hans Müller (ohne Bild)
      2:0 Olaf Müller (mit Bild)

      Was ist denn da falsch an dem Code?

  2. echo $begrüßung;

    $TsGast = split(',', $Gast);

    Wenn du keinen regulären Ausdruck als Trenner verwendest solltest du explode() statt split() verwenden.

    $TsGastStr = $TsGastStr . ' '.$val.'<br>';

    Wenn du an eine Variable etwas anhängen möchtest kannst du das auch abgekürzt als

    $variable .= 'anhängsel';

    notieren. Ansonsten sehe ich auch nicht, dass $TsGastStr vor dem ersten Lesezugriff initialisiert wurde. Wenn das nicht im nicht geposteten Teil deines Scripts passiert, solltest du das nachholen. Außerdem ist ein auf E_ALL gestelltes error_reporting beim Entwickeln von PHP-Scripten hilfreich, zeigt es doch solche Lesezugriffe auf nicht initialisierte Variablen an.

    Nun zu meinem Problem: [...]
    Ich möchte aber keinen Umbruch. Sonder einfach 1:0 Hans Müller.

    Hoffe ihr versteht was ich meine?! Ich kann nämlich nicht erkennen, was in dem Code oben ein Umbruch erzeugt. Oder ist es immer so bei split?

    split() ist nicht die Ursache. Was dir fehlt ist anscheinend Übung bei der Fehlersuche. Deswegen werde ich dir auch nicht die Lösung verraten sondern dir Tipps zum Fehersuchen geben.

    Lass dir die Inhalte der Variablen ausgeben und vergleiche mit dem von dir erwarteten Ergebnis. Wenn du mit Strings mit HTML-Code arbeitest, ist es außer einem einfachen echo $string; noch erforderlich, dass du den String durch htmlspecialchars() schickt, um den HTML-Code angezeigt zu bekommen, ansonsten solltest du in den Quelltext der produzierten Seite schauen. Und das solltest du auch sowieso machen, um zu sehen, was dein Script produziert hat.

    Zum Anschauen von Variableninhalten eignen sich neben dem allgemeinen echo oder print() auch noch print_r() - besonders für Arrays und Objekte - und var_dump(), was dir den Typ und bei Strings die Größe des Variableninhalts ausgibt.

    echo "$verabschiedung $name";