Leerzeichen aus MySQL Datenbank mit PHP darstellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Leerzeichen aus MySQL Datenbank mit PHP darstellen

    Ich gebe über ein Textarea-Feld in einem Formular Werte in eine MySQL-Datenbank ein. Die MySQl-Datenbank speichert die Werte als "TEXT".

    Wenn ich diese soeben abgespeicherten Werte zum Bearbeiten in ein Textarea-Feld einlese, sind die Leerzeichen weiterhin vorhanden.

    Wenn ich jedoch den Inhalt in eine HTML-Tabelle schreiben lasse, dann sind keine Leerzeichen mehr vorhanden.
    Den fehlenden Zeilenumbruch habe ich mittlerweile mit dem Befehl nl2br hinbekommen.

    Weiss jemand Rat, wie ich die Leerzeichen auch auf eine "HTML-PHP-Seite" ausgeben kann???

    PS. Ich hoffe ich habe mich verständlich ausgedrückt.

  • #2
    Wenn du den Text, den du aus der DB bekommst, wirklich 1:1 auf der Page stehen haben willst, dann verwende doch das Element <pre></pre>

    Das kannst du ja noch etwas mit CSS formatieren zwecks Schriftart und -größe.

    Kommentar


    • #3
      Habe das gerade mal ausprobiert.
      Das klappt ja dann ganz gut. Nur geht der Text dann über meine Seite hinaus (Sogar über meine definierte Tabellenbreite).

      Ne Idee wie ich das Problem dann beheben könnte???

      Kommentar


      • #4
        Also wenn Leerzeichen vorhanden sind, dann sollte der Inhalt eigentlich ned über die Tabellenbreite hinweg gehen. Hast du den Inhalt etwa in einem Linktext ?

        Gruss

        tobi

        EDIT:

        Sorry zu wenig genau gelesen. Du hast den Inhalt ja in einem <pre> und dieser stellt den Text genau so dar wie er erhalten wurde. Innerhalb eines pre's wird nur umgebrochen, wenn ein Zeilenende (je nach BC z.B. \r\n) erreicht wurde (<br />) wird ignoriert


        Zuletzt geändert von jahlives; 07.11.2005, 17:43.
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Also ich gebe über eine Textarea einen langen Text mit Leerzeichen an. also stehen auch Leerzeichen dann im TEXT-Field der MySQL-Datenbank.

          Diese sollen dann in der Ausgabe auch erscheinen.

          Kommentar


          • #6
            Steht der Text mit Leerzeichen in der DB ?
            Dann sollte doch ein echo $result_db den Text mit Leerzeichen anzeigen
            Wenn du das Resultat deiner DB Abfrage mal var_dump() 'st. Wird der Inhalt dann mir Leerzeichen dargestellt ?
            Was du noch probieren könntest
            PHP-Code:
            $string 'resultat_deiner_db_abfrage';
            $neuer_string preg_replace('/\\s/','&nbsp;',$string); 
            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Original geschrieben von jahlives
              PHP-Code:
              $string 'resultat_deiner_db_abfrage';
              $neuer_string preg_replace('/\\s/','&nbsp;',$string); 
              Habe das gerade wie angegeben durchgeführt.
              Tja nur nun sind die Zeilenümbrüche weg ;-(

              Kommentar


              • #8
                Dann mach aus den Zeilenenden erst br's bevor du die \s ersetzt
                PHP-Code:
                $neuer_string preg_replace('/\\s/','&nbsp;',nl2br($string)); 
                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  Original geschrieben von jahlives
                  Dann mach aus den Zeilenenden erst br's bevor du die \s ersetzt
                  PHP-Code:
                  $neuer_string preg_replace('/\\s/','&nbsp;',nl2br($string)); 
                  Gruss

                  tobi
                  Habe ich gemacht. Doch nun habe ich wieder das Problem, dass ich bei der Ausgabe in einer Tabellenzelle, diese Ignoriert wird und kein automatischer Zeilenumbruch stattfindet.

                  Der Aufruf zur Ausgabe sieht wie folgt aus:
                  <td>
                  <font class="bericht_text"><br><br>'.$neuer_string.'<br>
                  </font>
                  </td>

                  Kommentar


                  • #10
                    Kann man sich das irgendwo Online ansehen ?

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Original geschrieben von jahlives
                      Kann man sich das irgendwo Online ansehen ?
                      leider nicht

                      Kommentar


                      • #12
                        Kannst du dann den HTML Quellcode ab <table> bis </table> posten ? Nur wenns nicht 10 Seiten füllt, sonst zusammenstreichen

                        Gruss

                        tobi
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          Hier die Zeile zur Eingabe:
                          PHP-Code:
                          </tr>    
                              <
                          td width="400"><textarea cols="100" rows="20" name="Bericht_Text" 
                          class="eingabefeld">Hier bitte den Bericht eingeben</textarea
                                  </
                          td>
                          </
                          tr
                          Hier das Speichern in die DB.

                          PHP-Code:
                          // Datum aufbereiten
                          list($d1,$m1,$y1) = explode(".",$_POST["Erstellungsdatum"]);
                          list(
                          $d2,$m2,$y2) = explode(".",$_POST["Berichtsdatum"]);
                              
                          // SQL-Abfrage
                          $sql "INSERT into berichte (bericht_id, bericht_erstelldatum, bericht_datum, bericht_ueberschrift, 
                          bericht_text, bericht_verfasser, bericht_letzte_Aenderung, bericht_letzter_bearbeiter, bericht_loeschkennzeichen)
                          VALUES (NULL, '"
                          .$y1."-".$m1."-".$d1."', '".$y2."-".$m2."-".$d2."',
                          '"
                          .$_POST["Bericht_Ueberschrift"]."','".$_POST["Bericht_Text"]."','".$_POST["user"]."'
                          ,'"
                          .$y1."-".$m1."-".$d1."','".$_POST["user"]."','0')"

                          Hier die Anzeige:
                          PHP-Code:
                          <body>

                          <?     // Datenbank anbinden
                              include('../db.php');
                              // SQL-Abfrage
                              $sql       = "SELECT bericht_id, bericht_erstelldatum, bericht_datum, bericht_ueberschrift,
                                            bericht_text, bericht_verfasser, bericht_letzte_Aenderung, bericht_letzter_bearbeiter
                                           FROM berichte WHERE bericht_id = \"".$_GET["ID"]."\"";
                              $ergebnis  = mysql_query($sql, $verbindung);
                              $abfrage   = mysql_fetch_row($ergebnis);

                              list($y1,$m1,$d1) = explode("-",$abfrage[1]);
                              list($y2,$m2,$d2) = explode("-",$abfrage[2]);
                              list($y3,$m3,$d3) = explode("-",$abfrage[6]);

                          echo'
                          <center>
                          <br>
                          <br>
                           <table width="85%" border="0" cellpadding="2" cellspacing="2">
                             <tr>
                               <td>
                                 <font class="bericht_ueberschrift">'.$abfrage[3].' (<small>'.$d2.'.'.$m2.'.'.$y2.'</small>)</font><br>
                                 <font class="bericht_copyright">&copy; '.$abfrage[5].'
                                 <small>(eingef&uuml;gt: '.$d1.'.'.$m1.'.'.$y1.'</small>)</font><br>
                                 <font class="bericht_edit">&raquo; letzte Änderung: '.$d3.'.'.$m3.'.'.$y3.' ('.$abfrage[7].')</font><br>
                                 <font class="bericht_text"><br><br>'.nl2br($abfrage[4]).'
                                 <br><br>
                                 </font>
                               </td>
                             </tr>
                           </table>
                          </center>';
                          ?>
                          </body>

                          $abfrage[4] ist hier die Ausgabe des Textblocks mit den Leerzeichen und Zeilenumbrüchen.

                          Kommentar


                          • #14
                            Und wenn du die Leerzeichen nicht gegen &nbsp tauscht ? Ich habe zuwenig nachgedacht, einen &nbsp darf der Browser ja gar ned umbrechen
                            Sorry war mein Fehler

                            Gruss

                            tobi

                            p.s. meine nbsp werden vom Forum gefressen
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #15
                              Danke für die Antworten.

                              Habe es jetzt wenigstens hinbekommen, das ich 2 Leerzeichen zu einen &nbsp.; (Punkt dainter weil das &nbsp sonst nicht angezeigt wird) hinbekomme ohne das mir die ganze Seitenformatierung geschossen wird.

                              PHP-Code:
                              // Vorbereitung
                                  
                              $trans = array ("  " => "&nbsp;");
                                  
                              $text = (strtr($abfrage[4], $trans));
                              // Anzeige
                              echo '.nl2br($text).'
                              Wenn ich jedes Leerzeichen mit einem &nbsp.; versehe, dann werden die Zeilenumbrüche wieder "gekillt" ;-)

                              Kommentar

                              Lädt...
                              X