Sascha: Bräuchte mal Hilfe ...

Hallo,

ich habe ein PHP-Script, das Daten aus einer MySQL-Datenbank ausliest und untereinander ausgibt.

Nun habe ich ein Feld (type: text) das angesprochen wird mit $sprache, nun enthält diese Spalte 3 unterschiedliche
Werte und zwar:

german.gif
engl.gif
mehrsprachig.gif

nun da ich aber nun in der Tabelle unterschiedliche Datensätze habe, also es kommen in dieser Spalte alle oben genannten Werte vor, möchte ich nun, das beim auflisten bzw. ausgeben diese Werte durch andere ersetzt werden (nur für diese Ausgabe jetzt!). Natürlich pro Datensatz nur ein von den genannten Werten!

Nun ich möchte das wie folgt ersetzen:

aus german.gif soll => Deutsch werden
aus engl.gif soll => Englisch werden
aus mehrsprachig.gif soll => Mehrsprachig werden

Ich möchte das aber in einer Ausgabenliste nach Möglichkeit haben. Nur ich habe es irgendwie nicht geschaft, dieses zu ersetzen!

Habe mal folgendes ausprobiert:

$out=str_replace ("german.gif", "Deutsch", $out);
$out=str_replace ("engl.gif", "Englisch", $out);
$out=str_replace ("mehrsprachig.gif", "Mehrsprachig", $out);

und das habe ich in meine while-Scheilfe rein! - hat aber irgendwie nicht funktioniert!
Ich würde mich sehr freuen, wenn mir jemand verraten könnte, wie ich das machen kann.

Desweiteren würde mich noch etwas anderes interessieren, und zwar habe ich ein Feld /Spalte wieder vom type: text.

So nun da dort ziemlich viel Text enthalten ist pro Datensatz, würde ich gerne das so haben, das er beim ausgeben
automatisch immer nach z.B. 80 Zeichen einen Zeilenumbruch macht, sprich den Text halt automatisch nach 80 Zeichen sozusagen zerhaut und in der Zeile drunter weiter macht! Gibts es dafür ne Möglichkeit dieses zu erreichen? Falls ja, wäre es super, wenn mir jemand verraten könnte, wie ich das erreichen kann.

Im voraus besten Dank.

Mfg.

Sascha

  1. hab grad mal im php Handbuch nachgeschaut und hab volgendesgefunden was deine zweite frage beantwortet (Quelle: php handbuch)

    wordwrap
    (PHP 4 >= 4.0.2)

    wordwrap --  Zeilenumbruch eines Strings an einer angegebenen Stelle unter Verwendung eines angegebenen Trennzeichens
    Beschreibung:

    string wordwrap (string str [, int width [, string break [, int cut]]])

    Bricht den String str an der mittels width angegebenen Position in die nächste Zeile um. Der Umbruch geschieht mit dem break Parameter.

    Die Funktion wordwrap() bricht selbst an der Spalte 75 unter Verwendung des Steuerzeichens '\n' (neue Zeile) um, wenn die optionalen Parameter width und / oder break nicht angegeben werden.

    Steht cut auf 1, wird der String immer an der vorgegebenen Länge umgebrochen. Ist ein Wort also länger als die gegebene Länge, wird es mitten drin umgebrochen (siehe zweites Beispiel)

    Beispiel 1. Wordwrap()-Beispiel:

    $text = "Der schnelle braune Fuchs springt über den blöden Hund.";
    $neuertext = wordwrap( $text, 20 );
    echo "$neuertext\n";

    Dieses Beispiel gibt aus:

    Der schnelle braune
    Fuchs springt über den blöden Hund.

    Beispiel 2. wordwrap() example

    $text = "Ein sehr langes Wooooooooooort.";
    $neuertext = wordwrap( $text, 8, "\n", 1);
    echo "$neuertext\n";

    Dieses Beispiel gibt aus:

    Ein sehr
    langes W
    oooooooo
    ooort.

    cu nils

    Hallo,

    ich habe ein PHP-Script, das Daten aus einer MySQL-Datenbank ausliest und untereinander ausgibt.

    Nun habe ich ein Feld (type: text) das angesprochen wird mit $sprache, nun enthält diese Spalte 3 unterschiedliche
    Werte und zwar:

    german.gif
    engl.gif
    mehrsprachig.gif

    nun da ich aber nun in der Tabelle unterschiedliche Datensätze habe, also es kommen in dieser Spalte alle oben genannten Werte vor, möchte ich nun, das beim auflisten bzw. ausgeben diese Werte durch andere ersetzt werden (nur für diese Ausgabe jetzt!). Natürlich pro Datensatz nur ein von den genannten Werten!

    Nun ich möchte das wie folgt ersetzen:

    aus german.gif soll => Deutsch werden
    aus engl.gif soll => Englisch werden
    aus mehrsprachig.gif soll => Mehrsprachig werden

    Ich möchte das aber in einer Ausgabenliste nach Möglichkeit haben. Nur ich habe es irgendwie nicht geschaft, dieses zu ersetzen!

    Habe mal folgendes ausprobiert:

    $out=str_replace ("german.gif", "Deutsch", $out);
    $out=str_replace ("engl.gif", "Englisch", $out);
    $out=str_replace ("mehrsprachig.gif", "Mehrsprachig", $out);

    und das habe ich in meine while-Scheilfe rein! - hat aber irgendwie nicht funktioniert!
    Ich würde mich sehr freuen, wenn mir jemand verraten könnte, wie ich das machen kann.

    Desweiteren würde mich noch etwas anderes interessieren, und zwar habe ich ein Feld /Spalte wieder vom type: text.

    So nun da dort ziemlich viel Text enthalten ist pro Datensatz, würde ich gerne das so haben, das er beim ausgeben
    automatisch immer nach z.B. 80 Zeichen einen Zeilenumbruch macht, sprich den Text halt automatisch nach 80 Zeichen sozusagen zerhaut und in der Zeile drunter weiter macht! Gibts es dafür ne Möglichkeit dieses zu erreichen? Falls ja, wäre es super, wenn mir jemand verraten könnte, wie ich das erreichen kann.

    Im voraus besten Dank.

    Mfg.

    Sascha

    1. Hallo Nils,

      auch dir besten Dank. Wordwrap geht nun.

      Habe das wie folgt:

      echo wordwrap($kurzbeschreibung, 65, "<br>", 1);

      habe die kurze und direkte Version gewählt, welche auch geht!

      Nun bleibt nur noch das erste Problem offen ...

      Mfg.

      Sascha

      hab grad mal im php Handbuch nachgeschaut und hab volgendesgefunden was deine zweite frage beantwortet (Quelle: php handbuch)

      wordwrap
      (PHP 4 >= 4.0.2)

      wordwrap --  Zeilenumbruch eines Strings an einer angegebenen Stelle unter Verwendung eines angegebenen Trennzeichens
      Beschreibung:

      string wordwrap (string str [, int width [, string break [, int cut]]])

      Bricht den String str an der mittels width angegebenen Position in die nächste Zeile um. Der Umbruch geschieht mit dem break Parameter.

      Die Funktion wordwrap() bricht selbst an der Spalte 75 unter Verwendung des Steuerzeichens '\n' (neue Zeile) um, wenn die optionalen Parameter width und / oder break nicht angegeben werden.

      Steht cut auf 1, wird der String immer an der vorgegebenen Länge umgebrochen. Ist ein Wort also länger als die gegebene Länge, wird es mitten drin umgebrochen (siehe zweites Beispiel)

      Beispiel 1. Wordwrap()-Beispiel:

      $text = "Der schnelle braune Fuchs springt über den blöden Hund.";
      $neuertext = wordwrap( $text, 20 );
      echo "$neuertext\n";

      Dieses Beispiel gibt aus:

      Der schnelle braune
      Fuchs springt über den blöden Hund.

      Beispiel 2. wordwrap() example

      $text = "Ein sehr langes Wooooooooooort.";
      $neuertext = wordwrap( $text, 8, "\n", 1);
      echo "$neuertext\n";

      Dieses Beispiel gibt aus:

      Ein sehr
      langes W
      oooooooo
      ooort.

      cu nils

      Hallo,

      ich habe ein PHP-Script, das Daten aus einer MySQL-Datenbank ausliest und untereinander ausgibt.

      Nun habe ich ein Feld (type: text) das angesprochen wird mit $sprache, nun enthält diese Spalte 3 unterschiedliche
      Werte und zwar:

      german.gif
      engl.gif
      mehrsprachig.gif

      nun da ich aber nun in der Tabelle unterschiedliche Datensätze habe, also es kommen in dieser Spalte alle oben genannten Werte vor, möchte ich nun, das beim auflisten bzw. ausgeben diese Werte durch andere ersetzt werden (nur für diese Ausgabe jetzt!). Natürlich pro Datensatz nur ein von den genannten Werten!

      Nun ich möchte das wie folgt ersetzen:

      aus german.gif soll => Deutsch werden
      aus engl.gif soll => Englisch werden
      aus mehrsprachig.gif soll => Mehrsprachig werden

      Ich möchte das aber in einer Ausgabenliste nach Möglichkeit haben. Nur ich habe es irgendwie nicht geschaft, dieses zu ersetzen!

      Habe mal folgendes ausprobiert:

      $out=str_replace ("german.gif", "Deutsch", $out);
      $out=str_replace ("engl.gif", "Englisch", $out);
      $out=str_replace ("mehrsprachig.gif", "Mehrsprachig", $out);

      und das habe ich in meine while-Scheilfe rein! - hat aber irgendwie nicht funktioniert!
      Ich würde mich sehr freuen, wenn mir jemand verraten könnte, wie ich das machen kann.

      Desweiteren würde mich noch etwas anderes interessieren, und zwar habe ich ein Feld /Spalte wieder vom type: text.

      So nun da dort ziemlich viel Text enthalten ist pro Datensatz, würde ich gerne das so haben, das er beim ausgeben
      automatisch immer nach z.B. 80 Zeichen einen Zeilenumbruch macht, sprich den Text halt automatisch nach 80 Zeichen sozusagen zerhaut und in der Zeile drunter weiter macht! Gibts es dafür ne Möglichkeit dieses zu erreichen? Falls ja, wäre es super, wenn mir jemand verraten könnte, wie ich das erreichen kann.

      Im voraus besten Dank.

      Mfg.

      Sascha

  2. Hallo Sascha!

    [...] das er beim ausgeben
    automatisch immer nach z.B. 80 Zeichen einen Zeilenumbruch macht[...]

    http://www.php.net/manual/en/function.wordwrap.php

    Gruss,
     Carsten

    1. Hallo Carsten,

      besten Dank für die rasche Hilfe.

      Wordwrap-Problem schon mal behoben! Danke.
      Eingebaut und funktioniert!

      Mfg.

      Sascha

      Hallo Sascha!

      [...] das er beim ausgeben
      automatisch immer nach z.B. 80 Zeichen einen Zeilenumbruch macht[...]

      http://www.php.net/manual/en/function.wordwrap.php

      Gruss,
      Carsten

  3. Hallo!

    Nun habe ich ein Feld (type: text) das angesprochen wird mit $sprache, nun enthält diese Spalte 3 unterschiedliche
    Werte und zwar:

    german.gif
    engl.gif
    mehrsprachig.gif

    $out=str_replace ("german.gif", "Deutsch", $out);
    $out=str_replace ("engl.gif", "Englisch", $out);
    $out=str_replace ("mehrsprachig.gif", "Mehrsprachig", $out);

    Hast Du mal geschaut, wie die Namen der Bilder eigentlich aus der DB kommen? Hängt eventuell ein Leerzeichen rum?

    z.B.
    $out = "german.gif "; // aus DB
    ------------------^
    $out=str_replace ("german.gif", "Deutsch", $out);

    Denke mal drüber nach, eine Tabelle anzulegen, in der die Daten zum Land stehen. Du hast jetzt eine Redundanz in Deiner Tabelle. Blödes Beispiel, was ist, wenn Du das Bildchen german.gif in deutsch.gif umbenennen möchtest?

    sprache_id      bildname             bezeichnung
    1               german.gif           Deutsch
    2               engl.gif             Englisch
    3               mehrsprachig.gif     Mehrsprachig

    In Deiner anderen Tabelle, ersetzt Du die Bildnamen mit der entsprechenden sprache_id. Dann änderst Du die Spalteneingenschaft auf TINYINT oder INT(1).
    Mit UPDATE kannst Du ersetzen.
    UPDATE tabelle SET spaltenname=1 WHERE spaltenname="german.gif";

    Über ein JOIN, holst Du Dir die passende Länderkennung, Bildname oder Bezeichnung. Dann kannst Du Dir auch das str_replace ersparen.

    MfG, André Laugks

    1. Hallo!

      Kleine Berichtigung oder noch etwas vergessen.

      $out = "german.gif "; // aus DB

      Verwende mal trim(), um Leerzeichen und "nicht sichtbare" Zeichen zu entfernen

      $out = trim($out); // aus DB

      INT(1)

      TINYINT(1)

      MfG, André Laugks